如何在Python Telegram程序中实现内联键盘导航?

时间:2018-04-23 09:45:42

标签: python telegram

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

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

按[否]时,只显示一条短信“谢谢你,我们希望你能留下一些评论如何改进应用程序”,回到主菜单。

按[是]时,会出现第二个内嵌按钮消息,上面写着“请投票给这个应用程序!”哪个超链接到外部网站。

按[Leave Comments]时,用户需要输入保存到数据库中的注释。

我的问题是在按下任何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”,然后要求用户编写注释,因为程序事先并不知道选择了哪个内联按钮。

1 个答案:

答案 0 :(得分:0)

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

处的结构