Reverse = "\026"
Italic = "\011"
NormalText = "\017"
+ AttributeRx = /#{Bold}|#{Underline}|#{Reverse}|#{Italic}|#{NormalText}/
# Color is prefixed by \003 and followed by optional
# foreground and background specifications, two-digits-max
attr_accessor :ignored
alias :ignored? :ignored
+ # set this to true if the method that delegates the message is run in a thread
+ attr_accessor :in_thread
+ alias :in_thread? :in_thread
+
# instantiate a new Message
# bot:: associated bot class
# server:: Server where the message took place
@replied = false
@server = server
@ignored = false
+ @in_thread = false
@identified = false
if @msg_wants_id && @server.capabilities[:"identify-msg"]
# the nick or core.reply_with_nick is set to false
#
def reply(string, options={})
- if @bot.config['core.reply_with_nick'] and not string =~ /\b#{Regexp.escape(@source.to_s)}\b/
+ if @bot.config['core.reply_with_nick'] and not string =~ /(?:^|\W)#{Regexp.escape(@source.to_s)}(?:$|\W)/
return nickreply(string, options)
end
plainreply(string, options)
# class to pass IRC Nick changes in. @message contains the old nickame,
# @sourcenick contains the new one.
class NickMessage < BasicUserMessage
+ attr_accessor :is_on
def initialize(bot, server, source, oldnick, newnick)
super(bot, server, source, oldnick, newnick)
+ @is_on = []
end
def oldnick
# class to manage mode changes
class ModeChangeMessage < BasicUserMessage
attr_accessor :modes
- def initialize(bot, server, source, channel, message="")
- super(bot, server, source, channel, message)
+ def initialize(bot, server, source, target, message="")
+ super(bot, server, source, target, message)
@address = (source == @bot.myself)
@modes = []
end
end
+ # class to manage NAME replies
+ class NamesMessage < BasicUserMessage
+ attr_accessor :users
+ def initialize(bot, server, source, target, message="")
+ super(bot, server, source, target, message)
+ @users = []
+ end
+ end
+
class QuitMessage < BasicUserMessage
+ attr_accessor :was_on
def initialize(bot, server, source, target, message="")
super(bot, server, source, target, message)
+ @was_on = []
end
end
# topic set on channel
attr_reader :channel
+ # :info if topic info, :set if topic set
+ attr_accessor :info_or_set
def initialize(bot, server, source, channel, topic=ChannelTopic.new)
super(bot, server, source, channel, topic.text)
@topic = topic
@timestamp = topic.set_on
@channel = channel
+ @info_or_set = nil
end
end
# same as a join, but can have a message too
class PartMessage < JoinMessage
end
+
+ class UnknownMessage < BasicUserMessage
+ end
end