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

如何在Python-Telegram-bot的InlineKeyboard中触发sendDice功能

解决InlineKeyboard点击按钮发送骰子的问题

你遇到的问题是对CallbackQuery的使用存在局限误解——它不仅能编辑触发按钮的原消息,还能直接向用户的聊天窗口发送新消息(包括骰子、贴纸这类内容)。

核心解决思路:借助CallbackQuery对象里的message.chat.id获取用户的聊天ID,然后调用Bot的send_dice方法直接发送目标内容,无需局限于修改原消息。

修改后的完整代码示例:

from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import ContextTypes, CallbackQueryHandler, CommandHandler, ApplicationBuilder

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    keyboard = [
        [
            InlineKeyboardButton("普通骰子", callback_data="dice"),
            InlineKeyboardButton("篮球骰子", callback_data="basketball"),
        ],
        [InlineKeyboardButton("测试", callback_data="test")],
    ]

    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_text("请选择:", reply_markup=reply_markup)

async def button(update: Update, context: ContextTypes.DEFAULT_TYPE):
    query = update.callback_query
    await query.answer()  # 先确认回调,避免客户端按钮一直显示加载状态

    chat_id = query.message.chat.id
    if query.data == 'dice':
        # 发送默认普通骰子(emoji为🎲)
        await context.bot.send_dice(chat_id=chat_id)
        # 可选:编辑原消息给用户反馈
        await query.edit_message_text(text="已发送普通骰子")
    elif query.data == 'basketball':
        # 指定emoji发送篮球主题骰子
        await context.bot.send_dice(chat_id=chat_id, emoji="🏀")
        await query.edit_message_text(text="已发送篮球骰子")
    else:
        await query.edit_message_text(text=f"选择的选项: {query.data}")

if __name__ == '__main__':
    # 替换为你的机器人Token
    application = ApplicationBuilder().token("YOUR_BOT_TOKEN").build()
    
    application.add_handler(CommandHandler("start", start))
    application.add_handler(CallbackQueryHandler(button))
    
    application.run_polling()

关键细节说明:

  • query.message.chat.id可精准获取用户的对话ID,确保消息发送到正确窗口
  • context.bot.send_dice()支持通过emoji参数指定不同类型的骰子,可选值包括🎲、🏀、🎯、🎳、🎰
  • 必须先调用query.answer(),否则用户端的按钮会一直处于加载状态,影响交互体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:38:31