ReminderBot/bot/main.py
leo f453a7917e Initial commit: add reminderBot project structure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 11:40:58 +08:00

70 lines
1.7 KiB
Python

import logging
import signal
import sys
from telegram.ext import (
Application,
CallbackQueryHandler,
CommandHandler,
MessageHandler,
filters,
)
from bot.config import BOT_TOKEN, LOG_LEVEL
from bot.handlers import (
handle_callback,
help_command,
list_reminders,
reminder_conv_handler,
start,
)
from bot.models import init_db
from bot.scheduler import init_scheduler, shutdown_scheduler
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
level=getattr(logging, LOG_LEVEL, logging.INFO),
)
logger = logging.getLogger(__name__)
def main() -> None:
# Initialize database
init_db()
logger.info("Database initialized")
# Build application
app = Application.builder().token(BOT_TOKEN).build()
# Initialize scheduler
init_scheduler(app.bot)
# Register handlers
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("help", help_command))
app.add_handler(MessageHandler(filters.Regex("^❓ 帮助$"), help_command))
app.add_handler(reminder_conv_handler)
app.add_handler(CommandHandler("list", list_reminders))
app.add_handler(MessageHandler(filters.Regex("^📋 我的提醒$"), list_reminders))
app.add_handler(CallbackQueryHandler(handle_callback))
# Graceful shutdown
def signal_handler(sig, frame):
logger.info("Shutting down...")
shutdown_scheduler()
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
# Start bot
logger.info("Bot started")
app.run_polling(allowed_updates=["message", "callback_query"])
if __name__ == "__main__":
main()