fulvia/modules/slur.py

57 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
Actions for the Racial Slurs Database table.
All data comes from http://www.rsdb.org/.
"""
import random
import sqlite3
import argparse
from module import commands
def setup(bot):
con = bot.db.connect()
cur = con.cursor()
try:
cur.execute("SELECT * FROM slur").fetchone()
except OperationalError:
cur.execute("CREATE TABLE slur("
"slur TEXT,"
"race TEXT,"
"description TEXT")
con.commit()
con.close()
@commands("slur")
def slur(bot, trigger):
"""
Prints a random racial slur from the Racial Slurs Database.
-r, --race - specifies a particular race to pick on.
-s, --slur - specifies a particular slur to pick.
"""
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--race", type=str)
parser.add_argument("-s", "--slur", type=str)
args = parser.parse_args(trigger.group[3:])
if args.race:
slur = bot.db.execute(
"SELECT * FROM `slur` WHERE `race` = ? COLLATE NOCASE " \
+ "ORDER BY RANDOM() LIMIT 1", (args.race,)).fetchone()
elif args.slur:
slur = bot.db.execute(
"SELECT * FROM `slur` WHERE `slur` LIKE ? COLLATE NOCASE " \
+ "LIMIT 1", (f"%{args.slur}%",)).fetchone()
else:
slur = bot.db.execute(
"SELECT * FROM `slur` ORDER BY RANDOM() LIMIT 1").fetchone()
if not slur:
return bot.msg("Could not find slur.")
msg = f"[\x0304SLUR\x03] \x0310Slur\x03: \x0312{slur[0]}\x03 | "
msg += f"\x0310Race\x03: \x0312{slur[1]}\x03 | "
msg += f"\x0310Description\x03: \x0312{slur[2]}\x03"
bot.msg(msg)