Flerry Asked:2020-12-07 19:10:55 +0000 UTC2020-12-07 19:10:55 +0000 UTC 2020-12-07 19:10:55 +0000 UTC 限制对 Telegram Bot 的调用 772 你好!你能告诉我如何限制用户向机器人发送命令的垃圾邮件吗?仅针对每个命令,都会创建一个线程来执行命令方法并关闭。如果用户少于 10 个,垃圾邮件不会干扰。但如果用户更多,就会开始延迟。 PS 在梦中,这样做:如果用户开始发送垃圾邮件,则会向他发送垃圾邮件存根。 java 2 个回答 Voted Anatol 2020-12-08T11:47:04Z2020-12-08T11:47:04Z 组织一个队列——如果有 10 个线程在运行(或者在不损失性能的情况下可以服务的线程数),那么将用户置于 等待状态(在队列中)并通知他。一旦一个线程被释放,就从队列中取出请求并启动一个新线程。 这比跟踪上次请求、存储这些状态等更容易、更正确。 Best Answer Flerry 2020-12-24T18:41:42Z2020-12-24T18:41:42Z 问题已解决:最有利可图的选择是创建一个地图并将来自新用户+日期的每个请求放入其中。下一次,如果他写了,我们将 Map 中的日期与当前消息的日期进行比较,如果它们之间的差异小于 n 秒,我们将向用户发送一个存根。
组织一个队列——如果有 10 个线程在运行(或者在不损失性能的情况下可以服务的线程数),那么将用户置于 等待状态(在队列中)并通知他。一旦一个线程被释放,就从队列中取出请求并启动一个新线程。
这比跟踪上次请求、存储这些状态等更容易、更正确。
问题已解决:最有利可图的选择是创建一个地图并将来自新用户+日期的每个请求放入其中。下一次,如果他写了,我们将 Map 中的日期与当前消息的日期进行比较,如果它们之间的差异小于 n 秒,我们将向用户发送一个存根。