]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/markov.rb
bans plugin: badword checks on plain message
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / markov.rb
index bd7a673efbf1cdf0076e23cb446e016af3ab8e03..dcf3b77679dc7e5ad304fa96a74f5efd8ba16d3b 100644 (file)
@@ -32,7 +32,6 @@ class MarkovPlugin < Plugin
       @bot.config['markov.probability'] = @registry['probability']
       @registry.delete('probability')
     end
-    @lastline = false
   end
 
   def generate_string(word1, word2)
@@ -128,7 +127,7 @@ class MarkovPlugin < Plugin
 
   def probability(m, params)
     if params[:probability]
-      @bot.config['probability'] = params[:probability].to_i
+      @bot.config['markov.probability'] = params[:probability].to_i
       m.okay
     else
       m.reply _("markov has a %{prob}% chance of chipping in") % { :prob => probability? }
@@ -191,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
 
@@ -205,16 +204,18 @@ class MarkovPlugin < Plugin
     
     wordlist = message.split(/\s+/)
     return unless wordlist.length >= 2
-    @lastline = message
-    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