require 'cinch'
require 'open-uri'
require 'nokogiri'
require 'cgi'
# This bot connects to urban dictionary and returns the first result
# for a given query, replying with the result directly to the sender
bot = Cinch::Bot.new do
configure do |c|
c.server = "irc.freenode.net"
c.nick = "MrCinch"
c.channels = ["#cinch-bots"]
end
helpers do
# This method assumes everything will go ok, it's not the best method
# of doing this *by far* and is simply a helper method to show how it
# can be done.. it works!
def urban_dict(query)
url = "http://www.urbandictionary.com/define.php?term=#{CGI.escape(query)}"
CGI.unescape_html Nokogiri::HTML(open(url)).at("div.definition").text.gsub(/\s+/, ' ') rescue nil
end
end
on :message, /^!urban (.+)/ do |m, term|
m.reply(urban_dict(term) || "No results found", true)
end
end
bot.start
# injekt> !urban cinch
# MrCinch> injekt: describing an action that's extremely easy.