diff options
author | Simon Hafner <hafnersimon@gmail.com> | 2009-01-21 16:49:31 +0100 |
---|---|---|
committer | dmitry kim <jason@nichego.net> | 2009-01-22 02:48:19 +0300 |
commit | 750f579b6ad2683abd50b51392e29dd1291d4d7e (patch) | |
tree | 0c88d517032dcbe495edff92a23ac245b1ef468e | |
parent | ec5745fa7abd47b8ca12bd783b0759079dff9917 (diff) |
+ (reply) config option to force reply to query
+ (reply) symbol to bypass the config option
* (plugins) fixed url according to the patch
The symbols are:
:to => :public force the message to be replied in channel (if any)
:to => :private force the message to be replied in private
:to => :auto takes core.private_replies (default)
-rw-r--r-- | data/rbot/plugins/markov.rb | 2 | ||||
-rw-r--r-- | data/rbot/plugins/salut.rb | 2 | ||||
-rw-r--r-- | data/rbot/plugins/url.rb | 2 | ||||
-rw-r--r-- | lib/rbot/message.rb | 26 |
4 files changed, 26 insertions, 6 deletions
diff --git a/data/rbot/plugins/markov.rb b/data/rbot/plugins/markov.rb index 3a1fea59..64e87556 100644 --- a/data/rbot/plugins/markov.rb +++ b/data/rbot/plugins/markov.rb @@ -187,7 +187,7 @@ class MarkovPlugin < Plugin # of the line we received return if message.index(line) == 0 @bot.timer.add_once(delay) { - m.reply line, :nick => false + m.reply line, :nick => false, :to => :public } end diff --git a/data/rbot/plugins/salut.rb b/data/rbot/plugins/salut.rb index 131821a7..c169d138 100644 --- a/data/rbot/plugins/salut.rb +++ b/data/rbot/plugins/salut.rb @@ -158,7 +158,7 @@ class SalutPlugin < Plugin end end debug "Replying #{choice}" - m.reply choice, :nick => false + m.reply choice, :nick => false, :to => :public end def reload diff --git a/data/rbot/plugins/url.rb b/data/rbot/plugins/url.rb index 826af10d..e75224cf 100644 --- a/data/rbot/plugins/url.rb +++ b/data/rbot/plugins/url.rb @@ -160,7 +160,7 @@ class UrlPlugin < Plugin if display_info > urls_displayed if reply - m.reply reply, :overlong => :truncate, + m.reply reply, :overlong => :truncate, :to => :public, :nick => (m.address? ? :auto : false) urls_displayed += 1 end diff --git a/lib/rbot/message.rb b/lib/rbot/message.rb index 8b650681..4da511ed 100644 --- a/lib/rbot/message.rb +++ b/lib/rbot/message.rb @@ -22,6 +22,10 @@ module Irc :default => ':', :wizard => true, :desc => "when replying with nick put this character after the nick of the user the bot is replying to" ) + Config.register BooleanValue.new('core.private_replies', + :default => false, + :desc => 'Should the bot reply to private instead of the channel?' + ) end end @@ -404,16 +408,32 @@ module Irc # state if the nick of the user calling the command should be prepended # :auto uses core.reply_with_nick # + # :to [:private, :public, :auto] + # where should the bot reply? + # :private always reply to the nick + # :public reply to the channel (if available) + # :auto uses core.private_replies + def reply(string, options={}) - opts = {:nick => :auto}.merge options + opts = {:nick => :auto, :to => :auto}.merge options + if opts[:nick] == :auto opts[:nick] = @bot.config['core.reply_with_nick'] end - if (opts[:nick] && self.public? && + + if !self.public? + opts[:to] = :private + elsif opts[:to] == :auto + opts[:to] = @bot.config['core.private_replies'] ? :private : :public + end + + if (opts[:nick] && + opts[:to] != :private && string !~ /(?:^|\W)#{Regexp.escape(@source.to_s)}(?:$|\W)/) string = "#{@source}#{@bot.config['core.nick_postfix']} #{string}" end - @bot.say @replyto, string, options + to = (opts[:to] == :private) ? source : @channel + @bot.say to, string, options @replied = true end |