diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/rbot/plugins/search.rb | 32 |
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) |