All pastes #763441 Raw Edit

Mine

public text v1 · immutable
·published 2007-11-06 13:52 UTC
rendered paste body
#!/usr/bin/ruby
##
##      an experimental irc bot
##
require 'socket'

channel = '#hackdmz'
server = 'ircd.hackdmz.net'
port = 6667
username = 'rubybot'
hostname = 'hackdmz.net'
servername = 'ircd.hackdmz.net'
realname = ':rubybot'
nick = 'Boogers'

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 :(.*)/

                # !help list commands
                sock.puts "PRIVMSG #{channel} :I support: [ !help !say !do !lfm_last !nick !uptime ]\r\n" if line =~ /.*?PRIVMSG #{channel} :!help/

                # !say echo what people !say me to do
                sock.puts "PRIVMSG #{channel} :#{$1}\r\n" if line =~ /.*?PRIVMSG #{channel} :!say (.*)/

                # !do
                sock.puts "PRIVMSG #{channel} :\001ACTION #{$1}\001\r\n" if line =~ /.*?PRIVMSG #{channel} :!do (.*)/

                # !lfm_last Try to get the nowlistening track of a lastfm user
                if line =~ /.*?PRIVMSG #{channel} :!lfm_last (.*)/
                        user = $1
                        page = %x[wget -O - http://www.last.fm/user/'#{user}']

                        flag = 0
                        page.each_line do |line|
                                if flag == 0
                                        if line =~ /<a.*>(.*)<\/a> .* <a.*>(.*)<\/a>/
                                                sock.puts "PRIVMSG #{channel} :Latest track for #{user}: #{$1} - #{$2}\r\n"
                                                flag = 1
                                        end
                                end
                        end
                        sock.puts "PRIVMSG #{channel} :Unable to find last.fm information for #{user}.\r\n" if flag == 0
                end

                # !uptime
                if line =~ /:(.*)!.*?PRIVMSG #{channel} :!uptime/
                        user = $1
                        uptime = %x[uptime]
                        sock.puts "PRIVMSG #{channel} :#{user}: #{uptime}\r\n"
                end

                # !nick functionality
                sock.puts "Nick #{$1}\r\n" if line =~ /.*?PRIVMSG #{channel} :!nick (.*)/
        end
end