2021-10-05 19:20:04 +02:00
|
|
|
from logging import Logger
|
|
|
|
import logging
|
2021-09-18 15:30:56 +02:00
|
|
|
from telegram.ext import Updater
|
2021-09-25 16:49:11 +02:00
|
|
|
from telegram.ext.dispatcher import Dispatcher
|
|
|
|
|
2021-10-05 19:20:04 +02:00
|
|
|
from logger import Logger
|
2021-10-04 18:19:26 +02:00
|
|
|
from config.credentials import BOT_TOKEN, PORT, WEBHOOK_URL
|
2021-10-06 19:44:03 +02:00
|
|
|
from bot.handler import (groupsHandler, joinHandler, mentionHandler, leaveHandler,
|
2021-10-05 19:20:04 +02:00
|
|
|
silentMentionHandler, startHandler)
|
2021-10-06 19:44:03 +02:00
|
|
|
from bot.handler.abstractHandler import AbstractHandler
|
2021-09-25 16:49:11 +02:00
|
|
|
|
2021-09-18 15:30:56 +02:00
|
|
|
|
|
|
|
class App:
|
|
|
|
updater: Updater
|
|
|
|
dispatcher: Dispatcher
|
|
|
|
|
2021-10-05 19:20:04 +02:00
|
|
|
log_file: str = '/var/log/bot.log'
|
|
|
|
log_format: str = '%(levelname)s-%(asctime)s: %(message)s'
|
|
|
|
|
2021-09-18 15:30:56 +02:00
|
|
|
def __init__(self):
|
2021-09-25 16:49:11 +02:00
|
|
|
self.updater = Updater(BOT_TOKEN)
|
2021-09-18 15:30:56 +02:00
|
|
|
|
|
|
|
def run(self) -> None:
|
2021-10-05 19:20:04 +02:00
|
|
|
self.setup_logging()
|
2021-09-28 17:03:11 +02:00
|
|
|
self.register_handlers()
|
2021-10-04 18:19:26 +02:00
|
|
|
self.register_webhook()
|
2021-09-25 16:49:11 +02:00
|
|
|
|
2021-09-18 15:30:56 +02:00
|
|
|
self.updater.idle()
|
|
|
|
|
2021-09-28 17:03:11 +02:00
|
|
|
def register_handlers(self) -> None:
|
2021-09-25 16:49:11 +02:00
|
|
|
for handler in AbstractHandler.__subclasses__():
|
|
|
|
self.updater.dispatcher.add_handler(
|
2021-09-28 17:03:11 +02:00
|
|
|
handler().get_bot_handler()
|
2021-09-25 16:49:11 +02:00
|
|
|
)
|
2021-09-25 16:49:11 +02:00
|
|
|
|
2021-10-04 18:19:26 +02:00
|
|
|
def register_webhook(self) -> None:
|
|
|
|
self.updater.start_webhook(
|
|
|
|
listen="0.0.0.0",
|
|
|
|
port=int(PORT),
|
|
|
|
url_path=BOT_TOKEN,
|
|
|
|
webhook_url="/".join([WEBHOOK_URL, BOT_TOKEN])
|
|
|
|
)
|
2021-09-25 16:49:11 +02:00
|
|
|
|
2021-10-05 19:20:04 +02:00
|
|
|
Logger.get_logger(Logger.action_logger).info(
|
|
|
|
f'Webhook configured, listening on {WEBHOOK_URL}/<bot-token>'
|
|
|
|
)
|
|
|
|
|
|
|
|
def setup_logging(self) -> None:
|
|
|
|
logger = Logger()
|
|
|
|
logger.setup()
|
|
|
|
|
2021-09-25 16:49:11 +02:00
|
|
|
if __name__ == "__main__":
|
|
|
|
app = App()
|
|
|
|
|
2021-09-25 16:49:11 +02:00
|
|
|
app.run()
|