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 !m.in_thread && (tmpl.options[:thread] || tmpl.options[:threaded])
+ if !m.in_thread and (tmpl.options[:thread] or tmpl.options[:threaded]) and
+ (defined? WebServiceUser and not m.source.instance_of? WebServiceUser)
+ # Web service: requests are handled threaded anyway and we want to
+ # wait for the responses.
+
+ # since the message action is in a separate thread, the message may be
+ # delegated to unreplied() before the thread has a chance to actually
+ # mark it as replied. since threading is used mostly for commands that
+ # are known to take some processing time (e.g. download a web page) before
+ # giving an output, we just mark these as 'replied' here
+ m.replied = true
Thread.new do
begin
@parent.send(action, m, options)
mul = multi? ? " multi" : " single"
opt = optional? ? " optional" : " needed"
if @regexp
- reg = " regexp=%s index=%d" % [@regexp, @index]
+ reg = " regexp=%s index=%s" % [@regexp, @index]
else
reg = nil
end