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

Telebot内联菜单点击后发新消息而非修改原菜单问题求助

解决方案

你现在的问题是用了发送新消息的send_message方法,要编辑原有菜单消息,替换成pyTelegramBotAPI提供的edit_message_text方法即可,这个方法可以修改已经发送的消息内容和绑定的内联键盘。

具体修改点

  • 回调函数submenus中,把原来调用bot.send_message的代码替换成调用bot.edit_message_text
  • 传入原有消息的ID参数:你从回调对象c里可以拿到c.message.message_id,就是原来触发回调的菜单消息的ID
  • 新增回调应答逻辑,避免Telegram端按钮一直显示加载转圈状态

修改后的完整代码

import telebot

# 这里替换成你自己的bot token
bot = telebot.TeleBot('你的BOT_TOKEN')

@bot.message_handler(commands=['menu'])
def menu(message):
    keyboard = telebot.types.InlineKeyboardMarkup()
    keyboard.add(telebot.types.InlineKeyboardButton('Reglas', callback_data='Reglas'))
    keyboard.add(telebot.types.InlineKeyboardButton('Consultas', callback_data='Consultas'))
    keyboard.add(telebot.types.InlineKeyboardButton('Historia', callback_data='Historia'))
    keyboard.add(telebot.types.InlineKeyboardButton('Tiradas', callback_data='Tiradas'))
    keyboard.add(telebot.types.InlineKeyboardButton('Admin', callback_data='adm'))
    bot.send_message(message.chat.id,'Has llamado al menu?',reply_markup=keyboard)

@bot.callback_query_handler(func=lambda c:True)
def submenus(c):
    # 应答回调,避免按钮加载超时
    bot.answer_callback_query(c.id)
    if c.data == 'Tiradas':
        keyboard = telebot.types.InlineKeyboardMarkup()
        keyboard.add(telebot.types.InlineKeyboardButton('Tirada suelta', callback_data='ts'))
        keyboard.add(telebot.types.InlineKeyboardButton('Tirada de personajes',callback_data='tp'))
        # 调用编辑消息方法,修改原有菜单
        bot.edit_message_text(
            chat_id=c.message.chat.id,
            message_id=c.message.message_id,
            text='Deseas tiradas sueltas o para crear personajes?',
            reply_markup=keyboard
        )

# 启动机器人轮询
bot.infinity_polling()

补充说明

  • 如果后续要做返回上一级菜单的功能,只需要在对应回调逻辑里再调用一次edit_message_text,把内容和键盘换回上一级菜单即可
  • 如果编辑消息时不需要修改文本、只需要更换内联键盘,可以用edit_message_reply_markup方法,参数和上述方法一致,不需要传text参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:27:04