From 06a7f1b21e6e1c5e609b86c8acc0df76333254a8 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Mon, 11 Jun 2018 14:01:39 +0200 Subject: Probably doesn't work with the new telepot, but still committing this ancient project at least once --- bot.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 bot.py (limited to 'bot.py') diff --git a/bot.py b/bot.py new file mode 100644 index 0000000..c80d06e --- /dev/null +++ b/bot.py @@ -0,0 +1,65 @@ +from datetime import datetime +import time +import asyncio + +import telepot +import telepot.async + +import clean + +class CleanBot(telepot.async.Bot): + def log(self, msg, date=datetime.now()): + date = date.strftime('%a %b %d %Y %H:%M:%S') + print('[%s] %s' % (date, msg)) + + def log_to(self, msg, user): + self.log('%s <-- %s' % (user, msg)) + + def log_from(self, msg, user, date): + self.log('%s --> %s' % (user, msg), date=date) + + def send(self, user, msg): + yield from self.sendMessage(user, msg) + self.log_to(msg, user) + + def handle_text(self, msg): + date = datetime.fromtimestamp(int(msg['date'])) + self.log_from(msg['text'], msg['from']['id'], date) + + try: + result = clean.single_command(msg['text']) + if result == None: + raise ValueError() + yield from self.send(msg['from']['id'], result) + except UnicodeEncodeError: + yield from self.send(msg['from']['id'], 'Illegal character') + except clean.CompileException: + yield from self.send(msg['from']['id'], 'Compile error') + except clean.TimeoutException: + yield from self.send(msg['from']['id'], 'Timeout exceeded') + + def handle_other(self, msg): + date = datetime.fromtimestamp(int(msg['date'])) + self.log_from('unknown content type', msg['from']['username'], date) + + @asyncio.coroutine + def handle(self, msg): + content_type, chat_type, chat_id = telepot.glance2(msg) + if content_type == 'text': + yield from self.handle_text(msg) + else: + yield from self.handle_other(msg) + + def run(self): + while True: + time.sleep(10) + +def main(): + bot = CleanBot('177072260:AAESRI146zYqh3iZN0WPboB6Z-LpmKyX3J0') + loop = asyncio.get_event_loop() + loop.create_task(bot.messageLoop()) + print('Listening...') + loop.run_forever() + +if __name__ == '__main__': + main() -- cgit v1.2.3