import os
from dotenv import load_dotenv
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler
import commands
from database import connect

load_dotenv()

class TelegramWrapper:
    def __init__(self, token):
        self._token = token
        self._updater = Updater(token=token)
        self._dispatcher = self._updater.dispatcher
        self.registerCommands()
        self.connect_database()

    def registerCommands(self):
        for key in commands.COMMANDS:
            self._dispatcher.add_handler(CommandHandler(key, commands.COMMANDS[key]))
        self._dispatcher.add_handler(CallbackQueryHandler(commands.callback_handler))
        self._dispatcher.add_handler(MessageHandler(Filters.all, commands.message_handler))

    def start_polling(self):
        self._updater.start_polling()
        self._updater.idle()

    def connect_database(self):
        connect(True)


if __name__ == "__main__":
    telegramWrapper = TelegramWrapper(os.getenv("TOKEN"))
    telegramWrapper.start_polling()