bug fixed text add player

This commit is contained in:
vrubel 2025-11-16 15:23:54 +03:00
parent d1e8d343ba
commit 9011b3015b

View file

@ -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))