Мой бот Ruby IRC не подключается к IRC-серверу. Что я делаю неправильно? - PullRequest
5 голосов
/ 01 марта 2010
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-серверу. Что я делаю не так?

Ответы [ 3 ]

8 голосов
/ 01 марта 2010

Не удалось с этим сообщением:

: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 голос
/ 10 марта 2012

Вход "USER" формируется как:

"USER misc misc misc :misc\r\n"

Итак:

s.print("USER #{nick} #{nick} #{nick} :#{nick}\r\n", 0)

должно работать. Есть и другие способы сделать это, но это самый быстрый способ, которым я мог придумать.

1 голос
/ 03 марта 2010

Я написал крошечный IRC-каркас, который вы можете использовать (для справки): http://github.com/radar/summer.

...