2014-09-29 23 views
1

我有一個bot分析聊天命令並提供一個小型數據庫。當我告訴機器人應該將數據庫的內容寫入irc時,由於氾濫,它會被踢掉。我怎樣才能防止這一點? (我使用freenode.net)防止irc bot被汽車踢(過度氾濫)

PS:這裏是我的代碼:

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

PS是其寫入Socket.getOutputStream()一個PrintStream。 CHANNEL是我頻道的名稱。 users.size()是〜60.

回答

4

顯然,客戶端無法更改服務器閾值以檢測泛洪和斷開連接的客戶端。否則,防洪的整個想法將毫無意義。

所以,你必須限制你的輸出到這樣的水平,它不會觸發洪水踢。在ps.println調用之間添加(可配置)睡眠,並設置睡眠持續時間,以便不會被踢。


的變通辦法是使用一個引擎收錄式服務,並只發送URL和摘要/標題文本到IRC在一行。無論如何,使用這些服務是任何IRC粘貼長度超過3行的標準程序。各種「pastebin」服務都有REST API(example),所以這應該是相當簡單的方法。

+0

也許這是唯一可能的選擇,但這會極大地減慢我的代碼。不過謝謝。 – kaetzacoatl 2014-09-30 16:32:35