电报机器人可以阻止特定用户吗?

时间:2017-03-19 11:11:59

标签: api telegram-bot spam-prevention

我有一个电报机器人,对于任何收到的消息,在服务器中运行程序并将其结果发回。但有个问题!如果用户向我的机器人发送太多消息(垃圾邮件),它将使服务器如此忙碌!
有没有办法阻止那些在一秒钟内发送超过5条消息而又不再收到消息的人? (使用电报api !!)

1 个答案:

答案 0 :(得分:3)

首先我要说Telegram Bot API本身没有这样的能力,因此你需要自己实现它,你需要做的就是:

  1. 计算用户在一秒钟内发送的消息数量,如果没有数据库则不会那么容易。但是,如果您有一个名为Black_List的数据库,并将所有邮件的发送时间保存在另一个表格中,您就可以计算通过一个特定ChatID发送的邮件数量在预定义的时间段内(在您的情况下; 1秒)并检查计数是否大于5,如果答案为是,您可以将该ChatID插入Black_List表。 < / LI>
  2. 每次机器人收到消息时,都必须运行数据库查询,以查看发件人的chatID是否存在于Black_List表中。如果它存在,它应该继续自己的工作并忽略该消息(或者甚至它可以向用户发送警告说:&#34;您被阻止。&#34;我认为这可能是耗时的)。

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

      

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