我正在学习红宝石,我从网上拿了一个已经完成的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.
bot提供的输出与用户输出的服务器上的输出相同。
对我来说,问题是IRC服务器,也许有人可以指出我正确的方向?
此致, 的Marius
答案 0 :(得分:3)
您似乎需要在昵称后添加冒号(':'),即PRIVMSG #channel:Message
答案 1 :(得分:2)
NIckolay O.'s answer是正确的,但只是为了澄清这里发生了什么:
每个IRC协议命令由几个字段组成,由空格分隔。例外情况是字段的第一个字符是冒号:
- 在这种情况下,冒号后面的命令的其余部分是单个字段(这允许命令中的最后一个字段包含空格)
所以,当您的机器人发送不正确的消息时这样:
PRIVMSG #test Voting time is 600 seconds.
...邮件包含7个字段(PRIVMSG
,#test
,Voting
,time
,is
,600
和{{ 1}})。但是,seconds.
命令应该只包含PRIVMSG
后面的两个字段 - 要发送的通道和消息。在这种情况下,服务器显然正在选择 last 字段作为消息(它也不足为奇地选择频道后面的字段)。
正确的信息,如下:
PRIVMSG
...而是包含三个字段(PRIVMSG #test :Voting time is 600 seconds.
,PRIVMSG
和#test
)。现在这是一个格式正确的Voting time is 600 seconds.
命令。