70 lines
1.7 KiB
Python
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()
|