summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/rbot/plugins/search.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb
index 827a1303..95b88a0c 100644
--- a/data/rbot/plugins/search.rb
+++ b/data/rbot/plugins/search.rb
@@ -59,6 +59,10 @@ class SearchPlugin < Plugin
def google(m, params)
what = params[:words].to_s
+ if what.match(/^define:/)
+ return google_define(m, what, params)
+ end
+
searchfor = CGI.escape what
# This method is also called by other methods to restrict searching to some sites
if params[:site]
@@ -125,6 +129,34 @@ class SearchPlugin < Plugin
end
+ def google_define(m, what, params)
+ begin
+ wml = @bot.httputil.get(GOOGLE_SEARCH + CGI.escape(what))
+ raise unless wml
+ rescue => e
+ m.reply "error googling for #{what}"
+ return
+ end
+
+ begin
+ related_index = wml.index(/Related phrases:/, 0)
+ raise unless related_index
+ defs_index = wml.index(/Definitions of <b>/, related_index)
+ raise unless defs_index
+ defs_end = wml.index(/<input/, defs_index)
+ raise unless defs_end
+ rescue => e
+ m.reply "no results found for #{what}"
+ return
+ end
+
+ related = wml[related_index...defs_index]
+ defs = wml[defs_index...defs_end]
+
+ m.reply defs.ircify_html(:a_href => Underline), :split_at => (Underline + ' ')
+
+ end
+
def lucky(m, params)
params.merge!(:lucky => true)
google(m, params)