require 'net/http' @config = {} # Configuration @config['net'] = 'irc.slacked.org' @config['port'] = 6667 @config['name'] = 'RubyBot' @config['chan'] = '#lol' # Connect to IRC network socket = TCPSocket.new(@config['net'], @config['port']) # Send NICK, USER, and JOIN socket.puts("NICK #{@config['name']}\r\n") socket.puts("USER #{@config['name']} 0 0 #{@config['name']}\r\n") socket.puts("JOIN #{@config['chan']}\r\n") # Input thread Thread.new do loop do # Sent input to channel socket.puts("PRIVMSG #{@config['chan']} :#{gets}\r\n") end end # Print all incoming data until socket.eof? # Split incoming packet data = socket.gets.split(' ') # Choose command case data[0] when 'PING' # Reply to ping socket.puts("PONG #{data[1]}\r\n") else # PRIVMSG in channel if data[1] == 'PRIVMSG' and data[2] == @config['chan'] # Get username usr = data[0].scan(/:(.*)!/)[0][0] # Get message contents msg = data.slice(3..data.size - 1).join(' ') msg = msg[1, msg.length - 1] # Print it puts "#{usr}: #{msg}" end end end