如何在Telegram Bot中移除ReplyKeyboardMarkup并替换为InlineKeyboardMarkup
解决方案:移除ReplyKeyboardMarkup并显示InlineKeyboardMarkup
Telegram的底部自定义键盘(ReplyKeyboardMarkup)与消息内联键盘(InlineKeyboardMarkup)是独立控件,无法在同一条消息的reply_markup参数中同时完成移除和添加操作。可以通过「先发送消息移除底部键盘,再编辑该消息添加内联键盘」的方式实现需求,用户只会看到一条最终消息。
代码实现示例
@dispatcher.message(Command("photo")) async def send_random_photo(message: Message): # 发送照片并移除底部ReplyKeyboard sent_photo = await bot.send_photo( chat_id=message.chat.id, photo=random_photo_url, caption="Do you like this photo?", reply_markup=ReplyKeyboardRemove() ) # 编辑照片消息,添加InlineKeyboard await bot.edit_message_reply_markup( chat_id=message.chat.id, message_id=sent_photo.message_id, reply_markup=photo_inline_keyboard )
效果说明
- 底部的自定义键盘会被立即移除,照片消息下方会显示设置的内联键盘,全程用户仅能看到一条照片消息,无多余内容。
- 如果业务允许,也可以先发送一条带
ReplyKeyboardRemove()的提示消息(比如"正在加载图片..."),再发送带内联键盘的照片,但编辑消息的方式更简洁友好。
内容的提问来源于stack exchange,提问作者Илья Жиленков
相关产品推荐
相关产品推荐

