X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=data%2Frbot%2Fplugins%2Fchucknorris.rb;h=42385ff303a2b0a109835c5c7f2f002a05abf596;hb=531bc63bd14c6bc3fd98f7fbcfa2f9a01fe21eb0;hp=362462e626a8b019babfee762f3eda4f77eaccd6;hpb=ac4141a466cc992539ba076d1188cfa15b35ab6f;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/chucknorris.rb b/data/rbot/plugins/chucknorris.rb index 362462e6..42385ff3 100644 --- a/data/rbot/plugins/chucknorris.rb +++ b/data/rbot/plugins/chucknorris.rb @@ -1,29 +1,74 @@ -require 'uri/common' -require 'cgi' +require 'yaml' +require 'zlib' +MIN_RATING = 6.0 +MIN_VOTES = 25 + +# the plugin class ChuckNorrisPlugin < Plugin - def help(plugin, topic="") - "chucknorris => show a random chuck norris fact." - end - - def chucknorris(m, params) - factdata = @bot.httputil.get(URI.parse('http://www.4q.cc/index.php?pid=fact&person=chuck')) - unless factdata - m.reply "This Chuck Norris fact made my brain explode. (HTTP error)" - return + # Loadez les factes + def initialize + if path = find_facts_file('chucknorris.yml.gz') + fyml = Zlib::GzipReader.open(path).read + elsif path = find_facts_file('chucknorris.yml') + fyml = open(path).read + else + raise "Error: Couldn't find chucknorris.yml[.gz]" end + debug "+ [chucknorris] Loading #{path}..." + + @@facts = YAML.load(fyml).map{|fact,(score,votes)| votes >= MIN_VOTES ? [score,fact] : nil}.compact + debug "+ [chucknorris] #{@@facts.length} Chuck Norris facts loaded..." + debug " Random fact: #{@@facts[rand(@@facts.size)].inspect}" + + super + end + + def name + "chucknorris" + end - if factdata =~ %r{