i18n, messages are in templates
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
@@ -1,28 +1,64 @@
|
||||
from __future__ import annotations
|
||||
import logging
|
||||
from telegram.ext import Application, CommandHandler
|
||||
from app.core.config import settings
|
||||
from app.handlers.conversation import build_conversation
|
||||
from app.handlers.admin import add_admin_handler, list_candidates_handler, verify_candidate_handler, view_candidate_handler
|
||||
|
||||
from app.handlers.profile import my_profile_handler, edit_hint_handler
|
||||
from app.handlers.admin import (
|
||||
list_candidates_handler, candlist_pager, callback_router,
|
||||
view_candidate_handler, list_start, list_gender, list_city, list_verified, list_active, list_results_pager
|
||||
)
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
|
||||
log = logging.getLogger("bot")
|
||||
|
||||
async def start_cmd(update, context):
|
||||
await update.message.reply_text("Бот запущен. Набери /new, чтобы заполнить анкету.")
|
||||
|
||||
def build_app() -> Application:
|
||||
if not settings.BOT_TOKEN:
|
||||
raise RuntimeError("BOT_TOKEN is empty. Set it in .env")
|
||||
app = Application.builder().token(settings.BOT_TOKEN).build()
|
||||
# Хендлеры
|
||||
|
||||
# визард пользователя
|
||||
app.add_handler(build_conversation())
|
||||
|
||||
# базовые
|
||||
app.add_handler(CommandHandler("start", start_cmd))
|
||||
app.add_handler(CommandHandler("my", my_profile_handler))
|
||||
app.add_handler(CommandHandler("edit", edit_hint_handler))
|
||||
app.add_handler(CommandHandler("addadmin", add_admin_handler))
|
||||
|
||||
# админские
|
||||
app.add_handler(CommandHandler("candidates", list_candidates_handler))
|
||||
app.add_handler(CommandHandler("verify", verify_candidate_handler))
|
||||
app.add_handler(CommandHandler("view", view_candidate_handler))
|
||||
app.add_handler(CommandHandler("list", list_start))
|
||||
app.add_handler(CommandHandler("verify", lambda u, c: None)) # заглушка если где-то есть старая команда
|
||||
|
||||
# callback-и
|
||||
from telegram.ext import CallbackQueryHandler, ConversationHandler, MessageHandler, filters
|
||||
app.add_handler(CallbackQueryHandler(candlist_pager, pattern=r"^candlist:page:"))
|
||||
app.add_handler(CallbackQueryHandler(callback_router, pattern=r"^cand:"))
|
||||
list_conv = ConversationHandler(
|
||||
entry_points=[CommandHandler("list", list_start)],
|
||||
states={
|
||||
0: [CallbackQueryHandler(list_gender, pattern=r"^list:gender:")],
|
||||
1: [CallbackQueryHandler(list_city, pattern=r"^list:city:"), MessageHandler(filters.TEXT & ~filters.COMMAND, list_city)],
|
||||
2: [CallbackQueryHandler(list_verified, pattern=r"^list:verified:")],
|
||||
3: [CallbackQueryHandler(list_active, pattern=r"^list:active:")],
|
||||
},
|
||||
fallbacks=[],
|
||||
allow_reentry=True,
|
||||
)
|
||||
app.add_handler(list_conv)
|
||||
app.add_handler(CallbackQueryHandler(list_results_pager, pattern=r"^listres:page:"))
|
||||
return app
|
||||
|
||||
if __name__ == "__main__":
|
||||
application = build_app()
|
||||
# В v21 это блокирующий вызов; updater больше не используется.
|
||||
application.run_polling(close_loop=False)
|
||||
try:
|
||||
log.info("Starting bot…")
|
||||
log.info("DB URL masked is set: %s", "***" if settings.DATABASE_URL else "<empty>")
|
||||
application = build_app()
|
||||
application.run_polling(close_loop=False)
|
||||
except Exception as e:
|
||||
log.exception("Bot crashed on startup: %s", e)
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user