/plugins/duck.rb

https://github.com/tykeal/TykeBot · Ruby · 27 lines · 24 code · 3 blank · 0 comment · 0 complexity · 039095a45208096418a2c36ccada99e2 MD5 · raw file

  1. config :url,:default=>"http://api.duckduckgo.com/?q=!ducky+%s&format=json&no_redirect=1",:description=>'URL of the duckduckgo.com search api'
  2. command do
  3. description "Lookup info using duckduckgo.com"
  4. action(:required=>:q,:html=>true) do |message,q|
  5. begin
  6. search(q)
  7. rescue
  8. error
  9. "Something went awry..."
  10. end
  11. end
  12. end
  13. helper :search do |q|
  14. json = JSON.parse(http_get(config.url % CGI.escape(q)).body)
  15. abstract = json['AbstractText']
  16. result = abstract ? abstract + "<br/>" : ""
  17. related_topics = json['RelatedTopics']
  18. redirect = json["Redirect"]
  19. summary = related_topics.collect do |topic|
  20. topic['Result'] + "<br/>"
  21. end
  22. result += (redirect ? redirect + "<br/>" : "") +
  23. (summary ? summary.to_s : "")
  24. end