Zum Inhalt springen

Metafridge Jabber Support: Unterschied zwischen den Versionen

Consti (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Consti (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 4: Zeile 4:
Benoetigt 'xmpp4r' gem;
Benoetigt 'xmpp4r' gem;


Version 0.2: Bot gibt jetzt ein 'Thanks!' zurueck + ich hab mein privates Jabber Icon raus :)
:Version 0.3: Das Command '/last' gibt jetzt die letzten 10 Metafridge Nachrichten aus - '/last+time' ist mit Timestamp;
:Version 0.2: Bot gibt jetzt ein 'Thanks!' zurueck + ich hab mein privates Jabber Icon raus :)


  #!/usr/bin/env ruby
  #!/usr/bin/env ruby
  # Metafridge Jabber/Twitter Bot - Version 0.2
  # Metafridge Jabber/Twitter Bot - Version 0.3
# SAT July 26 2008
  # Consti AT Consti PUNKT de
  # Consti AT Consti PUNKT de
  require 'xmpp4r'
  require 'xmpp4r'
Zeile 16: Zeile 16:
  require 'uri'
  require 'uri'
  require 'open-uri'
  require 'open-uri'
 
  client = Jabber::Client.new(Jabber::JID.new('metafridge@jabber.metalab.at/metalab'))
  client = Jabber::Client.new(Jabber::JID.new('metafridge@jabber.metalab.at/metalab'))
  client.connect
  client.connect
  client.auth('PASSWORT')  
  client.auth('PASSWORT')
   
   
  client.send(Jabber::Presence.new.set_show(:chat).set_status('Feed me.'))
  client.send(Jabber::Presence.new.set_show(:chat).set_status('Feed me.'))
Zeile 28: Zeile 28:
     begin
     begin
       incoming = URI.encode(msg.body)
       incoming = URI.encode(msg.body)
       @spl = incoming.split(/:%20/)
       if (msg.body == '/last' || msg.body == '/last+time')
      if (@spl.length == 2)
        begin
        puts "\n------SENDING TO FRIDGE-------\nUsername: #{@spl[0]}\nMessage:#{@spl[1]}\n--------------------\n"
        Net::HTTP.start('twitter.com') {|http|
        open("http://fridge.metalab.at:1337/cgi-bin/post_text.cgi?lauftext=#{@spl[1]}&playfunction=1").read
          req = Net::HTTP::Get.new('/statuses/user_timeline.xml')
         puts "\n-----SENT-----\n"
          req.basic_auth 'metafridge', 'metafoo'
          response = http.request(req)
          resp = response.body.to_s
          lastmsgs = resp.scan(/<text>(.*)<\/text>$/)
          lasttime = resp.scan(/<created_at>(.*)<\/created_at>$/)
          jabresponse = "The last 10 Metafridge messages:\n---------------------\n"
          for i in 0...10
            j = i+1
            jabresponse += "#{j}: '#{lastmsgs[i]}'\n"
            if (msg.body == '/last+time')
              jabresponse += "(#{lasttime[i]})\n"
              jabresponse += "---------------------\n"
            end
          end
          m = Jabber::Message.new(msg.from, jabresponse).set_type(:normal).set_id('1').set_subject('last 10 metafridge messages')
          client.send m
        }
         rescue
          puts "timeout"
        end
       else
       else
         puts "\n------SENDING TO FRIDGE-------\nMessage:#{incoming}\n--------------------\n"   
         if (msg.from == 'twitter@twitter.com')
        open("http://fridge.metalab.at:1337/cgi-bin/post_text.cgi?lauftext=#{incoming}&playfunction=1").read
          @spl = incoming.split(/:%20/)   
        puts "\n-----SENT-----\n"
          if (@spl.length == 2)
        puts "\n------SENDING RESPONSE-------\nTo:#{msg.from}\nMessage: Thanks!\n--------------------\n"
            puts "\n------SENDING TO FRIDGE-------\nUsername: #{@spl[0]}\nMessage:#{@spl[1]}\n--------------------\n"
        m = Jabber::Message.new(msg.from, 'Thanks!').set_type(:normal).set_id('1').set_subject('Thanks!')
            open("http://fridge.metalab.at:1337/cgi-bin/post_text.cgi?lauftext=#{@spl[1]}&playfunction=1").read
        client.send m
            puts "\n-----SENT-----\n"
      end
          end 
        else
          puts "\n------SENDING TO FRIDGE-------\nMessage:#{incoming}\n--------------------\n"   
          open("http://fridge.metalab.at:1337/cgi-bin/post_text.cgi?lauftext=#{incoming}&playfunction=1").read
          puts "\n-----SENT-----\n"
          puts "\n------SENDING RESPONSE-------\nTo:#{msg.from}\nMessage: Thanks!\n--------------------\n"
          m = Jabber::Message.new(msg.from, 'Thanks!').set_type(:normal).set_id('1').set_subject('Thanks!')
          client.send m
        end
    end
     rescue
     rescue
       puts "Keine Korrekte Message  "
       puts "Keine Korrekte Message  "
Zeile 46: Zeile 74:
   end
   end
  }
  }
  Thread.stop
  Thread.stop