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. | # Metafridge Jabber/Twitter Bot - Version 0.3 | ||
# 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) | ||
if (msg.body == '/last' || msg.body == '/last+time') | |||
begin | |||
Net::HTTP.start('twitter.com') {|http| | |||
req = Net::HTTP::Get.new('/statuses/user_timeline.xml') | |||
puts " | 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') | ||
@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" | |||
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 |