]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
A fixed chuck norris plugin. (The XML feed was disabled, so this one just scrapes...
authorChris Gahan <chris@ill-logic.com>
Wed, 22 Feb 2006 00:14:43 +0000 (00:14 +0000)
committerChris Gahan <chris@ill-logic.com>
Wed, 22 Feb 2006 00:14:43 +0000 (00:14 +0000)
data/rbot/plugins/chucknorris.rb

index 0eee0c171e4c3fbf0e30b2316a69f10b7eb8b906..362462e626a8b019babfee762f3eda4f77eaccd6 100644 (file)
@@ -1,33 +1,24 @@
-require 'rexml/document'
 require 'uri/common'
+require 'cgi'
 
 class ChuckNorrisPlugin < Plugin
-  include REXML
 
   def help(plugin, topic="")
-    "chucknorris [<howmany>=1] => show a random chuck norris quote, or specify <howmany> quotes you want (maximum is 6)."
+    "chucknorris => show a random chuck norris fact."
   end
   
   def chucknorris(m, params)
-    howmany = params[:howmany].to_i
-    howmany = 6 if howmany > 6
-
-    factdata = @bot.httputil.get(URI.parse('http://www.4q.cc/chuck/rss.php'))
+    factdata = @bot.httputil.get(URI.parse('http://www.4q.cc/index.php?pid=fact&person=chuck'))
     unless factdata
-      m.reply "Chuck Norris' facts roundhouse kicked the internet connection and totally wasted it."
+      m.reply "This Chuck Norris fact made my brain explode. (HTTP error)"
       return
     end
 
-    begin
-      doc = Document.new factdata
-      doc.get_elements('rss/channel/item')[1..howmany].each do |fact|
-        m.reply fact.elements['description'].text
-      end
-
-    rescue ParseException => e
-      puts "Error parsing chuck norris quote: #{e.inspect}"
-      m.reply "Chuck Norris' facts were so intense that they blew up my XML parser."
 
+    if factdata =~ %r{<h1> And now a random fact about Chuck Norris...</h1>(.+?)<hr />}
+      m.reply(CGI::unescapeHTML($1))
+    else
+      m.reply "This Chuck Norris fact punched my teeth in. (Parse error)"
     end
 
   end
@@ -35,5 +26,4 @@ class ChuckNorrisPlugin < Plugin
 end
 
 plugin = ChuckNorrisPlugin.new
-plugin.map 'chucknorris :howmany', :defaults => {:howmany => 1},
-                                   :requirements => {:howmany => /^-?\d+$/} 
+plugin.map 'chucknorris'