All pastes #1775415 Raw Edit

clueless

public ruby v1 · immutable
#1775415 ·published 2010-02-02 09:49 UTC
rendered paste body
#!/usr/bin/rubyrequire "socket"#bara ren data$SAFE=1#En IRC Classclass IRC	def initialize(server, port, nick, channel)		@server = server		@port = port		@nick = nick		@channel = channel	end	def send(s)		#Skicka ett mess till irc servern och skriv det på skärmen		puts "--> #{s}"		@irc.send "#{s}\n", 0	end	def connect()		#anslut till servern		@irc = TCPSocket.open(@server, @port)		send "User Weaselbot :Mr Weasel"		send "NICK #{@nick}"		send "JOIN #{@channel}"	end	def evaluate(s)		#se till att vi har ett giltigt uttryck och om vi har så använder vi det		if s =~ /^[-+*\/\d\s\eE.()]*$/ then			begin				s.untaint				return eval(s).to_s			rescue Exception => detail				puts detail.message()			end		end		return "Error"	end	def handle_server_input(s)		#case på saker som skickas från servern och vi svarar på dem		case s.strip			when /^PING :(.+)$/i				puts "[ Server ping, answering with PONG ]"				send "PONG :#{$1}"			else				puts s		end	end	def main_loop()		#ska köras tills vi disconnectar		while true			ready = select([@irc, $stdin], nil, nil, nil)			next if !ready			for s in ready[0]				if s == $stdin then					return if $stdin.eof					s = $stdin.gets					send s				elsif s == @irc then					return if @irc.eof					s = @irc.gets					handle_server_input(s)				end			end		end	endend#slut på klassen IRCirc = IRC.new('irc.freenode.net',6667,'weaseldrone','#le_test')irc.connect()begin	irc.main_loop()rescue Interruptrescue Exception => detail	puts detail.message()	print detail.backtrace.join("\n")	retryend