]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/markov.rb
uno plugin: fix check for card presence
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / markov.rb
index 5bae9bbd95ad8c55ad3b3c2c035b33f8befeea6b..dcf3b77679dc7e5ad304fa96a74f5efd8ba16d3b 100644 (file)
@@ -190,8 +190,8 @@ class MarkovPlugin < Plugin
     end
   end
   
-  def listen(m)
-    return unless m.kind_of?(PrivMessage) && m.public?
+  def message(m)
+    return unless m.public?
     return if m.address?
     return if ignore? m.source
 
@@ -204,15 +204,18 @@ class MarkovPlugin < Plugin
     
     wordlist = message.split(/\s+/)
     return unless wordlist.length >= 2
-    word1, word2 = :nonword, :nonword
-    wordlist.each do |word3|
-      @registry["#{word1} #{word2}"] = @registry["#{word1} #{word2}"].push(word3)
-      word1, word2 = word2, word3
-    end
-    @registry["#{word1} #{word2}"] = @registry["#{word1} #{word2}"].push(:nonword)
+    Thread.new do
+      word1, word2 = :nonword, :nonword
+      wordlist.each do |word3|
+        k = "#{word1} #{word2}"
+        @registry[k] = @registry[k].push(word3)
+        word1, word2 = word2, word3
+      end
+      k = "#{word1} #{word2}"
+      @registry[k] = @registry[k].push(:nonword)
 
-    return if m.replied?
-    random_markov(m, message)
+      random_markov(m, message) unless m.replied?
+    end
   end
 end