initial
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
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("Остановка...")
|
||||
|
||||
Reference in New Issue
Block a user