]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/messagemapper.rb
web service: better integration in rbot
[user/henk/code/ruby/rbot.git] / lib / rbot / messagemapper.rb
index ca076e4ac2310506e9d171e32e31665e97424018..e154e3952c406f42eb9178f5c9a99a43ee4fc227 100644 (file)
@@ -258,7 +258,17 @@ 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 !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)
@@ -384,7 +394,7 @@ class Bot
       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