【问题标题】:Can a telegram bot block a specific user?电报机器人可以阻止特定用户吗?
【发布时间】:2017-08-10 16:26:31
【问题描述】:

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

【问题讨论】:

  • 不,你不能。 API 不提供此功能。只需制作机器人将忽略的用户的本地阻止列表。
  • 我希望这些用户的消息甚至不存在于我从电报服务器下载的 json 文件中!反正没别的办法也没关系。

标签: api telegram-bot spam-prevention


【解决方案1】:

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

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

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

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

【讨论】:

猜你喜欢
  • 2021-07-09
  • 1970-01-01
  • 2021-06-29
  • 2018-03-01
  • 1970-01-01
  • 2018-07-07
  • 2017-08-18
  • 2017-10-12
  • 2017-07-29
相关资源
最近更新 更多