From 49c4aa4e7ba6cc289a60d8c11ae36fd68a7d97aa Mon Sep 17 00:00:00 2001 From: Luna Mendes Date: Sat, 2 Dec 2017 12:53:47 -0300 Subject: [PATCH] the basics of rsudo --- bot/bot.py | 6 ++++-- bot/ext/rsudo.py | 18 +++++++++++++----- config.py | 2 +- memed.py | 6 +++++- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/bot/bot.py b/bot/bot.py index 7de0e10..b3f2be3 100644 --- a/bot/bot.py +++ b/bot/bot.py @@ -8,7 +8,8 @@ log = logging.getLogger(__name__) exts = [ 'basic', - 'admin' + 'admin', + 'rsudo' ] @@ -45,12 +46,13 @@ def schedule_bot(loop, config, db): ) bot.db = db + bot.config = config try: for ext in exts: bot.load_extension(f'bot.ext.{ext}') log.info('loaded %s', ext) - loop.create_task(bot.start(config.bot_token)) + return bot except: log.exception('failed to load %s', ext) diff --git a/bot/ext/rsudo.py b/bot/ext/rsudo.py index f494aaa..a677125 100644 --- a/bot/ext/rsudo.py +++ b/bot/ext/rsudo.py @@ -10,20 +10,28 @@ log = logging.getLogger(__name__) class Rsudo(Cog): def __init__(self, bot): super().__init__(bot) + self.command_channel = None async def create_request(self, message): + if not self.command_channel: + self.command_channel = self.bot.get_channel( + self.bot.config.command_channel) + + if not self.command_channel: + log.warning('command channel not found') + return + # parse it, follows format command,uid uid = message.split(',')[-1] command = ','.join(message.split(',')[:-1]) log.info(f'[rsudo] {uid!r} {command!r}') - - if not self.command_channel: - return - e = discord.Embed(title=f'rsudo from uid {uid}') e.add_field(name='command', value=f'`{command}`') - await self.command_channel.send(embed=e) + m = await self.command_channel.send(embed=e) + + await m.add_reaction('\N{WHITE HEAVY CHECK MARK}') + await m.add_reaction('\N{CROSS MARK}') def setup(bot): diff --git a/config.py b/config.py index 3f0deea..b697ccc 100644 --- a/config.py +++ b/config.py @@ -8,4 +8,4 @@ db = { bot_token = 'Mzg2Mjc1MDc3MzY2NDgwODk4.DQNi9A.BnyE5MnKaIaVMBbWiW9rVDwkrSs' owner_id = 162819866682851329 -bot_token = None +command_channel = 385653662724259840 diff --git a/memed.py b/memed.py index f3cc56a..968b1cf 100644 --- a/memed.py +++ b/memed.py @@ -86,6 +86,7 @@ async def process(reader, writer, op: int, message: str): INSERT INTO logs (uid, cwd, cmd) VALUES ($1, $2, $3) """, uid, cwd, command) elif op == 2: + log.debug(bot.cogs) rsudo = bot.get_cog('Rsudo') if not rsudo: return await send_msg(writer, 1, 'no rsudo cog') @@ -123,7 +124,10 @@ if __name__ == '__main__': server = loop.run_until_complete(coro) if config.bot_token: - schedule_bot(loop, config, db) + bot = schedule_bot(loop, config, db) + + if bot: + loop.create_task(bot.start(config.bot_token)) log.info(f'Serving on {server.sockets[0].getsockname()}') try: