簡體   English   中英

Ruby中的IRC-Bot:PRIVMSG僅發送字符串的最后一個字

[英]IRC-Bot in Ruby: PRIVMSG sends only last word of string

我正在學習紅寶石,並且已經從網絡上下載了一個已經完成的IRC-Bot,它僅連接到給定的服務器,而沒有更多內容。 然后,我添加了一些功能(在我的情況下,我嘗試在吃午餐的地方實施投票)。

現在,到目前為止,這些工具都可以正常工作,但是我不知道ruby腳本是否做錯了什么,或者IRC服務器出了什么問題。

在我測試的Bot上,它運行良好,給出了如下輸出:

09:14 < Wayne> !EssNA
09:14 < EssNABot> [-=EssNA-Vote=-]
09:14 < EssNABot> Options are: 
09:14 < EssNABot> McDonalds. 0
09:14 < EssNABot> Currywurst 0
09:14 < EssNABot> Hendl..... 0
09:14 < EssNABot> Salatbar.. 0
09:14 < EssNABot> Griechr... 0
09:14 < EssNABot> Metzger... 0
09:14 < EssNABot> Merowinger 0
09:14 < EssNABot> Lidl...... 0
09:14 < EssNABot> Voting time is 600 seconds.

機器人本身會這樣看:

--> PRIVMSG #test [-=EssNA-Vote=-]
--> PRIVMSG #test Options are:
--> PRIVMSG #test McDonalds. 0
--> PRIVMSG #test Currywurst 0
--> PRIVMSG #test Hendl..... 0
--> PRIVMSG #test Salatbar.. 0
--> PRIVMSG #test Griechr... 0
--> PRIVMSG #test Metzger... 0
--> PRIVMSG #test Merowinger 0
--> PRIVMSG #test Lidl...... 0
--> PRIVMSG #test Voting time is 600 seconds.

但是在irc上,如果完成,應該在其上運行,輸出用戶將看到如下所示:

09:14 < Wayne> !EssNA
09:14 < EssNABot> [-=EssNA-Vote=-]
09:14 < EssNABot> are:
09:14 < EssNABot> 0
09:14 < EssNABot> 0
09:14 < EssNABot> 0
09:14 < EssNABot> 0
09:14 < EssNABot> 0
09:14 < EssNABot> 0
09:14 < EssNABot> 0
09:14 < EssNABot> 0
09:14 < EssNABot> seconds.

機器人提供的輸出與為用戶輸出的服務器上的輸出相同。

在我看來,問題出在IRC服務器上,也許有人可以向我指出正確的方向?

您的,馬呂斯

似乎您需要在昵稱后添加冒號(':'),即PRIVMSG #channel:Message

NIckolay O.的回答是正確的,但只是為了澄清這里發生的情況:

每個IRC協議命令由幾個字段組成,用空格隔開。 例外情況是,當字段的第一個字符是冒號時: -在這種情況下,冒號后的命令其余部分是單個字段(這允許命令中的最后一個字段包含空格)。

因此,當您的機器人發送這樣的錯誤消息時:

PRIVMSG #test Voting time is 600 seconds.

...消息包含7個字段( PRIVMSG#testVotingtimeis600seconds. )。 但是, PRIVMSG命令應僅在PRIVMSG之后包含兩個字段-通道和要發送的消息。 在這種情況下,服務器顯然選擇了最后一個字段作為消息(選擇在通道之后的字段也就不足為奇了)。

正確的消息,如下所示:

PRIVMSG #test :Voting time is 600 seconds.

...而是包含三個字段( PRIVMSG#testVoting time is 600 seconds. )。 現在,這是格式正確的PRIVMSG命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM