Files

51 lines
1.7 KiB
Python

from aiogram import Bot, Dispatcher
from aiogram.fsm.storage.memory import MemoryStorage
import asyncio
import os
from dotenv import load_dotenv
import logging
from handlers import user, admin, admin_adv, adv_callbacks
from database import engine, Base
load_dotenv()
logging.basicConfig(
level=logging.INFO, # Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
handlers=[
logging.FileHandler("bot.log"), # Логирование в файл bot.log
# logging.StreamHandler(), # Логирование в консоль
],
)
logger = logging.getLogger(__name__)
async def on_startup():
"""
Основная процедура для запуска работы с БД чреез SQLAlchemy.
"""
async with engine.begin() as conn:
# await conn.run_sync(Base.metadata.drop_all) # Сброс БД
await conn.run_sync(Base.metadata.create_all)
async def main():
"""
Функция запуска бота, подключение к TG_API, создание диспетчера, подключение роутеров и запуск бота в режиме пуллинг.
"""
bot = Bot(token=os.getenv("BOT_TOKEN")) # type: ignore
dp = Dispatcher(storage=MemoryStorage())
logger.info("Запуск работы бота.")
dp.include_routers(
user.router, admin.router, admin_adv.router, adv_callbacks.router
)
await on_startup()
await dp.start_polling(bot) # Бот в пуллинг режиме - "почтальон для API"
if __name__ == "__main__":
asyncio.run(main())