Telegram Python电报机器人编辑自定义键盘

Telegram Python电报机器人编辑自定义键盘,telegram,telegram-bot,python-telegram-bot,Telegram,Telegram Bot,Python Telegram Bot,我正在使用Python电报机器人API构建一个演示应用程序。我试图实现的任务是创建一个自定义键盘,然后在每次与用户交互时继续编辑键盘键。我尝试使用“编辑邮件回复标记”,但出现错误“邮件无法编辑”。无法编辑自定义键盘吗 下面是我为任务编写的示例代码 初始任务: FirstKeyboard = [[KeyboardButton(text = "FRUITS"), KeyboardButton(text = "VEGITABLES"), KeyboardButton(text = "DRINKS")]

我正在使用Python电报机器人API构建一个演示应用程序。我试图实现的任务是创建一个自定义键盘,然后在每次与用户交互时继续编辑键盘键。我尝试使用“编辑邮件回复标记”,但出现错误“邮件无法编辑”。无法编辑自定义键盘吗

下面是我为任务编写的示例代码

初始任务:

FirstKeyboard = [[KeyboardButton(text = "FRUITS"), KeyboardButton(text = "VEGITABLES"), KeyboardButton(text = "DRINKS")],[KeyboardButton(text = "SNACKS"), KeyboardButton(text = "CHIPS"), KeyboardButton(text = "NOTHING")],[KeyboardButton(text = "DONE")]]
menu = ReplyKeyboardMarkup(FirstKeyboard)
KeyboardMessageID = context.bot.send_message(chat_id = chatID, text = "Select What you Like", reply_markup = menu)
编辑任务:

SecondKeyBoard = [[KeyboardButton(text = "APPLE"), KeyboardButton(text = "BANANA"), KeyboardButton(text = "PUMPKIN")],[KeyboardButton(text = "ORANGES"), KeyboardButton(text = "GRAPES"), KeyboardButton(text = "WINE")],[KeyboardButton(text = "DONE")]]
menu = ReplyKeyboardMarkup(SecondKeyBoard)
KeyboardMessageID = context.bot.edit_message_reply_markup(chat_id = chatID, message_id = KeyboardMessageID, reply_markup = menu)
我收到一个错误“消息无法编辑”


看起来现在我们可以编辑内嵌键盘,而不能编辑回复键盘

您可以使用“新建键盘”按钮发送新消息,而不是编辑以前的消息。新的ReplyKeyboardMarkup将自动替换为旧的ReplyKeyboardMarkup。 使用:

或通过以下方式回复您的用户:

update.message.reply_text(text = "Select What you Like", reply_markup = NEW_Menu)

您可以更改新消息中的文本,也可以将其作为上一条消息放置。

作为一种解决方法,我删除上一条消息,并对其进行复制,但reply\u标记参数除外。在您的情况下,类似于:

context.user\u data['last\u message']=context.bot.send\u message(chat\u id=chatID,text=“选择您喜欢的”,reply\u markup=menu)
#更改回复标记
last_message=上下文。用户_数据['last_message']
context.bot.delete_message(chat_id=update.effective_chat.id,message_id=last_message.message_id)
#创建除“新建”菜单外的类似消息
context.user_data['last_message']=context.bot.send_message(chat_id=last_message.chat_id,text=last_message.text,reply_markup=new_菜单)

使用context.message.reply\u text(“您的文本”,reply\u markup=您的键盘标记)。并确保至少有一个文本或标记发生了更改,然后相同输入出现错误。
update.message.reply_text(text = "Select What you Like", reply_markup = NEW_Menu)