X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fgrouphug.rb;h=8f89702ed6c44ba3a77b7c10c688d17b780bff98;hb=9a66dcadede5cadc00b4fde344f75a9bd78220d7;hp=4e7eaf5d97dc3495aab68cf3488f4b4be35cb1ad;hpb=86edc6b2367b3845df004d7ac5975f566bfbebfe;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/grouphug.rb b/data/rbot/plugins/grouphug.rb index 4e7eaf5d..8f89702e 100644 --- a/data/rbot/plugins/grouphug.rb +++ b/data/rbot/plugins/grouphug.rb @@ -10,15 +10,42 @@ # License:: GPL v2 class GrouphugPlugin < Plugin + REG = Regexp.new('
\s*

(.*?)

\s+
', Regexp::MULTILINE) + REGPOST = Regexp.new('title>(.*?) \| Group Hug') def initialize super @confessions = Array.new end def help( plugin, topic="" ) - return "Grouphug plugin. Confess! Usage: 'confess' for random confession, 'confess ' for specific one." + return _("Grouphug plugin. Confess! Usage: 'confess' for random confession, 'confess ' for specific one, 'confess ' to share your own confession. Confessions must be at least 10 words.") end + def post_confession(m, params) + c = params[:confession] + if c.length < 10 + diff = 10 - c.length + m.reply _("Confession must be at least 10 words. You need %{m} more.") % {:m => diff} + return + end + uri = "http://beta.grouphug.us/confess" + form_id = "form_id=confession_node_form" + op = "op=Submit" + changed = "changed=" + body = "body=#{c}" + msg = [form_id,body,changed,op].join("&") + + response = bot.httputil.post(uri, msg) + debug response.body + if response.class == Net::HTTPOK + num = response.body.scan(REGPOST) + m.reply _("Confession posted: http://beta.grouphug.us/confessions/%{n}") % {:n => num} + else + m.reply _("I couldn't share your confession.") + end + end + + def confess(m, params) opts = { :cache => false } path = "random" @@ -29,16 +56,14 @@ class GrouphugPlugin < Plugin opts.delete(:cache) data = @bot.httputil.get("http://grouphug.us/#{path}", opts) - reg = Regexp.new('
.*?

(.*?)

', Regexp::MULTILINE) - res = data.scan(reg) + res = data.scan(REG) confession = res[0][0].ircify_html confession = "no confession ##{params[:num]} found" if confession.empty? and params[:num] m.reply confession else # Cache random confessions if @confessions.empty? data = @bot.httputil.get("http://grouphug.us/#{path}", opts) - reg = Regexp.new('
.*?

(.*?)

', Regexp::MULTILINE) - res = data.scan(reg) + res = data.scan(REG) res.each do |quote| @confessions << quote[0].ircify_html end @@ -55,8 +80,11 @@ end plugin = GrouphugPlugin.new +plugin.default_auth('create', false) + plugin.map "grouphug [:num]", :thread => true, :action => :confess, :requirements => { :num => /\d+/ } plugin.map "confess [:num]", :thread => true, :action => :confess, :requirements => { :num => /\d+/ } +plugin.map "confess *confession", :thread => true, :action => :post_confession, :auth_path => 'create'