From a22c1e21a11f136864577db64f90b0ef557c6ac2 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Wed, 31 Oct 2007 21:27:07 +0000 Subject: reaction plugin: reactions can now call commands --- data/rbot/plugins/reaction.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'data/rbot') diff --git a/data/rbot/plugins/reaction.rb b/data/rbot/plugins/reaction.rb index fa2dcf41..16288030 100644 --- a/data/rbot/plugins/reaction.rb +++ b/data/rbot/plugins/reaction.rb @@ -75,12 +75,14 @@ class ::Reaction def add_reply(expr, *args) @raw_replies << expr.dup - act = false + act = :reply rex = expr.dup if rex.sub!(/^act:/,'') - act = true + act = :act + elsif rex.sub!(/^(?:cmd|command):/,'') + act = :cmd end - @replies << Reply.new(self, act ? :act : :reply, rex, *args) + @replies << Reply.new(self, act, rex, *args) make_ranges return @replies.last end @@ -209,6 +211,7 @@ class ReactionPlugin < Plugin when :reply, :replies "reaction replies are simply messages that the bot will reply when a trigger is matched. " + "Replies can be prefixed by 'act:' (e.g. act:goes shopping) to signify that the bot should act instead of saying the message. " + + "Replies can be prefixed by 'cmd:' or 'command:' (e.g. cmd:lart %{who}) to issue a command to the bot. " + "Replies can use the %{key} syntax to access one of the following keys: " + "who (the user that said the trigger), bot (the bot's own nick), " + "target (the first word following the trigger), what (whatever follows target), " + @@ -258,7 +261,13 @@ class ReactionPlugin < Plugin debug "picked #{reply}" return unless reply args = reply.apply(subs) - m.__send__(*args) + if args[0] == :cmd + new_m = PrivMessage.new(@bot, m.server, m.source, m.target, @bot.nick+": "+args[1]) + @bot.plugins.delegate "listen", new_m + @bot.plugins.privmsg(new_m) if new_m.address? + else + m.__send__(*args) + end end def find_reaction(trigger) -- cgit v1.2.3