Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从其他telebot中选择一条消息?_Python_Telegram_Telegram Bot_Python Telegram Bot - Fatal编程技术网

Python 如何从其他telebot中选择一条消息?

Python 如何从其他telebot中选择一条消息?,python,telegram,telegram-bot,python-telegram-bot,Python,Telegram,Telegram Bot,Python Telegram Bot,我正在为一家房地产代理公司做一个机器人。Bot发送包含公寓信息的消息。Bot可以一次发送多条消息供用户选择。如何实现选择其中一条消息的过程?当我在消息上创建一个内联按钮时,当用户单击该按钮时,出于某种原因,最后一条消息的id将返回给bot,也就是说,如果bot已使用select按钮发送了三条消息,那么当单击第一条消息时,将返回最后一条消息。我想这样做,例如,用户可以回复一条消息,从而选择一条特定的消息,但我不明白如何将用户的消息与他回复的消息关联起来。我怎样才能做得更好 当用户单击它时,出于某种

我正在为一家房地产代理公司做一个机器人。Bot发送包含公寓信息的消息。Bot可以一次发送多条消息供用户选择。如何实现选择其中一条消息的过程?当我在消息上创建一个内联按钮时,当用户单击该按钮时,出于某种原因,最后一条消息的id将返回给bot,也就是说,如果bot已使用select按钮发送了三条消息,那么当单击第一条消息时,将返回最后一条消息。我想这样做,例如,用户可以回复一条消息,从而选择一条特定的消息,但我不明白如何将用户的消息与他回复的消息关联起来。我怎样才能做得更好

当用户单击它时,出于某种原因,最后一个 消息将返回到bot

这不是预期的行为,如果您正在发送3条包含内联按钮键盘的不同消息,则在单击任何按钮时,将创建一个新的更新,其中包含用户单击其按钮时的消息id。你应该检查一下以确定

您需要的是回调_数据:

具有回调U数据字段。这是专门针对您的目的,您可以将单元id放置在回调数据中,然后当用户单击任何按钮时,您也将收到回调数据,通过这些数据,您将知道用户单击了哪个单元id

您没有提到要使用哪个库,但请在python中的库上检查一下

def startupdate:更新,上下文:回调上下文->无: 键盘=[ [ InLineKeyboard按钮选项1,回调_data='1', InLineKeyboard按钮选项2,回调_data='2', ], [InlineKeyboardButtonOptions 3,回调_data='3'], ] reply_markup=inlinekeyboard markup键盘 update.message.reply_text‘请选择:’,reply_markup=reply_markup def按钮更新:更新,上下文:回调上下文->无: query=update.callback\u查询 即使不需要通知用户,也需要回答回调查询 有些客户在其他方面可能会遇到麻烦。看见https://core.telegram.org/bots/apicallbackquery 问题答案 query.edit_message_texttext=所选选项:{}.formatquery.data def主: 创建更新程序并将其传递给bot的令牌。 确保将use_context=True设置为使用新的基于上下文的回调 在版本12之后,这将不再是必需的 updater=UpdaterTOKEN,使用上下文=True updater.dispatcher.add_handlerCommandHandler'start',start updater.dispatcher.add_handlerCallbackQueryHandlerbutton 在本例中,如果用户单击第一个按钮选项1,则按钮内查询功能将为1。如果他们点击第二个按钮选项2,您将收到2作为查询。现在,您可以存储每个公寓的id,而不是1和2。如果您有用于多种用途的按钮,您可以使用诸如:公寓id:1或关闭按钮之类的简短短语来区分它们。在处理更新时,您可以按以下方式拆分查询:,如果拆分[0]是单元id,则您将处理拆分[2],否则您将知道用户已单击其他按钮

因此,回调U数据是一个有限的数据库,用于解决此类问题