我用php做一个电报机器人 我有一个使用机器人的小组。 我的问题是,当几个人单击一个嵌入式键盘按钮时,我希望该按钮对第一个单击的用户有效,而对其他同时单击的用户无效。 我该如何处理必须执行一次的请求?
答案 0 :(得分:0)
对不起,我不懂PHP,所以我的示例在Python中。首先,添加内联按钮按下处理程序。例如
# when initialising the bot
dispatcher.add_handler(CallbackQueryHandler(bot.inline_button_press))
第二,在按钮的回调数据中定义某种ID。例如
# when creating the inline buttons
button_value_dict = {
"ID": "XYZ"
}
button_value = json.dumps(button_value_dict)
key_row.append(
InlineKeyboardButton(button_text, callback_data=button_value)
)
第三,在处理程序中,获取按钮数据,并检查某种形式的持久性存储(如果ID已被使用/寻址)。如果不是,请将其添加到存储中并执行操作。函数(get_meta和set_meta)仅是示例。例如
# in the routine that handles inline buttons presses
# inline_button_press in the example above
# update is a passed parameter
query = update.callback_query
button_data = query.data
button_data_dict = json.loads(button_data)
button_id = button_data_dict.get("ID")
var_value = get_meta (var=button_id)
if var_value is None:
# first time button press
# record this ID as used
set_meta (var=button_id, value="used")
# do your stuff
else:
# someone has already pressed the button
# do whatever