Bot & Automation

Activity Reminder Bot

/root/hermes-projects/Activity Reminder Bot

apps/activity_reminder_bot/bot/main.py text
import asyncio
import logging

from aiogram import Bot, Dispatcher
from aiogram.fsm.storage.memory import MemoryStorage

from activity_reminder_bot.bot.handlers import router
from activity_reminder_bot.core.config import get_settings
from activity_reminder_bot.core.logging import setup_logging
from activity_reminder_bot.scheduler.reminder_scheduler import ReminderScheduler

logger = logging.getLogger(__name__)


async def main() -> None:
    settings = get_settings()
    setup_logging(settings.log_level)
    if not settings.telegram_bot_token:
        raise RuntimeError("TELEGRAM_BOT_TOKEN belum diisi.")

    bot = Bot(token=settings.telegram_bot_token)
    dispatcher = Dispatcher(storage=MemoryStorage())
    dispatcher.include_router(router)

    scheduler = ReminderScheduler(bot)
    await scheduler.start()
    logger.info("Activity Reminder Bot polling started")
    try:
        await dispatcher.start_polling(bot)
    finally:
        await scheduler.shutdown()
        await bot.session.close()


if __name__ == "__main__":
    asyncio.run(main())