summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/rbot/plugins/markov.rb2
-rw-r--r--data/rbot/plugins/salut.rb2
-rw-r--r--data/rbot/plugins/url.rb2
-rw-r--r--lib/rbot/message.rb26
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