My Ruby IRC bot doesn't connect to the IRC server. What am I doing wrong?
Asked Answered
F

3

5
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)

This IRC bot doesn't connect to the IRC server, What am I doing wrong?

Funke answered 1/3, 2010 at 13:25 Comment(0)
L
8

It failed with this message:

:irc.shakeababy.net 461 * USER :Not enough parameters

so change your code. For example, this one works:

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

For more information about USER, see http://en.wikipedia.org/wiki/List_of_Internet_Relay_Chat_commands#USER

Lonnie answered 1/3, 2010 at 18:44 Comment(0)
L
1

I wrote a tiny IRC bot framework you may wish to use (as a reference): http://github.com/radar/summer.

Lachus answered 3/3, 2010 at 2:0 Comment(0)
L
1

The "USER" input is formed like:

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

So:

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

should work. There are other ways to do it, but this is the quickest way I could come up with.

Linnlinnaeus answered 10/3, 2012 at 1:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.