X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Fmessage.rb;h=ba0d8cc9762f0e851ae67abe9086b364c2c3d832;hb=973260ba7343198da6074913d3aaee58ad667358;hp=918425d9ea65b41730646d22224a2da541d51cf2;hpb=1bb149baa203f8c647fbe6647b329fd1635add0d;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/message.rb b/lib/rbot/message.rb index 918425d9..ba0d8cc9 100644 --- a/lib/rbot/message.rb +++ b/lib/rbot/message.rb @@ -132,6 +132,12 @@ module Irc attr_accessor :ignored alias :ignored? :ignored + # should the message handler be excuted in new thread? + # if set to true or false, this overrides :thread option in map. if it's nil, + # the map option takes effect + attr_accessor :thread + alias :thread? :thread + # instantiate a new Message # bot:: associated bot class # server:: Server where the message took place @@ -150,6 +156,7 @@ module Irc @replied = false @server = server @ignored = false + @thread = nil @identified = false if @msg_wants_id && @server.capabilities[:"identify-msg"] @@ -215,6 +222,15 @@ module Irc end + # class for handling welcome messages from the server + class WelcomeMessage < BasicUserMessage + end + + # class for handling MOTD from the server. Yes, MotdMessage + # is somewhat redundant, but it fits with the naming scheme + class MotdMessage < BasicUserMessage + end + # class for handling IRC user messages. Includes some utilities for handling # the message, for example in plugins. # The +message+ member will have any bot addressing "^bot: " removed @@ -339,7 +355,7 @@ module Irc # 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) @@ -440,8 +456,10 @@ module Irc # 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 @@ -453,9 +471,30 @@ module Irc end end + # class to manage mode changes + class ModeChangeMessage < BasicUserMessage + attr_accessor :modes + 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 @@ -467,11 +506,14 @@ module Irc # 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 @@ -491,4 +533,7 @@ module Irc # same as a join, but can have a message too class PartMessage < JoinMessage end + + class UnknownMessage < BasicUserMessage + end end