diff options
-rw-r--r-- | lib/rbot/ircbot.rb | 7 | ||||
-rw-r--r-- | lib/rbot/message.rb | 13 | ||||
-rw-r--r-- | lib/rbot/plugins.rb | 3 |
3 files changed, 20 insertions, 3 deletions
diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb index 9a6685da..f9948750 100644 --- a/lib/rbot/ircbot.rb +++ b/lib/rbot/ircbot.rb @@ -668,9 +668,10 @@ class Bot @plugins.delegate("kick", m) } @client[:invite] = proc {|data| - if data[:target] == myself - join data[:channel] if @auth.allow?("join", data[:source], data[:source].nick) - end + m = InviteMessage.new(self, server, data[:source], data[:target], data[:channel]) + + @plugins.delegate("listen", m) + @plugins.delegate("invite", m) } @client[:changetopic] = proc {|data| m = TopicMessage.new(self, server, data[:source], data[:channel], data[:topic]) diff --git a/lib/rbot/message.rb b/lib/rbot/message.rb index 35100802..aa825e13 100644 --- a/lib/rbot/message.rb +++ b/lib/rbot/message.rb @@ -419,6 +419,19 @@ module Irc end end + # class to manage IRC INVITEs + # +address?+ can be used as a shortcut to see if the bot was invited, + # which should be true except for server bugs + class InviteMessage < BasicUserMessage + # channel user was invited to + attr_reader :channel + + def initialize(bot, server, source, target, channel, message="") + super(bot, server, source, target, message) + @channel = channel + end + end + # class to pass IRC Nick changes in. @message contains the old nickame, # @sourcenick contains the new one. class NickMessage < BasicUserMessage diff --git a/lib/rbot/plugins.rb b/lib/rbot/plugins.rb index 6f308609..9d633c1b 100644 --- a/lib/rbot/plugins.rb +++ b/lib/rbot/plugins.rb @@ -95,6 +95,9 @@ module Plugins Called when a user (or the bot) is kicked from a channel the bot is in. + invite(InviteMessage):: + Called when the bot is invited to a channel. + join(JoinMessage):: Called when a user (or the bot) joins a channel |