]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
rfc2812: always return the actual Channel or User when handled
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Mon, 11 Aug 2008 07:10:23 +0000 (09:10 +0200)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Mon, 11 Aug 2008 07:10:23 +0000 (09:10 +0200)
For consistency, all delegations now return the actual Channel object in
data[:channel] and the actual User object in data[:nick].

lib/rbot/rfc2812.rb

index 42b8daf7a0e979e37b9c2d75b1515bdda026779a..800c012094b944c50eacb9204a58858e2437df4b 100644 (file)
@@ -1152,9 +1152,7 @@ module Irc
           # - "@" is used for secret channels, "*" for private
           # channels, and "=" for others (public channels).
           data[:channeltype] = argv[1]
-          data[:channel] = argv[2]
-
-          chan = @server.channel(data[:channel])
+          data[:channel] = chan = @server.channel(argv[2])
 
           users = []
           argv[3].scan(/\S+/).each { |u|
@@ -1178,7 +1176,7 @@ module Irc
           }
           @tmpusers += users
         when RPL_ENDOFNAMES
-          data[:channel] = argv[1]
+          data[:channel] = @server.channel(argv[1])
           data[:users] = @tmpusers
           handle(:names, data)
           @tmpusers = Array.new
@@ -1240,17 +1238,16 @@ module Irc
           data[:text] = argv[1]
           handle(:datastr, data)
         when RPL_AWAY
-          data[:nick] = argv[1]
+          data[:nick] = user = @server.user(argv[1])
           data[:message] = argv[-1]
-          user = @server.user(data[:nick])
           user.away = data[:message]
           handle(:away, data)
        when RPL_WHOREPLY
-          data[:channel] = argv[1]
+          data[:channel] = channel = @server.channel(argv[1])
           data[:user] = argv[2]
           data[:host] = argv[3]
           data[:userserver] = argv[4]
-          data[:nick] = argv[5]
+          data[:nick] = user = @server.user(argv[5])
           if argv[6] =~ /^(H|G)(\*)?(.*)?$/
             data[:away] = ($1 == 'G')
             data[:ircop] = $2
@@ -1263,8 +1260,6 @@ module Irc
           end
           data[:hopcount], data[:real_name] = argv[7].split(" ", 2)
 
-          user = @server.user(data[:nick])
-
           user.user = data[:user]
           user.host = data[:host]
           user.away = data[:away] # FIXME doesn't provide the actual message
@@ -1273,8 +1268,6 @@ module Irc
           # TODO hopcount
           user.real_name = data[:real_name]
 
-          channel = @server.channel(data[:channel])
-
           channel.add_user(user, :silent=>true)
           data[:modes].map { |mode|
             channel.mode[mode].set(user)
@@ -1341,14 +1334,14 @@ module Irc
           parse_mode(serverstring, argv[1..-1], data)
           handle(:mode, data)
         when RPL_CREATIONTIME
-          data[:channel] = argv[1]
+          data[:channel] = @server.channel(argv[1])
           data[:time] = Time.at(argv[2].to_i)
-          @server.channel(data[:channel]).creation_time=data[:time]
+          data[:channel].creation_time=data[:time]
           handle(:creationtime, data)
         when RPL_CHANNEL_URL
-          data[:channel] = argv[1]
+          data[:channel] = @server.channel(argv[1])
           data[:url] = argv[2]
-          @server.channel(data[:channel]).url=data[:url].dup
+          data[:channel].url=data[:url].dup
           handle(:channel_url, data)
         when ERR_NOSUCHNICK
           data[:nick] = argv[1]