]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
factoids plugin: fact command (get a random fact). Remove fact command from chucknorr...
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 4 Nov 2007 01:24:06 +0000 (01:24 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 4 Nov 2007 01:24:06 +0000 (01:24 +0000)
data/rbot/plugins/chucknorris.rb
data/rbot/plugins/factoids.rb

index 78327ccf59a5ffa262e67f205989b24c4bab2465..bf9d70f46827816a7f57941c1d9d365c2c85a8d6 100644 (file)
@@ -43,7 +43,7 @@ class ChuckNorrisPlugin < Plugin
   
   # HELP!
   def help(plugin, topic="chuck")
-    "fact|chuck|norris|chucknorris [min_rating] => \"fact\" shows a random Chuck Norris fact (optional minimum rating from 1-10, default=6.0)."
+    "chuck|norris|chucknorris [min_rating] => show a random Chuck Norris fact (optional minimum rating from 1-10, default=6.0)."
     #\"fact [person]\" shows a fact about someone in the channel. 
   end
 
@@ -67,7 +67,7 @@ end
 
 plugin = ChuckNorrisPlugin.new
 
-plugin.map 'fact :minrating', :action => 'fact', :defaults => {:minrating=>MIN_RATING}
+plugin.map 'fact :minrating', :action => 'fact', :defaults => {:minrating=>MIN_RATING}
 plugin.map 'chucknorris :minrating', :action => 'fact', :defaults => {:minrating=>MIN_RATING}
 plugin.map 'chuck :minrating', :action => 'fact', :defaults => {:minrating=>MIN_RATING}
 plugin.map 'norris :minrating', :action => 'fact', :defaults => {:minrating=>MIN_RATING}
index eee1dfaaf00d30d084d0617bd31e070f725bf9a6..d9966fa8ccaefbdcd0364dc2ede7afb9e07503e8 100644 (file)
@@ -149,9 +149,35 @@ class FactoidsPlugin < Plugin
     end
   end
 
+  def fact(m, params)
+    known = nil
+    if params[:words].empty?
+      if @factoids.empty?
+        m.reply _("I know nothing")
+        return
+      end
+      known = @factoids
+    else
+      rx = Regexp.new(params[:words].to_s, true)
+      known = @factoids.grep(rx)
+      if known.empty?
+        m.reply _("I know nothing about %{words}" % params)
+        return
+      end
+    end
+    fact = known.pick_one
+    idx = @factoids.index(fact)+1
+    m.reply _("fact %{idx}/%{total}: %{fact}" % {
+      :idx => idx,
+      :total => @factoids.length,
+      :fact => fact
+    })
+  end
+
 end
 
 plugin = FactoidsPlugin.new
 plugin.map 'learn that *stuff'
 plugin.map 'forget that *stuff'
 plugin.map 'facts [about *words]'
+plugin.map 'fact [about *words]'