有可能通过Telegram python机器人中的Inlinekeybuttons使用带参数的代码吗



我在命令处理程序中编码了代码,参数是if1然后是task1,if2然后是task2。我可以让它工作,只需键入"/命令1"或"/命令2",即可激活它。

是否可以立即在内联板按钮中添加"1"或"2"参数?

我的内联板代码现在是这样的。

我知道我的按钮现在会触发完全相同的代码,但不知道如何为第一个按钮设置参数"1",为第二个按钮设置"2"。


options.append(InlineKeyboardButton("command with argument 1", callback_data="1"))
options.append(InlineKeyboardButton("command with argument 2", callback_data="2"))
#######
def callback_query_handler(update, context):

input = update.callback_query.data

if input == '1':
self._command(update, context)
if input == '2':
self._command(update,context)

请注意,input是一个内置函数,您不应该覆盖它。

现在我假设self._command是用于处理commandCommandHandler的回调。首先(至少从您的代码片段来看)selfcallback_query_handler函数中是未定义的。此外,updateupdate.callback_query的更新,而self._command可能假设update.message is not None-所以这必然会产生问题。我建议

  1. self._command中提取依赖于参数的逻辑到不同的函数中
  2. self._commandcallback_query_handler调用该函数

此函数可能应将参数作为参数。请注意,在您的相应代码段中,if基本上毫无意义,因为在这两种情况下,您都对self._command进行了相同的调用

最新更新