-1

私は次のことを試しました:

require "socket"

class IRC
def initialize(server, port=6667, user='ruby-bot')
    @server = server
    @port = port
    @user = user
end

def connect!
    @s = TCPSocket.open(@server, @port) #connect
    raise "Couldn't connect to #{@server}:#{@port}" unless @s #error handling
    @s.puts "USER #{@user} +B :IRC Ruby Bot" #set modes etc
end 

def nick(nick=nil)
    @s.puts "NICK #{@nick}"
end

def join(channel)
    @s.puts "JOIN #{channel}"
end
end

その後:

#!/usr/bin/ruby
require './irc.rb'

print 'Server: '
server = gets
print 'Port (6667): '
port = gets

if port.match(/^\n/)
port = '6667'
end

bot = IRC.new(server, port)
bot.nick 'fbot1830'
bot.join '#myowntestchannel'

そして、次のエラーが発生します。

./irc.rb:17:in `nick': private method `puts' called for nil:NilClass (NoMethodError) from ./bot.rb:14

ルビーでカスタムクラスを作成するのはこれが初めてです。しばらくお待ちください。私のエラーがささいなことではないことを願っています;)

4

1 に答える 1

7

@sconnect!メソッドで初期化されますが、そのメソッドは呼び出されないため、メソッドで@s評価されます。nilnick

于 2012-11-03T17:14:25.413 に答える