summaryrefslogtreecommitdiff
path: root/lib/rbot
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbot')
-rw-r--r--lib/rbot/message.rb7
-rw-r--r--lib/rbot/messagemapper.rb2
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/rbot/message.rb b/lib/rbot/message.rb
index 99f4bb7f..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"]
diff --git a/lib/rbot/messagemapper.rb b/lib/rbot/messagemapper.rb
index b08a503f..2b9fc5e3 100644
--- a/lib/rbot/messagemapper.rb
+++ b/lib/rbot/messagemapper.rb
@@ -207,7 +207,7 @@ class Bot
debug "checking auth for #{auth}"
if m.bot.auth.allow?(auth, m.source, m.replyto)
debug "template match found and auth'd: #{action.inspect} #{options.inspect}"
- if tmpl.options[:thread] || tmpl.options[:threaded]
+ if m.thread || (m.thread == nil && tmpl.options[:thread] || tmpl.options[:threaded])
Thread.new do
begin
@parent.send(action, m, options)