m.users = data[:users]
@plugins.delegate "names", m
}
+ @client[:banlist] = proc { |data|
+ m = BanlistMessage.new(self, server, server, data[:channel])
+ m.bans = data[:bans]
+ @plugins.delegate "banlist", m
+ }
@client[:nosuchtarget] = proc { |data|
m = NoSuchTargetMessage.new(self, server, server, data[:target], data[:message])
@plugins.delegate "nosuchtarget", m
end
end
+ # class to manager Ban list replies
+ class BanlistMessage < BasicUserMessage
+ # the bans
+ attr_accessor :bans
+
+ def initialize(bot, server, source, target, message="")
+ super(bot, server, source, target, message)
+ @bans = []
+ end
+
+ def inspect
+ fields = ' bans=' << bans.inspect
+ super(fields)
+ end
+ end
+
class QuitMessage < BasicUserMessage
attr_accessor :was_on
def initialize(bot, server, source, target, message="")
# This is used by some messages to build lists of users that
# will be delegated when the ENDOF... message is received
@tmpusers = []
+
+ # Same as above, just for bans
+ @tmpbans = []
end
# Clear the server and reset the user
data[:users] = @tmpusers
handle(:names, data)
@tmpusers = Array.new
+ when RPL_BANLIST
+ data[:channel] = @server.channel(argv[1])
+ data[:mask] = argv[2]
+ data[:by] = argv[3]
+ data[:at] = argv[4]
+ @tmpbans << data
+ when RPL_ENDOFBANLIST
+ data[:channel] = @server.channel(argv[1])
+ data[:bans] = @tmpbans
+ handle(:banlist, data)
+ @tmpbans = Array.new
when RPL_LUSERCLIENT
# ":There are <integer> users and <integer>
# services on <integer> servers"