# "<channel> <mode> <mode params>"
RPL_CHANNELMODEIS=324
+ # "<channel> <unixtime>"
+ RPL_CREATIONTIME=329
+
+ # "<channel> <url>"
+ RPL_CHANNEL_URL=328
+
# "<channel> :No topic is set"
RPL_NOTOPIC=331
data[:message] = argv[2]
handle(:badnick, data)
when RPL_TOPIC
- data[:channel] = @server.get_channel(argv[1])
+ data[:channel] = @server.channel(argv[1])
data[:topic] = argv[2]
-
- if data[:channel]
- data[:channel].topic.text = data[:topic]
- else
- warning "Received topic #{data[:topic].inspect} for channel #{data[:channel].inspect} I was not on"
- end
+ data[:channel].topic.text = data[:topic]
handle(:topic, data)
when RPL_TOPIC_INFO
data[:nick] = @server.user(argv[0])
- data[:channel] = @server.get_channel(argv[1])
+ data[:channel] = @server.channel(argv[1])
# This must not be an IRC::User because it might not be an actual User,
# and we risk overwriting valid User data
data[:time] = Time.at(argv[3].to_i)
- if data[:channel]
- data[:channel].topic.set_by = data[:source]
- data[:channel].topic.set_on = data[:time]
- else
- warning "Received topic #{data[:topic].inspect} for channel #{data[:channel].inspect} I was not on"
- end
+ data[:channel].topic.set_by = data[:source]
+ data[:channel].topic.set_on = data[:time]
handle(:topicinfo, data)
when RPL_NAMREPLY
when RPL_CHANNELMODEIS
parse_mode(serverstring, argv[1..-1], data)
handle(:mode, data)
+ when RPL_CREATIONTIME
+ data[:channel] = argv[1]
+ data[:time] = Time.at(argv[2].to_i)
+ @server.get_channel(data[:channel]).creation_time=data[:time]
+ handle(:creationtime, data)
+ when RPL_CHANNEL_URL
+ data[:channel] = argv[1]
+ data[:url] = argv[2]
+ @server.get_channel(data[:channel]).url=data[:url].dup
+ handle(:channel_url, data)
else
warning "Unknown message #{serverstring.inspect}"
handle(:unknown, data)
when *@server.supports[:prefix][:modes]
who_wants_params << data[:modes].length - 1
else
- warning "Unknown mode #{m} in #{serverstring.inspect}"
+ warning "Ignoring unknown mode #{m} in #{serverstring.inspect}"
+ data[:modes].pop
end
end
end