55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
import asyncio
|
|
import logging
|
|
from datetime import datetime
|
|
|
|
from aiogram import Bot, Dispatcher
|
|
from aiogram.enums import ParseMode
|
|
from aiogram.fsm.storage.memory import MemoryStorage
|
|
from aiogram.client.default import DefaultBotProperties
|
|
|
|
from config import ADMIN_ID, BOT_TOKEN, LOG_BOT_TOKEN, SHOP_NAME
|
|
from db.storage import load_config, load_stats
|
|
from handlers import admin, start, upload, user
|
|
from runtime import set_bots
|
|
from utils.logging import log_admin
|
|
|
|
|
|
async def main() -> None:
|
|
defaults = DefaultBotProperties(parse_mode=ParseMode.HTML)
|
|
bot = Bot(token=BOT_TOKEN, default=defaults)
|
|
log_bot = Bot(token=LOG_BOT_TOKEN, default=defaults) if LOG_BOT_TOKEN else None
|
|
set_bots(bot, log_bot)
|
|
|
|
dispatcher = Dispatcher(storage=MemoryStorage())
|
|
dispatcher.include_router(start.router)
|
|
dispatcher.include_router(user.router)
|
|
dispatcher.include_router(admin.router)
|
|
dispatcher.include_router(upload.router)
|
|
|
|
load_config()
|
|
load_stats()
|
|
await log_admin(
|
|
bot,
|
|
ADMIN_ID,
|
|
f"🟢 <b>{SHOP_NAME}</b> запущен\n⏰ {datetime.now().strftime('%d.%m.%Y %H:%M:%S')}",
|
|
log_bot,
|
|
)
|
|
try:
|
|
await dispatcher.start_polling(bot)
|
|
finally:
|
|
if log_bot:
|
|
await log_bot.session.close()
|
|
await bot.session.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s - %(levelname)s - %(message)s",
|
|
handlers=[
|
|
logging.FileHandler("bot.log", encoding="utf-8"),
|
|
logging.StreamHandler(),
|
|
],
|
|
)
|
|
asyncio.run(main())
|