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)

この IRC ボットは IRC サーバーに接続しません。何が間違っていますか?

4

3 に答える 3

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を参照してください。

于 2010-03-01T18:44:33.127 に答える
1

「USER」入力は次のように形成されます。

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

そう:

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

動作するはずです。他にも方法はありますが、これが一番手っ取り早い方法です。

于 2012-03-10T01:49:00.010 に答える
1

あなたが使用したいと思う小さな IRC ボット フレームワークを作成しました (参照として): http://github.com/radar/summer

于 2010-03-03T02:00:49.427 に答える