You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python-telegram-bot:实现Inline键盘点击后隐藏再重现

实现Telegram机器人骰子滚动时隐藏并重现Inline键盘

需求说明

点击Inline键盘按钮后,向用户发送🏀骰子,同时隐藏键盘防止用户在骰子滚动时误操作,待骰子滚动完成后重新显示原有Inline键盘。

现有代码

掷骰子代码

value = await update.callback_query.message.reply_dice(update.effective_message.chat_id, emoji= '🏀')
dice_value = valore.dice.value

注:原代码存在变量名笔误,valore应为value

键盘定义代码

keyboard_basketDemo = [
        [
            InlineKeyboardButton("⚙ 投注设置 🍕", callback_data="SettingsDemoBet"),
            InlineKeyboardButton("投球", callback_data="basketDemo"),
        ],
    ]

实现方案

核心思路是通过编辑原消息的回复标记,先移除键盘,待骰子动画结束后再恢复键盘,具体步骤如下:

  1. 隐藏键盘:触发掷骰子操作时,调用edit_message_reply_markup将原消息的Inline键盘设为None,实现隐藏效果。
  2. 等待骰子动画结束:发送骰子后,通过wait_for监听消息更新事件,直到Telegram返回包含最终点数的骰子消息(动画结束后dice.value会被填充)。
  3. 重现键盘:确认骰子结果生成后,再次调用edit_message_reply_markup恢复原有的Inline键盘。

完整代码示例

from telegram import InlineKeyboardMarkup, InlineKeyboardButton
from telegram.ext import CallbackContext

async def handle_basket_demo(update, context: CallbackContext):
    # 获取触发回调的原消息
    original_msg = update.callback_query.message
    
    # 1. 隐藏原消息的Inline键盘
    await original_msg.edit_reply_markup(reply_markup=None)
    
    # 2. 发送骰子消息
    dice_msg = await original_msg.reply_dice(chat_id=update.effective_chat.id, emoji='🏀')
    
    # 等待骰子动画结束,获取最终点数
    updated_msg = await context.bot.wait_for(
        'message_update',
        timeout=10,  # 设置超时避免无限等待
        filter=lambda upd: upd.effective_message.message_id == dice_msg.message_id and upd.effective_message.dice.value is not None
    )
    dice_value = updated_msg.effective_message.dice.value
    
    # 3. 重新显示原Inline键盘
    await original_msg.edit_reply_markup(reply_markup=InlineKeyboardMarkup(keyboard_basketDemo))
    
    # 可选:告知用户骰子结果
    await update.effective_chat.send_message(f"投出了{dice_value}点!")

注意事项

  • 确保使用的python-telegram-bot版本支持wait_for方法(v13及以上版本可用)
  • 超时时间可根据实际网络情况调整,避免因延迟导致等待失败
  • 若原消息是通过Bot发送的,确保Bot拥有编辑该消息的权限

内容的提问来源于stack exchange,提问作者Raysuoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:01:20