telegram-antispam-bot/bot/__main__.py
Artemii Peretiachenko e84f748889 Handle supergroup joins via chat_member updates
Send verification challenges when Telegram hides join service messages, and subscribe to chat_member polling updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-09 14:46:34 +02:00

44 lines
1.1 KiB
Python

from __future__ import annotations
import asyncio
import logging
from aiogram import Bot, Dispatcher
from .config import load_config
from .db import Database
from .handlers import register_handlers, sweeper_loop
async def main() -> None:
logging.basicConfig(level=logging.INFO)
cfg = load_config()
logging.getLogger("bot").info(
"Starting with chat_id=%s db_path=%s verify_window=%ss thanks_ttl=%ss",
cfg.chat_id,
cfg.db_path,
cfg.verify_window_seconds,
cfg.thanks_ttl_seconds,
)
bot = Bot(token=cfg.bot_token)
dp = Dispatcher()
db = Database(cfg.db_path)
await db.connect()
await register_handlers(dp, cfg=cfg, db=db)
asyncio.create_task(sweeper_loop(bot=bot, cfg=cfg, db=db))
try:
allowed_updates = list(dp.resolve_used_update_types())
if "chat_member" not in allowed_updates:
allowed_updates.append("chat_member")
await dp.start_polling(bot, allowed_updates=allowed_updates)
finally:
await db.close()
if __name__ == "__main__":
asyncio.run(main())