]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/twitter.rb
weather plugin: fix 163
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / twitter.rb
index daa237c07158390a44660b7453efd8266112540d..ef0d05b639e60be27a7395aaae7dd9c4107ef841 100644 (file)
@@ -7,6 +7,7 @@
 # Author:: Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com>
 #
 # Copyright:: (C) 2007 Carter Parks
+# Copyright:: (C) 2007 Giuseppe Bilotta
 #
 # Users can setup their twitter username and password and then begin updating
 # twitter whenever
@@ -15,6 +16,10 @@ require 'rexml/rexml'
 require 'cgi'
 
 class TwitterPlugin < Plugin
+  Config.register Config::IntegerValue.new('twitter.status_count',
+    :default => 1, :validate => Proc.new { |v| v > 0 && v <= 10},
+    :desc => "Maximum number of status updates shown by 'twitter status'")
+
   def initialize
     super
 
@@ -49,8 +54,8 @@ class TwitterPlugin < Plugin
 
     user = URI.escape(nick)
 
-    # TODO configurable count
-    uri = "http://twitter.com/statuses/user_timeline/#{user}.xml?count=3"
+    count = @bot.config['twitter.status_count']
+    uri = "http://twitter.com/statuses/user_timeline/#{user}.xml?count=#{count}"
 
     response = @bot.httputil.get(uri, :headers => @header, :cache => false)
     debug response
@@ -95,7 +100,20 @@ class TwitterPlugin < Plugin
     pass = URI.escape(@registry[m.sourcenick + "_password"])
     uri = "http://#{user}:#{pass}@twitter.com/statuses/update.xml"
 
-    body = "status=#{CGI.escape(params[:status].to_s)}"
+    msg = params[:status].to_s
+
+    if msg.length > 160
+      m.reply "your status message update is too long, please keep it under 140 characters if possible, 160 characters maximum"
+      return
+    end
+
+    if msg.length > 140
+      m.reply "your status message is longer than 140 characters, which is not optimal, but I'm going to update anyway"
+    end
+
+    source = "source=rbot"
+    msg = "status=#{CGI.escape(msg)}"
+    body = [source,msg].join("&")
 
     response = @bot.httputil.post(uri, body, :headers => @header)
     debug response