twitools/telegrambot.py

46 lines
1.8 KiB
Python
Raw Permalink Normal View History

2017-02-07 21:36:31 +00:00
#!/usr/bin/env python3
import bottools.methods, logging, logging.handlers, os, setuptools, sys, telegram.ext
2017-02-07 21:36:31 +00:00
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.WARN)
2017-02-08 13:58:09 +00:00
logger = logging.getLogger(__name__)
logger.addHandler(logging.handlers.SysLogHandler(address='/dev/log'))
2017-02-08 13:58:09 +00:00
def log(bot, update, error):
logger.warn("Error %s caused by '%s'" % (error, update))
2017-02-07 22:11:59 +00:00
def shutdown(e = None, u = None, restart = False):
if e:
logger.warn(e)
if u:
u.stop()
if restart:
os.execl(sys.executable, sys.executable, *sys.argv)
else:
sys.exit(1 if e else 0)
if __name__ == "__main__":
try:
updater = telegram.ext.Updater(token=setuptools.token())
updater.dispatcher.add_error_handler(log)
for k, v in bottools.methods.commands.items():
updater.dispatcher.add_handler(telegram.ext.CommandHandler(k, v, pass_args = True if v in bottools.methods.pargs else False))
2017-03-24 00:48:40 +00:00
updater.dispatcher.add_handler(telegram.ext.RegexHandler("^@TweepBot \/.*", bottools.methods.mentionHelper))
2017-03-22 00:53:51 +00:00
for t in [telegram.ext.Filters.photo, telegram.ext.Filters.sticker, telegram.ext.Filters.video, telegram.ext.Filters.document]:
updater.dispatcher.add_handler(telegram.ext.MessageHandler(t, bottools.methods.captionHelper))
2017-02-08 13:58:09 +00:00
updater.dispatcher.add_handler(telegram.ext.MessageHandler(telegram.ext.Filters.location, bottools.methods.storeLocation))
updater.dispatcher.add_handler(telegram.ext.MessageHandler(telegram.ext.Filters.text, bottools.methods.tweet))
updater.dispatcher.add_handler(telegram.ext.MessageHandler(telegram.ext.Filters.command, bottools.methods.unknown))
2017-03-24 00:48:40 +00:00
updater.dispatcher.add_handler(telegram.ext.CallbackQueryHandler(bottools.methods.callback))
2017-02-07 21:54:22 +00:00
updater.start_polling()
updater.idle()
except Exception as e:
shutdown(e, updater, True)