require "socket"
server = "irc.rizon.net"
port = "6667"
nick = "Ruby IRC Bot"
channel = "#0x40"
s = TCPSocket.open(server, port)
s.print("USER Testing", 0)
s.print("NICK #{nick}", 0)
s.print("JOIN #{channel}", 0)
这个IRC机器人没有连接到IRC服务器,我做错了什么?
答案 0 :(得分:8)
这条消息失败了:
:irc.shakeababy.net 461 * USER :Not enough parameters
所以改变你的代码。例如,这个有效:
require "socket"
server = "irc.rizon.net"
port = "6667"
nick = "Ruby IRC Bot"
channel = "#0x40"
s = TCPSocket.open(server, port)
print("addr: ", s.addr.join(":"), "\n")
print("peer: ", s.peeraddr.join(":"), "\n")
s.puts "USER testing 0 * Testing"
s.puts "NICK #{nick}"
s.puts "JOIN #{channel}"
s.puts "PRIVMSG #{channel} :Hello from IRB Bot"
until s.eof? do
msg = s.gets
puts msg
end
有关USER的详细信息,请参阅http://en.wikipedia.org/wiki/List_of_Internet_Relay_Chat_commands#USER
答案 1 :(得分:1)
我写了一个你可能希望使用的小型IRC机器人框架(作为参考):http://github.com/radar/summer。
答案 2 :(得分:1)
“USER”输入形成如下:
"USER misc misc misc :misc\r\n"
所以:
s.print("USER #{nick} #{nick} #{nick} :#{nick}\r\n", 0)
应该有效。还有其他方法可以做到,但这是我能想到的最快捷方式。