from telebot import TeleBot from telebot.storage import StateMemoryStorage, StateRedisStorage from .handlers import register_handlers from .middlewares import setup_middlewares from .filters import add_custom_filters def create_bot(config, logger, i18n): if config.SS_TYPE == "memory": state_storage = StateMemoryStorage() elif config.SS_TYPE == "redis": state_storage = StateRedisStorage(config.SS_REDIS_HOST, config.SS_REDIS_PORT, config.SS_REDIS_DB, config.SS_REDIS_PASS) else: raise RuntimeWarning(f"Unknown state storage type: '{config.SS_TYPE}'") bot = TeleBot(config.BOT_TOKEN, parse_mode=config.PARSE_MODE, skip_pending=config.DROP_PENDING, num_threads=config.NUM_THREADS, use_class_middlewares=True, state_storage=state_storage) logger.debug("Setting up middlewares") setup_middlewares(bot, logger, i18n) logger.debug("Registering handlers") register_handlers(bot) logger.debug("Adding custom filters") add_custom_filters(bot, config) return bot