X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Frfc2812.rb;h=ac44888330d6b10726fa11be5a2eba04ff464d15;hb=2f2644f03203b36fd6aa105e62f4cd15070e1cbe;hp=0100fc3c522be736689d902fbef3dba5cfacb068;hpb=e844032d80cac393c4ddf720bf359982fdc7c93a;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/rfc2812.rb b/lib/rbot/rfc2812.rb index 0100fc3c..ac448883 100644 --- a/lib/rbot/rfc2812.rb +++ b/lib/rbot/rfc2812.rb @@ -144,6 +144,12 @@ module Irc # " " RPL_CHANNELMODEIS=324 + # " " + RPL_CREATIONTIME=329 + + # " " + RPL_CHANNEL_URL=328 + # " :No topic is set" RPL_NOTOPIC=331 @@ -1122,19 +1128,14 @@ module Irc 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 @@ -1142,12 +1143,8 @@ module Irc 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 @@ -1288,6 +1285,16 @@ module Irc 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)