]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/delicious.rb
ruby 1.9: get rid of colons in case statements
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / delicious.rb
index 8ed6d5b7bd4024c9e850f3250a6064e2e297b214..53da34b41da15917003de9d2baa84d1879747dac 100644 (file)
@@ -18,17 +18,17 @@ class DeliciousPlugin < Plugin
 
   attr_accessor :last_error
 
-  BotConfig.register BotConfigStringValue.new('delicious.user',
+  Config.register Config::StringValue.new('delicious.user',
     :default => '', :desc => "Username on del.icio.us")
-  BotConfig.register BotConfigStringValue.new('delicious.password',
+  Config.register Config::StringValue.new('delicious.password',
     :default => '', :desc => "Password on del.icio.us")
-  BotConfig.register BotConfigStringValue.new('delicious.user_fmt',
+  Config.register Config::StringValue.new('delicious.user_fmt',
     :default => 'user:%s', :desc => "How to convert users to tags?")
-  BotConfig.register BotConfigStringValue.new('delicious.channel_fmt',
+  Config.register Config::StringValue.new('delicious.channel_fmt',
     :default => 'channel:%s', :desc => "How to convert channels to tags?")
 
   def help(plugin, topic="")
-    "delicious => show url of del.icio.us feed of bot url log."
+    "logs urls seen to del.icio.us. you can use [tags: tag1 tag2 ...] to provide tags. special tags are: #{Underline}!hide#{Underline} - log the url as non-shared, #{Underline}!skip#{Underline} - don't log the url. Commands: !#{Bold}delicious#{Bold} => show url of del.icio.us feed of bot url log. "
   end
 
   def diu_req(verb, opts = {})
@@ -46,7 +46,7 @@ class DeliciousPlugin < Plugin
   end
 
   def diu_add(url, opts = {})
-    old = diu_req('get', :url => url).root.get_elements('/posts/post')[0] rescue ni
+    old = diu_req('get', :url => url).root.get_elements('/posts/post')[0] rescue nil
     opts[:tags] ||= ''
     if old
       opts[:description] ||= old.attribute('description').to_s
@@ -62,6 +62,10 @@ class DeliciousPlugin < Plugin
 
   def event_url_added(url, options = {})
     debug("called with #{url}, #{options.inspect}")
+    if @bot.config['delicious.user'].empty?
+      debug "del.icio.us plugin not configured, skipping"
+      return
+    end
     opts = Hash.new
     opts[:description] = options[:title] || options[:info] || url
     opts[:extended] = options[:extra] if options[:extra]
@@ -69,6 +73,23 @@ class DeliciousPlugin < Plugin
     if options[:channel]
       opts[:tags] << ' ' + (@bot.config['delicious.channel_fmt'] % options[:channel])
     end
+    if options[:ircline] and options[:ircline].match(/\[tag(?:s)?:([^\]]+)\]/)
+      tags = $1
+      tags.tr(',', ' ').split(/\s+/).each do |t|
+        if t.sub!(/^!/, '')
+          case t
+          when 'nolog', 'no-log', 'dont-log', 'dontlog', 'skip'
+            debug "skipping #{url} on user request"
+            return
+          when 'private', 'unshared', 'not-shared', 'notshared', 'hide'
+            debug "hiding #{url} on user request"
+            opts[:shared] = 'no'
+          end
+        else
+          opts[:tags] << ' ' + t
+        end
+      end
+    end
     debug "backgrounding del.icio.us api call"
     Thread.new { diu_add(url, opts) }
   end