【问题标题】:How to implement inline keyboard navigation in Python Telegram program?如何在 Python Telegram 程序中实现内联键盘导航?
【发布时间】:2021-03-25 19:08:14
【问题描述】:

我已经编写了一个 Python Telegram 程序,但我需要一些帮助来导航内联键盘。当用户单击其中一个自定义键盘按钮 [反馈] 时,会出现一个内联键盘:

"Message: Do you find this app useful"
[No], [Yes], [Leave Comments]. 

当按下[否]时,只出现一条短信“谢谢,我们希望你能留下一些cmets如何改进应用程序”,返回主菜单。

当按下 [Yes] 时,会出现第二条内嵌按钮消息,其中包含“请为这个应用投票!”哪些超链接到外部网站。

当点击[Leave Comments]时,用户需要输入保存到数据库中的cmets。

我的问题是在按下 3 个内联按钮中的任何一个时,它会导致相同的功能“insert_UserFeedback”。

我的部分代码如下。

keyboard03 = [[InlineKeyboardButton("No", callback_data='no'),
InlineKeyboardButton("Yes", callback_data='yes')],
[InlineKeyboardButton("Leave Comments", callback_data='comments')]]
reply_markup03 = InlineKeyboardMarkup(keyboard03)
update.message.reply_text('Do you find the app useful?', 
reply_markup=reply_markup03)
user = update.message.from_user
return FEEDBACK

在 conv_handler states={

FEEDBACK: [MessageHandler(Filters.text,
insert_UserFeedback,
pass_user_data=True),


def insert_UserFeedback(bot, update, user_data):    
user = update.message.from_user
#some codes..
sql10 = "UPDATE `subscribers` SET `feedback`='" + userFeedbackTxt + "', 
`feedbackDate`='" + todaydatestamp + "' WHERE `id`=" + str(user.id) + ";"
cc.execute(sql10)
copp.commit()
copp.close()
update.message.reply_text(user.first_name + ', thank you for your feedback!')
return KEYBOARDVAL

因此,无论我选择哪个内联按钮,都会调用“insert_UserFeedback”,然后需要用户编写注释,因为程序事先并不知道选择了哪个内联按钮。

【问题讨论】:

    标签: python telegram


    【解决方案1】:

    响应对象InlineQuery 有一个字段query,其中返回用户操作的结果。检查Telegram API Inline Query的结构

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 2017-06-18
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2018-08-09
      • 2020-10-02
      相关资源
      最近更新 更多