import logging from functools import singledispatch from telebot import TeleBot from telebot.handler_backends import BaseMiddleware from telebot import types as tt class ExtraArguments(BaseMiddleware): def __init__(self, bot: TeleBot, logger: logging.Logger, i18n): super().__init__() self.bot = bot self.logger = logger self.i18n = i18n self.update_types = ["message", "callback_query"] @singledispatch def pre_process(self, obj, data: dict): raise TypeError() @pre_process.register def _(self, message: tt.Message, data: dict): data["bot"] = self.bot data["logger"] = self.logger data["t"] = self.i18n.custom_call(message=message) @pre_process.register def _(self, callback: tt.CallbackQuery, data: dict): data["bot"] = self.bot data["logger"] = self.logger data["t"] = self.i18n.custom_call(callback=callback) def post_process(self, message, data: dict, exception: BaseException): pass