37 lines
1.2 KiB
Python

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