imaginaryfriend/src/bot.py

49 lines
2.1 KiB
Python
Raw Normal View History

import logging
from telegram.ext import Updater
2016-11-12 23:55:48 +01:00
from src.config import config
2016-11-26 20:30:00 +01:00
from src.redis_c import Redis
from src.handler.command_handler import CommandHandler
2016-11-12 23:55:48 +01:00
from src.handler.message_handler import MessageHandler
from src.handler.status_handler import StatusHandler
2016-11-12 23:55:48 +01:00
from src.service.chat_purge_queue import ChatPurgeQueue
from src.service.data_learner import DataLearner
2016-11-12 23:55:48 +01:00
from src.service.reply_generator import ReplyGenerator
2016-12-03 16:08:43 +01:00
from src.service.media_uniqueness_checker import MediaUniquenessChecker
2016-12-01 22:01:04 +01:00
from src.service.chance_manager import ChanceManager
2016-11-01 22:01:40 +01:00
class Bot:
2016-11-12 14:56:42 +01:00
def __init__(self):
self.updater = Updater(token=config['bot']['token'])
self.dispatcher = self.updater.dispatcher
def run(self):
logging.info("Bot started")
2016-11-12 13:37:14 +01:00
2016-11-26 20:30:00 +01:00
redis = Redis(config)
2016-12-01 22:01:04 +01:00
chance_manager = ChanceManager(redis)
2016-11-12 23:55:48 +01:00
2016-11-29 15:23:06 +01:00
self.dispatcher.add_handler(MessageHandler(data_learner=DataLearner(),
2016-11-26 20:30:00 +01:00
reply_generator=ReplyGenerator(),
2016-12-03 16:08:43 +01:00
media_checker=MediaUniquenessChecker(redis),
2016-12-01 22:01:04 +01:00
chance_manager=chance_manager))
self.dispatcher.add_handler(CommandHandler(chance_manager=chance_manager))
2016-11-29 17:52:47 +01:00
self.dispatcher.add_handler(StatusHandler(chat_purge_queue=ChatPurgeQueue(self.updater.job_queue, redis)))
2016-11-29 21:25:33 +01:00
if config['updates']['mode'] == 'polling':
self.updater.start_polling()
elif config['updates']['mode'] == 'webhook':
key = open(config['updates']['key'], 'rb') if config['updates']['key'] is not None else None
cert = open(config['updates']['cert'], 'rb') if config['updates']['cert'] is not None else None
self.updater.start_webhook(listen=config['updates']['host'],
port=config.getint('updates', 'port'),
url_path=config['bot']['token'],
key=key,
cert=cert,
webhook_url=config['updates']['url'])
self.updater.idle()