Init commit
This commit is contained in:
commit
d6e00c56e7
49 changed files with 2324 additions and 0 deletions
64
Mousey/Bot/start.py
Normal file
64
Mousey/Bot/start.py
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
from os import getenv
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.methods import DeleteWebhook
|
||||
from aiogram.fsm.storage.redis import RedisStorage
|
||||
|
||||
from .settings import set_command_menu, set_profile_info
|
||||
|
||||
from .Handlers import setup_routers
|
||||
from .Middlewares import i18n_middleware, DatabaseSessionMiddleware
|
||||
|
||||
from Mousey.Redis import redis
|
||||
from Mousey.Database import create_db, drop_db, session_maker
|
||||
|
||||
|
||||
@logger.catch
|
||||
async def start(
|
||||
to_drop_db: bool,
|
||||
to_update_telegram_profile: bool,
|
||||
) -> None:
|
||||
"""
|
||||
Запуск бота
|
||||
"""
|
||||
# Загрузка базы данных
|
||||
if to_drop_db:
|
||||
await drop_db()
|
||||
logger.warning("База данных очищена.")
|
||||
|
||||
await create_db()
|
||||
|
||||
# Настройка бота
|
||||
bot = Bot(token=getenv("BOT_TOKEN"))
|
||||
await set_command_menu(bot=bot)
|
||||
|
||||
# Обновление профиля
|
||||
if to_update_telegram_profile:
|
||||
await set_profile_info(bot=bot)
|
||||
|
||||
# Настройка диспетчера
|
||||
dp = Dispatcher(
|
||||
storage=RedisStorage(redis=redis),
|
||||
)
|
||||
|
||||
# Добавление мидлвари для диспетчера
|
||||
dp.message.middleware(i18n_middleware)
|
||||
dp.callback_query.middleware(i18n_middleware)
|
||||
|
||||
dp.update.middleware(DatabaseSessionMiddleware(session_pool=session_maker))
|
||||
|
||||
logger.success("Все мидлвари успешно добавлены.")
|
||||
|
||||
# Добавление роутеров для диспетчера
|
||||
setup_routers(dispatcher=dp)
|
||||
logger.success("Все роутеры успешно добавлены.")
|
||||
|
||||
# Старт пуллинга бота
|
||||
await bot(DeleteWebhook(drop_pending_updates=True))
|
||||
logger.debug("Все Telegram запросы для бота удалены.")
|
||||
|
||||
logger.success("Старт пуллинга бота.")
|
||||
await dp.start_polling(bot)
|
||||
|
||||
Reference in a new issue