单击多个内联按钮后如何向用户显示结果
How do show the result to user after he or she clicks multiple inline buttons
所以这是我的代码。基本上你们都熟悉地铁...我想创建一个部分,当用户单击多个按钮然后单击确定时,它 returns 除了确定之外用户单击的任何内容。
def sauce(update: Update, context: CallbackContext) -> int:
if update.message.text == "Y" or update.message.text == "y":
keyboard = ([
InlineKeyboardButton("No Sauce",callback_data='No Sauce'),
InlineKeyboardButton("Chipotle Southwest", callback_data='Chipotle Southwest'),
InlineKeyboardButton("Ranch", callback_data='Ranch'),
InlineKeyboardButton("BBQ", callback_data='BBQ'),
InlineKeyboardButton("Chilli Sauce", callback_data='Chilli Sauce'),
InlineKeyboardButton("Tomato Sauce", callback_data='Tomato Sauce'),
InlineKeyboardButton("Mustard", callback_data='Mustard'),
InlineKeyboardButton("Mayonese", callback_data='Mayonese'),
InlineKeyboardButton("Sweet Onion", callback_data='Sweet Onion'),
InlineKeyboardButton("Hot Pepper", callback_data='Hot Pepper'),
InlineKeyboardButton("Cheese Sauce", callback_data='Cheese Sauce'),
InlineKeyboardButton("Sweet Chilli", callback_data='Sweet Chilli'),
InlineKeyboardButton("Garlic Aioli", callback_data='Garlic Aioli'),
InlineKeyboardButton("Honey Mustard", callback_data='Honey Mustard'),
])
reply_markup = InlineKeyboardMarkup([[button] for button in keyboard])
update.message.reply_text('Please choose your sauces:', reply_markup = reply_markup)
return CHECK2
elif update.message.text == "N" or update.message.text == "n":
update.message.reply_text("Please re-pick your option")
return vegetables(update,context)
def check2(update: Update, context: CallbackContext) -> int:
global sauces
query = update.callback_query
query.answer()
sauces += query.data + ","
query.edit_message_text(text=f"Selected option: {sauces}. Anymore(MAX 2)? Y/N")
return SEASONING
我只收到用户点击一次的任何内容。例如。如果他点击“没有蔬菜”,他会返回“没有蔬菜”,但如果我点击多个按钮,则没有任何反应。
您可以存储每个 user/chat 的数据。只需用空列表定义一些变量,然后从那里的内联按钮推送新值。
更多documentation about storing bot, user and chat related data
您可以使用以 UserID 为键的字典,并且在第一步中有一个空列表
当用户点击这些按钮中的任何一个时,带有所需和适当文本的数据将被输入到您的列表中。
最后,你可以得到列表的值点击确定按钮后,你必须将列表设置为空值
判断每个key的状态,也可以通过查看列表来确认或不认可每个key
这个方法就是一个答案,如果你采纳了我说的思路就可以轻松实现了
所以这是我的代码。基本上你们都熟悉地铁...我想创建一个部分,当用户单击多个按钮然后单击确定时,它 returns 除了确定之外用户单击的任何内容。
def sauce(update: Update, context: CallbackContext) -> int:
if update.message.text == "Y" or update.message.text == "y":
keyboard = ([
InlineKeyboardButton("No Sauce",callback_data='No Sauce'),
InlineKeyboardButton("Chipotle Southwest", callback_data='Chipotle Southwest'),
InlineKeyboardButton("Ranch", callback_data='Ranch'),
InlineKeyboardButton("BBQ", callback_data='BBQ'),
InlineKeyboardButton("Chilli Sauce", callback_data='Chilli Sauce'),
InlineKeyboardButton("Tomato Sauce", callback_data='Tomato Sauce'),
InlineKeyboardButton("Mustard", callback_data='Mustard'),
InlineKeyboardButton("Mayonese", callback_data='Mayonese'),
InlineKeyboardButton("Sweet Onion", callback_data='Sweet Onion'),
InlineKeyboardButton("Hot Pepper", callback_data='Hot Pepper'),
InlineKeyboardButton("Cheese Sauce", callback_data='Cheese Sauce'),
InlineKeyboardButton("Sweet Chilli", callback_data='Sweet Chilli'),
InlineKeyboardButton("Garlic Aioli", callback_data='Garlic Aioli'),
InlineKeyboardButton("Honey Mustard", callback_data='Honey Mustard'),
])
reply_markup = InlineKeyboardMarkup([[button] for button in keyboard])
update.message.reply_text('Please choose your sauces:', reply_markup = reply_markup)
return CHECK2
elif update.message.text == "N" or update.message.text == "n":
update.message.reply_text("Please re-pick your option")
return vegetables(update,context)
def check2(update: Update, context: CallbackContext) -> int:
global sauces
query = update.callback_query
query.answer()
sauces += query.data + ","
query.edit_message_text(text=f"Selected option: {sauces}. Anymore(MAX 2)? Y/N")
return SEASONING
我只收到用户点击一次的任何内容。例如。如果他点击“没有蔬菜”,他会返回“没有蔬菜”,但如果我点击多个按钮,则没有任何反应。
您可以存储每个 user/chat 的数据。只需用空列表定义一些变量,然后从那里的内联按钮推送新值。
更多documentation about storing bot, user and chat related data
您可以使用以 UserID 为键的字典,并且在第一步中有一个空列表
当用户点击这些按钮中的任何一个时,带有所需和适当文本的数据将被输入到您的列表中。
最后,你可以得到列表的值点击确定按钮后,你必须将列表设置为空值
判断每个key的状态,也可以通过查看列表来确认或不认可每个key
这个方法就是一个答案,如果你采纳了我说的思路就可以轻松实现了