summaryrefslogtreecommitdiff
path: root/bot.py
diff options
context:
space:
mode:
authorCamil Staps2018-06-11 14:01:39 +0200
committerCamil Staps2018-06-11 14:01:39 +0200
commit06a7f1b21e6e1c5e609b86c8acc0df76333254a8 (patch)
treeb08cf7d45332be2a39e625ccb484cdef69d197be /bot.py
Probably doesn't work with the new telepot, but still committing this ancient project at least onceHEADmaster
Diffstat (limited to 'bot.py')
-rw-r--r--bot.py65
1 files changed, 65 insertions, 0 deletions
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()