Metafridge Jabber Support

aus Metalab Wiki, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Zur Navigation springenZur Suche springen

Ein Bot in Rails, welcher per Jabber Account neue Messages entgegen nimmt und an den Fridge sendet; Sollte eigentlich primär für den Twitterbot sein, damit man auch 'direct' messages an den Twitter Bot schicken kann, die dann angezeigt werden. Aber nachdem Twitter im Moment kein Jabber anbietet (Performance Probleme) ists nun mehr 'nur' ein Jabber Bot :) Benoetigt 'xmpp4r' gem;

#!/usr/bin/env ruby

require 'xmpp4r'
require 'net/http'
require 'cgi'
require 'iconv'
require 'uri'
require 'open-uri' 

client = Jabber::Client.new(Jabber::JID.new('metafridge@jabber.metalab.at/metalab'))
client.connect
client.auth('PASSWORT') 

client.send(Jabber::Presence.new.set_show(:chat).set_status('Feed me.')) 

client.add_message_callback { |msg|
 if msg.type == :chat
  puts "\n------INCOMING-------\nFrom: #{msg.from}\nMessage:#{msg.body}\n--------------------\n"
  begin
    incoming = URI.encode(msg.body)
    @spl = incoming.split(/:%20/)
    if (@spl.length == 2)
      puts "\n------SENDING TO FRIDGE-------\nUsername: #{@spl[0]}\nMessage:#{@spl[1]}\n--------------------\n"
      open("http://fridge.metalab.at:1337/cgi-bin/post_text.cgi?lauftext=#{@spl[1]}&playfunction=1").read
      puts "\n-----SENT-----\n"
    else   
      open("http://fridge.metalab.at:1337/cgi-bin/post_text.cgi?lauftext=#{incoming}&playfunction=1").read
      puts "\n-----SENT-----\n"
    end
  rescue
    puts "Keine Korrekte Message  "
  end
 end
}

Thread.stop