如何从普通消息更改以前的Inlinekeyboard消息

时间:2019-03-17 13:39:03

标签: python telegram-bot python-telegram-bot

在我的机器人中,用户应该主要通过Inlinekeyboard消息进行交互。

因此,如果用户写了一些“常规”消息或发送了一些消息,则我必须以某种方式更改最后一条Inlinekeyboard消息以继续该过程或向他发送一些消息。

请参见下图:

enter image description here

用户写了一些消息,但是我不得不用新消息创建一个新的Inlinekeyboard按钮,因为我无法找到一种方法来获取上一个“欢迎”按钮的message_id并进行更改它。

我的代码:

HELP = range(1)

def start(bot, update):
    keyboard = [
                 [InlineKeyboardButton('Help', callback_data='help')]
               ]

    # Create initial message:
    message = 'Welcome.'

    update.message.reply_text(message, reply_markup=InlineKeyboardMarkup(keyboard))

def help(bot, update):

    keyboard = [
                 [InlineKeyboardButton('Help', callback_data='help')]
               ]

    bot.edit_message_text(
        text='Help ... help..',
        chat_id=update.callback_query.message.chat_id,
        message_id=update.callback_query.message.message_id,
        reply_markup=InlineKeyboardMarkup(keyboard)
    )
    bot.answer_callback_query(update.callback_query.id, text='')

def unknown(bot, update):

    message = 'Please press the Help button for more instructions.'

    keyboard = [
                 [InlineKeyboardButton('Help', callback_data='help')]
               ]

    update.message.reply_text(message, reply_markup=InlineKeyboardMarkup(keyboard))



# Create the EventHandler and pass it your bot's token.
updater = Updater(token=config.TELEGRAM_API_TOKEN)

# Get the dispatcher to register handlers:
dispatcher = updater.dispatcher

dispatcher.add_handler(CommandHandler('start', start))
dispatcher.add_handler(CallbackQueryHandler(help, pattern='help'))
dispatcher.add_handler(MessageHandler(Filters.all, unknown))

updater.start_polling()

updater.idle()    

最好的问候。 克莱森里奥斯(Kleyson Rios)。

1 个答案:

答案 0 :(得分:0)

如果您要编辑该漫游器已发送的先前消息,则需要存储它们的message_id(您已经知道)。

所以您可以简单地做到这一点:

sent_message = update.message.reply_text(
    message,
    reply_markup=InlineKeyboardMarkup(keyboard)
)

然后您可以像sent_message.message_id

一样访问它

现在为变量sent_message,您可以使其成为 global 或创建一个单独的文件来处理这些变量,或者更大范围地,您可以存储放在数据库中。