电报漫游器可以阻止特定用户吗?

MaG*_*0_o 5 api spam-prevention telegram-bot

我有一个电报机器人,对于收到的任何消息,它都会在服务器中运行一个程序并将其结果发送回去。但有个问题!如果用户向我的机器人发送太多邮件(垃圾邮件),它将使服务器变得如此繁忙!
有什么方法可以阻止每秒发送5条以上消息并且不再收到消息的人?(使用电报API!)

Nas*_*ghi 7

首先,我必须说Telegram Bot API本身不具有这种功能,因此您将需要自己实现它,而您需要做的就是:

  1. 计算用户在一秒钟内发送的消息数,如果没有数据库,这将不是那么容易。但是,如果您有一个包含名为Black_List的表的数据库,并将所有消息及其发送时间保存在另一表中,则您可以在预定的时间段内计算通过一个特定的ChatID发送的消息数(在您的情况; 1秒),然后检查计数是否大于5,如果答案为是,则可以将该ChatID插入Black_List表。
  2. 每次漫游器收到消息时,它都必须运行数据库查询以查看发件人的chatID是否存在于Black_List表中。如果存在,它应该继续自己的工作并忽略该消息(或者甚至可以向用户发送警报:“您被阻止。”我认为这可能很耗时)。

请注意,据我所知,当前的电报bot API没有停止接收消息的功能,但是正如我上面提到的,您可以忽略垃圾邮件发送者的消息。

为了节省时间,您应该避免在漫游器每次收到更新(消息)时都建立数据库连接,而是可以将Black_List中存在的ChatID加载到DataSet中,并在插入新的垃圾邮件发送者后立即更新DataSet。 ChatID到Black_List表。这样,查询数量将明显减少。