51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""Entry point — wires everything together."""
|
|
import asyncio
|
|
import logging
|
|
|
|
from aiogram import Bot, Dispatcher
|
|
from aiogram.fsm.storage.memory import MemoryStorage
|
|
|
|
from config import TOKEN
|
|
from hashing import preload_backup_hashes
|
|
from middlewares import TosMiddleware, UsernameTrackerMiddleware
|
|
from persistence import load_backup_ids, load_blacklist, load_confirmed_users
|
|
from routers import admin, group, private
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
|
|
)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
async def main() -> None:
|
|
# 1. Load persisted data
|
|
load_backup_ids()
|
|
load_confirmed_users()
|
|
load_blacklist()
|
|
|
|
bot = Bot(token=TOKEN)
|
|
dp = Dispatcher(storage=MemoryStorage())
|
|
|
|
# 2. Log cached hashes
|
|
import bot_state as state
|
|
logger.info("Loaded %d file hashes from cache.", len(state.backup_hashes))
|
|
|
|
# 3. Middlewares
|
|
dp.update.outer_middleware(UsernameTrackerMiddleware())
|
|
dp.update.outer_middleware(TosMiddleware())
|
|
|
|
# 4. Routers
|
|
dp.include_router(private.router)
|
|
dp.include_router(admin.router)
|
|
dp.include_router(group.router)
|
|
|
|
# 5. Background tasks
|
|
asyncio.create_task(group.purge_chatroom_semipublic_group(bot))
|
|
|
|
logger.info("Bot starting…")
|
|
await dp.start_polling(bot)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main()) |