96 lines
1.8 KiB
Python
96 lines
1.8 KiB
Python
import asyncio
|
|
import logging
|
|
from schedule import refresh_cache
|
|
from aiogram import Bot, Dispatcher
|
|
from aiogram.enums import ParseMode
|
|
from aiogram.client.default import DefaultBotProperties
|
|
from aiogram.fsm.storage.memory import MemoryStorage
|
|
from config import BOT_TOKEN
|
|
from api import api
|
|
from handlers.support import router as support_router
|
|
from handlers.start import router as start_router
|
|
from handlers.group import router as group_router
|
|
from handlers.admin import router as admin_router
|
|
from logger import logger
|
|
from database import (
|
|
init_db,
|
|
clear_old_cache
|
|
)
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s | %(levelname)s | %(name)s | %(message)s"
|
|
)
|
|
|
|
bot = Bot(
|
|
token=BOT_TOKEN,
|
|
default=DefaultBotProperties(
|
|
parse_mode=ParseMode.HTML
|
|
)
|
|
)
|
|
|
|
dp = Dispatcher(
|
|
storage=MemoryStorage()
|
|
)
|
|
|
|
dp.include_router(start_router)
|
|
dp.include_router(group_router)
|
|
dp.include_router(support_router)
|
|
dp.include_router(admin_router)
|
|
|
|
|
|
#стартует бот
|
|
async def on_startup():
|
|
|
|
await init_db()
|
|
|
|
deleted = await clear_old_cache()
|
|
|
|
logger.info("База данных инициализирована")
|
|
|
|
logger.info(
|
|
f"Удалено {deleted} записей кэша"
|
|
)
|
|
|
|
asyncio.create_task(
|
|
refresh_cache()
|
|
)
|
|
|
|
logger.info(
|
|
"Фоновое обновление кэша запущено"
|
|
)
|
|
|
|
|
|
async def on_shutdown():
|
|
|
|
await api.close()
|
|
|
|
await bot.session.close()
|
|
|
|
logger.info("Бот остановлен")
|
|
|
|
|
|
async def main():
|
|
|
|
await on_startup()
|
|
|
|
try:
|
|
|
|
logger.info("Бот запущен")
|
|
|
|
await dp.start_polling(bot)
|
|
|
|
finally:
|
|
|
|
await on_shutdown()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
try:
|
|
asyncio.run(main())
|
|
|
|
except KeyboardInterrupt:
|
|
logger.info("Остановка...")
|
|
|