处理来自多用户的多请求

时间:2020-09-30 23:27:42

标签: php telegram-bot

我用php做一个电报机器人 我有一个使用机器人的小组。 我的问题是,当几个人单击一个嵌入式键盘按钮时,我希望该按钮对第一个单击的用户有效,而对其他同时单击的用户无效。 我该如何处理必须执行一次的请求?

1 个答案:

答案 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