summaryrefslogtreecommitdiff
path: root/lib/rbot/message.rb
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2006-07-31 15:33:15 +0000
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2006-07-31 15:33:15 +0000
commit2a27c12fffa359898c5601a211fe19425da82fa6 (patch)
tree68d08b03f5552c1c6da172b7359a2df005984832 /lib/rbot/message.rb
parent808c62190d6ed88f29df92871f810177b540c8a1 (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.rb90
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