diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2006-07-31 15:33:15 +0000 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2006-07-31 15:33:15 +0000 |
commit | 2a27c12fffa359898c5601a211fe19425da82fa6 (patch) | |
tree | 68d08b03f5552c1c6da172b7359a2df005984832 /lib/rbot/message.rb | |
parent | 808c62190d6ed88f29df92871f810177b540c8a1 (diff) |
First shot at the new Irc framework. Bot is usable (sort of), but not all functionality may work as expected (or at all). If you are testing it, please report. Auth is known to be nonfunctional
Diffstat (limited to 'lib/rbot/message.rb')
-rw-r--r-- | lib/rbot/message.rb | 90 |
1 files changed, 52 insertions, 38 deletions
diff --git a/lib/rbot/message.rb b/lib/rbot/message.rb index 66b6175c..fff12194 100644 --- a/lib/rbot/message.rb +++ b/lib/rbot/message.rb @@ -17,19 +17,16 @@ module Irc # associated bot attr_reader :bot + # associated server + attr_reader :server + # when the message was received attr_reader :time - # hostmask of message source + # User that originated the message attr_reader :source - # nick of message source - attr_reader :sourcenick - - # url part of message source - attr_reader :sourceaddress - - # nick/channel message was sent to + # User/Channel message was sent to attr_reader :target # contents of the message @@ -40,10 +37,11 @@ module Irc # instantiate a new Message # bot:: associated bot class - # source:: hostmask of the message source - # target:: nick/channel message is destined for - # message:: message part - def initialize(bot, source, target, message) + # server:: Server where the message took place + # source:: User that sent the message + # target:: User/Channel is destined for + # message:: actual message + def initialize(bot, server, source, target, message) @msg_wants_id = false unless defined? @msg_wants_id @time = Time.now @@ -53,9 +51,10 @@ module Irc @target = target @message = BasicUserMessage.stripcolour message @replied = false + @server = server @identified = false - if @msg_wants_id && @bot.capabilities["identify-msg".to_sym] + if @msg_wants_id && @server.capabilities["identify-msg".to_sym] if @message =~ /([-+])(.*)/ @identified = ($1=="+") @message = $2 @@ -64,18 +63,25 @@ module Irc end end - # split source into consituent parts - if source =~ /^((\S+)!(\S+))$/ - @sourcenick = $2 - @sourceaddress = $3 - end - - if target && target.downcase == @bot.nick.downcase + if target && target == @bot.myself @address = true end end + # Access the nick of the source + # + def sourcenick + @source.nick + end + + # Access the user@host of the source + # + def sourceaddress + "#{@source.user}@#{@source.host}" + end + + # Was the message from an identified user? def identified? return @identified end @@ -133,18 +139,18 @@ module Irc # source:: hostmask of the message source # target:: nick/channel message is destined for # message:: message part - def initialize(bot, source, target, message) - super(bot, source, target, message) + def initialize(bot, server, source, target, message) + super(bot, server, source, target, message) @target = target @private = false @plugin = nil @action = false - if target.downcase == @bot.nick.downcase + if target == @bot.myself @private = true @address = true @channel = nil - @replyto = @sourcenick + @replyto = source else @replyto = @target @channel = @target @@ -223,7 +229,7 @@ module Irc # class to manage IRC PRIVMSGs class PrivMessage < UserMessage - def initialize(bot, source, target, message) + def initialize(bot, server, source, target, message) @msg_wants_id = true super end @@ -231,7 +237,7 @@ module Irc # class to manage IRC NOTICEs class NoticeMessage < UserMessage - def initialize(bot, source, target, message) + def initialize(bot, server, source, target, message) @msg_wants_id = true super end @@ -244,8 +250,8 @@ module Irc # channel user was kicked from attr_reader :channel - def initialize(bot, source, target, channel, message="") - super(bot, source, target, message) + def initialize(bot, server, source, target, channel, message="") + super(bot, server, source, target, message) @channel = channel end end @@ -253,14 +259,22 @@ module Irc # class to pass IRC Nick changes in. @message contains the old nickame, # @sourcenick contains the new one. class NickMessage < BasicUserMessage - def initialize(bot, source, oldnick, newnick) - super(bot, source, oldnick, newnick) + def initialize(bot, server, source, oldnick, newnick) + super(bot, server, source, oldnick, newnick) + end + + def oldnick + return @target + end + + def newnick + return @message end end class QuitMessage < BasicUserMessage - def initialize(bot, source, target, message="") - super(bot, source, target, message) + def initialize(bot, server, source, target, message="") + super(bot, server, source, target, message) end end @@ -272,10 +286,10 @@ module Irc # topic set on channel attr_reader :channel - def initialize(bot, source, channel, timestamp, topic="") - super(bot, source, channel, topic) + def initialize(bot, server, source, channel, topic=ChannelTopic.new) + super(bot, server, source, channel, topic.text) @topic = topic - @timestamp = timestamp + @timestamp = topic.set_on @channel = channel end end @@ -284,11 +298,11 @@ module Irc class JoinMessage < BasicUserMessage # channel joined attr_reader :channel - def initialize(bot, source, channel, message="") - super(bot, source, channel, message) + def initialize(bot, server, source, channel, message="") + super(bot, server, source, channel, message) @channel = channel # in this case sourcenick is the nick that could be the bot - @address = (sourcenick.downcase == @bot.nick.downcase) + @address = (source == @bot.myself) end end |