如何阻止有人向我的电报机器人的内联键盘发送垃圾邮件?
How do I stop someone spamming inline keyboard of my telegram bot?
我想冻结键盘按钮 4 秒,我不想删除键盘或让它变得无用 forever.The 我知道实现此目的的唯一方法是存储连续点击的时间我的数据库,然后使用 if statement
.
if (click_2_time - click_1_time) < 4 :
pass
else:
//Do sensitive and irreversible operations
^这个问题是我将在多个组中使用许多内联键盘,并且使用此逻辑来跟踪各个键盘变得非常复杂。
请帮我解决一个更简单的问题。
您可以存储用户在按钮 callback_data
内的内联按钮上单击的最后时间戳。
例如,如果 callback_data: show_message
,如果用户单击按钮,编辑消息的内联键盘并将 callback_data
更改为 show_message:1594922033
。
1594922033
是 unix 时间戳。
考虑到每 5 秒允许 1 次点击,您要将 callback_data
拆分为 :
,然后如果拆分的长度等于 1,则处理请求添加时间戳并更新message keyboard else 如果长度为 2,则取第二项时间戳并将其与当前时间戳进行比较,如果它们的差异小于 5 秒,您将显示错误或忽略请求。否则您将更新消息的时间戳和键盘。
current_timestamp = datetime.datetime.now().timestamp()
callback = ...
data = callback.split(":")
if data.len() == 1:
callback = callback + ":" + str(current_timestamp)
# process data[0]
# update message keyboard with current_timestamp
else:
timestamp = int(data[1])
if current_timestamp - timestamp > 5:
# ignore the request or respond with error
else:
callback = data[0] + ":" + str(current_timestamp)
# process data[0]
# update message keyboard
您正在使用键盘按钮的 callback_data 字段作为存储空间。
但是根据documentation.
,你必须确保callback_data的长度不超过64字节
我想冻结键盘按钮 4 秒,我不想删除键盘或让它变得无用 forever.The 我知道实现此目的的唯一方法是存储连续点击的时间我的数据库,然后使用 if statement
.
if (click_2_time - click_1_time) < 4 :
pass
else:
//Do sensitive and irreversible operations
^这个问题是我将在多个组中使用许多内联键盘,并且使用此逻辑来跟踪各个键盘变得非常复杂。
请帮我解决一个更简单的问题。
您可以存储用户在按钮 callback_data
内的内联按钮上单击的最后时间戳。
例如,如果 callback_data: show_message
,如果用户单击按钮,编辑消息的内联键盘并将 callback_data
更改为 show_message:1594922033
。
1594922033
是 unix 时间戳。
考虑到每 5 秒允许 1 次点击,您要将 callback_data
拆分为 :
,然后如果拆分的长度等于 1,则处理请求添加时间戳并更新message keyboard else 如果长度为 2,则取第二项时间戳并将其与当前时间戳进行比较,如果它们的差异小于 5 秒,您将显示错误或忽略请求。否则您将更新消息的时间戳和键盘。
current_timestamp = datetime.datetime.now().timestamp()
callback = ...
data = callback.split(":")
if data.len() == 1:
callback = callback + ":" + str(current_timestamp)
# process data[0]
# update message keyboard with current_timestamp
else:
timestamp = int(data[1])
if current_timestamp - timestamp > 5:
# ignore the request or respond with error
else:
callback = data[0] + ":" + str(current_timestamp)
# process data[0]
# update message keyboard
您正在使用键盘按钮的 callback_data 字段作为存储空间。
但是根据documentation.
,你必须确保callback_data的长度不超过64字节