43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
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
|
|
)
|