Files
PrimoExampleBot/main.py
2025-08-30 08:04:00 +07:00

57 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from asyncio import run
from configs import Webhook
from database import db
from bot import BotInfo, bot, dp, router, server, setup_middlewares
from middleware.loggers import setup_logging, loggers
async def main() -> None:
"""
Входная точка проекта.
Настройка и запуск бота в режиме webhook или polling.
"""
try:
# Логирование
setup_logging()
# Cоздание базы данных
await db.init_db()
# Проверка соединения
if not await db.check_connection():
print("Не удалось подключиться к БД!")
return
await db.init_default_roles()
# Настройка информации о боте
await BotInfo.setup(bots=bot)
# Настройка middleware
setup_middlewares(
dp=dp,
bot=bot,
channel_ids=[] # пустой список каналов (можно добавить потом)
)
# Подключение маршрутов (роутеров)
dp.include_router(router)
# Выбор режима работы: webhook или polling
if Webhook.WEBHOOK:
loggers.info(f"Запуск бота @{BotInfo.username} в режиме webhook...")
BotInfo.start_info_out()
await server.serve()
else:
loggers.info(f"Бот @{BotInfo.username} запущен в режиме polling...")
BotInfo.start_info_out()
await dp.start_polling(bot)
except Exception as e:
loggers.error(f"🔥 Критическая ошибка при запуске: {e}")
raise
if __name__ == "__main__":
run(main())