From 9011b3015b972552cf9b6facf5c0028d9cac7682 Mon Sep 17 00:00:00 2001 From: vrubel Date: Sun, 16 Nov 2025 15:23:54 +0300 Subject: [PATCH] bug fixed text add player --- LichessClientTG_bot/bot.py | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/LichessClientTG_bot/bot.py b/LichessClientTG_bot/bot.py index d43e2a8..248407a 100644 --- a/LichessClientTG_bot/bot.py +++ b/LichessClientTG_bot/bot.py @@ -205,6 +205,9 @@ class LichessBot: logger.info(f"addgamer_start called for user {update.effective_user.id}") lang = self.get_user_language_from_update(update) try: + # Mark that we are awaiting a username reply + if context and hasattr(context, "user_data"): + context.user_data['awaiting_addgamer_username'] = True await update.message.reply_text(t('addgamer_prompt', lang)) logger.info(f"Addgamer prompt sent to user {update.effective_user.id}") self.counters.increment('addgamer') @@ -212,7 +215,8 @@ class LichessBot: logger.error(f"Error sending addgamer prompt: {e}") import traceback logger.error(traceback.format_exc()) - return WAITING_FOR_USERNAME + # No conversation state returned; handler-based flow + return async def addtoken_start(self, update: Update, context: ContextTypes.DEFAULT_TYPE): """Start addtoken command - token required""" @@ -297,6 +301,9 @@ class LichessBot: async def handle_username(self, update: Update, context: ContextTypes.DEFAULT_TYPE): """Handle username input for /addgamer""" + # Only handle if we are awaiting an addgamer username + if not (context and hasattr(context, "user_data") and context.user_data.get('awaiting_addgamer_username')): + return username = update.message.text.strip() user_id = update.effective_user.id @@ -305,7 +312,7 @@ class LichessBot: await update.message.reply_text( t('empty_username', lang) ) - return WAITING_FOR_USERNAME + return # Check if user exists on Lichess user_exists = await self.lichess_api.check_user_exists(username) @@ -350,8 +357,12 @@ class LichessBot: await update.message.reply_text( t('gamer_added', lang, username=username) ) - - return ConversationHandler.END + # Clear awaiting flag + try: + context.user_data['awaiting_addgamer_username'] = False + except Exception: + pass + return async def getgamers(self, update: Update, context: ContextTypes.DEFAULT_TYPE): """Get all gamers for the current user and allow selection""" @@ -953,19 +964,6 @@ class LichessBot: """Setup all handlers""" self.application = application # Store application reference - # Conversation handler for addgamer (simple username only) - addgamer_conv = ConversationHandler( - entry_points=[ - CommandHandler("addgamer", self.addgamer_start), - CommandHandler("start", self.start_and_addgamer) # Also handle /start to start addgamer flow - ], - states={ - WAITING_FOR_USERNAME: [MessageHandler(filters.TEXT & ~filters.COMMAND, self.handle_username)], - }, - fallbacks=[CommandHandler("cancel", lambda u, c: ConversationHandler.END)], - name="addgamer_conversation" - ) - # Conversation handler for addtoken (token required) addtoken_conv = ConversationHandler( entry_points=[CommandHandler("addtoken", self.addtoken_start)], @@ -975,8 +973,9 @@ class LichessBot: fallbacks=[CommandHandler("cancel", lambda u, c: ConversationHandler.END)] ) - # Add conversation handlers - application.add_handler(addgamer_conv) + # Add handlers + application.add_handler(CommandHandler("addgamer", self.addgamer_start)) + application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, self.handle_username)) application.add_handler(addtoken_conv) application.add_handler(CommandHandler("getgamers", self.getgamers)) application.add_handler(CommandHandler("delgamer", self.delgamer))