#!/usr/bin/ruby#### an experimental irc bot##require 'socket'channel = '#hackdmz'server = 'ircd.hackdmz.net'port = 6667username = 'rubybot'hostname = 'hackdmz.net'servername = 'ircd.hackdmz.net'realname = ':rubybot'nick = 'rubybot'TCPSocket.open(server, port) do |sock| sock.puts "USER #{username} #{hostname} #{servername} #{realname}\r\n" sock.puts "Nick #{nick}\r\n" sock.puts "JOIN #{channel}\r\n" while !sock.closed? line = sock.readline.chomp puts "#{line}\n" # Support PING sock.puts "PONG #{$1}\r\n" if line =~ /PING :(.*)/ # echo what people !say me to do sock.puts "PRIVMSG #{channel} :#{$1}\r\n" if line =~ /.*?PRIVMSG #{channel} :!say (.*)/ # Try to get the nowlistening track of a lastfm user if line =~ /.*?PRIVMSG #{channel} :!lfm_nl (.*)/ page = %x[wget -O - http://www.last.fm/user/'#{$1}'] if page =~ /<a href="\/music\/.*">(.*)<\/a> - <a href="\/music\/.*">(.*)<\/a>/ sock.puts "PRIVMSG #{channel} :#{$1} - #{$2}\r\n" end end # try to find out how long a lastfm user has been registered. if line =~ /.*?PRIVMSG #{channel} :!lfm_reg (.*)/ page = %x[wget -O - http://www.last.fm/usr/'#{$1}'] page.each_line do |line| if line =~ /<strong>Registered:<\/strong> (.*)$/ sock.puts "PRIVMSG #{channel} :#{$1}\r\n" end end end endend