繁体   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