防止irc机器人被自动踢(多余的洪水)

时间:2014-09-29 18:47:50

标签: java irc

我有一个机器人,它分析聊天命令并提供一个小型数据库。当我告诉机器人它应该将数据库的内容写入irc时,它会因为过多的洪水而被踢。我怎么能阻止这个? (我使用的是freenode.net)

PS:这是我的代码:

for (User u : users.values()) {
    ps.println("PRIVMSG " + CHANNEL + " :" + u.toString());
}

ps是一个写入Socket.getOutputStream()的PrintStream。 CHANNEL是我频道的名称。 users.size()是~60。

1 个答案:

答案 0 :(得分:4)

显然,客户端无法更改服务器阈值以检测泛滥和断开连接的客户端。否则,整个洪水保护的想法都毫无意义。

所以,你必须将你的输出限制到这样一个水平,它不会触发洪水冲击。在ps.println次呼叫之间添加(可配置)睡眠,并设置睡眠持续时间,以免被踢。


解决方法是使用类似pastebin的服务,只需将URL和摘要/标题文本一行发送到IRC即可。无论如何,使用这些服务是任何超过3行的任何IRC粘贴的标准程序。各种“pastebin”服务都有REST API(example),所以这应该是一种非常简单的方法。