from telebot import TeleBot from .config import Config, load_config from .logger import create_logger from .i18n import I18N from .database import get_engine from .states import get_state_storage from .handlers import register_handlers from .middlewares import setup_middlewares from .filters import add_custom_filters def create_bot(config: Config, i18n: I18N, engine): state_storage = get_state_storage(config.states) bot = TeleBot(config.bot.token, parse_mode=config.bot.parse_mode, skip_pending=config.bot.skip_pending, num_threads=config.bot.num_threads, use_class_middlewares=True, state_storage=state_storage) register_handlers(bot) setup_middlewares(bot, i18n, engine) add_custom_filters(bot, config) if config.use_webhook: bot.delete_webhook() bot.set_webhook(config.webhook.url, drop_pending_updates=config.webhook.drop_pending_updates, max_connections=config.webhook.max_connections) return bot def main(): config = load_config() # logger = create_logger("mybot", config.log_level) i18n = I18N(config.i18n) engine = get_engine(config.database) bot = create_bot(config, i18n, engine) bot.infinity_polling( timeout=config.bot.timeout, long_polling_timeout=config.bot.polling_timeout, skip_pending=config.bot.skip_pending )