From c9f0c1b6162579160cecca27b96476409ef817fe Mon Sep 17 00:00:00 2001 From: mrhanky Date: Tue, 22 Aug 2017 15:53:30 +0200 Subject: [PATCH] Merged .husbando and .waifu to a single function, improved docs --- bot/plugins/useless.py | 132 ++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 88 deletions(-) diff --git a/bot/plugins/useless.py b/bot/plugins/useless.py index b28212c..591162d 100644 --- a/bot/plugins/useless.py +++ b/bot/plugins/useless.py @@ -129,39 +129,7 @@ class Useless(DatabasePlugin): %%waifu [...] """ - nick = ' '.join(args.get('', mask.nick)) - - if nick.startswith('='): - waifu = nick[1:] - - try: - self.cur.execute(''' - INSERT INTO - users (nick, waifu) - VALUES - (lower(%s), %s) - ON CONFLICT (nick) DO UPDATE SET - waifu = excluded.waifu - ''', [mask.nick, waifu]) - self.con.commit() - - self.bot.notice(mask.nick, 'Waifu set to: {}'.format(waifu)) - except Error as ex: - self.log.error(ex) - self.con.rollback() - else: - self.cur.execute(''' - SELECT - waifu - FROM - users - WHERE - lower(nick) = lower(%s) - ''', [nick]) - result = self.cur.fetchone()['waifu'] - - if result: - return '\x02[Waifu]\x02 {}: {}'.format(nick, result) + return self.husbando_waifu('waifu', mask, target, args) @command def husbando(self, mask: IrcString, target: IrcString, args: DocOptDict): @@ -169,43 +137,10 @@ class Useless(DatabasePlugin): %%husbando [...] """ - nick = ' '.join(args.get('', mask.nick)) - - if nick.startswith('='): - nick = nick[1:] - - try: - self.cur.execute(''' - INSERT INTO - users (nick, husbando) - VALUES - (lower(%s), %s) - ON CONFLICT (nick) DO UPDATE SET - husbando = excluded.husbando - ''', [mask.nick, nick]) - self.con.commit() - - self.bot.notice(mask.nick, 'Husbando set to: {}'.format(nick)) - except Error as ex: - self.log.error(ex) - self.con.rollback() - else: - self.cur.execute(''' - SELECT - husbando - FROM - users - WHERE - lower(nick) = lower(%s) - ''', [nick]) - result = self.cur.fetchone()['husbando'] - - if result: - return '\x02[Husbando]\x02 {}: {}'.format(nick, result) + return self.husbando_waifu('husbando', mask, target, args) @command - def storyofpomfface(self, mask: IrcString, target: IrcString, - args: DocOptDict): + def storyofpomfface(self, mask: IrcString, target: IrcString, args: DocOptDict): """Story of pomf face %%storyofpomfface @@ -250,7 +185,7 @@ class Useless(DatabasePlugin): @command def bier(self, mask: IrcString, target: IrcString, args: DocOptDict): - """Gives nick a beer + """Gives a user a beer %%bier [] """ @@ -259,7 +194,7 @@ class Useless(DatabasePlugin): @command def fucken(self, mask: IrcString, target: IrcString, args: DocOptDict): - """Kills and fucks a nick + """Kills and fucks a user %%fucken [] """ @@ -268,31 +203,15 @@ class Useless(DatabasePlugin): @command(aliases=['anhero', 'sudoku']) def seppuku(self, mask: IrcString, target: IrcString, args: DocOptDict): - """Kicks a nick + """Kicks a user %%seppuku """ self.bot.kick(target, mask.nick, 'Sayonara bonzai-chan...') - # @command - # def anhero(self, mask: IrcString, target: IrcString, args: DocOptDict): - # """Kicks a nick - # - # %%anhero - # """ - # self.bot.kick(target, mask.nick, 'Sayonara bonzai-chan...') - # - # @command - # def sudoku(self, mask: IrcString, target: IrcString, args: DocOptDict): - # """Kicks a nick - # - # %%sudoku - # """ - # self.anhero(mask, target, args) - @command def hack(self, mask: IrcString, target: IrcString, args: DocOptDict): - """Hacks (a nick) + """Hacks (a user) %%hack [] """ @@ -371,6 +290,43 @@ class Useless(DatabasePlugin): return 'Assuming {}\'s gender... they\'re a {}.'.format(nick, gender) + def husbando_waifu(self, field: str, mask: IrcString, target: IrcString, args: DocOptDict): + nick = args.get('', mask.nick) + if isinstance(nick, list): + nick = ' '.join(nick) + + if nick.startswith('='): + nick = nick[1:] + + try: + self.cur.execute(''' + INSERT INTO + users (nick, {0}) + VALUES + (lower(%s), %s) + ON CONFLICT (nick) DO UPDATE SET + {0} = excluded.{0} + '''.format(field), [mask.nick, nick]) + self.con.commit() + + self.bot.notice(mask.nick, '{} set to: {}'.format(field.title(), nick)) + except Error as ex: + self.log.error(ex) + self.con.rollback() + else: + self.cur.execute(''' + SELECT + {} + FROM + users + WHERE + lower(nick) = lower(%s) + '''.format(field), [nick]) + result = self.cur.fetchone() + + if result and result[field]: + return '\x02[{}]\x02 {}: {}'.format(field.title(), nick, result[field]) + # noinspection PyMethodMayBeStatic def _rainbow(self, i, char): return '\x03{0:02d}{1}'.format(RAINBOW[i % RAINBOW_LEN], char)