// Haxe RawBot v1.1 // Attempts to catch connection loss import sys.net.Host; import sys.net.Socket; using StringTools; class HxBot { public static function main() { var server = new Host('127.0.0.1'); var port = 6667; var channel = '#lobby'; var botnick = 'HxRawBot'; // Program begins Sys.println('Connecting to ${Std.string(server)}:${Std.string(port)}...'); Sys.println(""); var irc = new Socket(); // Need to put a try-catch in here probably irc.connect(server, port); irc.write('NICK ${Std.string(botnick)}\n'); irc.write('USER ${Std.string(botnick)} ${Std.string(botnick)} ${Std.string(botnick)} :Haxe IRC bot\r\n'); irc.write('JOIN :${Std.string(channel)}\r\n'); // Initialize our data vars var data; var source; // Main program loop while (true) { data = irc.input.readLine(); // The good one Sys.println(data); // Respond to server pings if (data.indexOf("PING") == 0) { irc.write('PONG ${data.substring(data.indexOf(" ")+1)}\r\n'); } // Auto-Rejoin when kicked // TODO: Make sure this only happens when THIS BOT is kicked! if (data.indexOf("KICK #") == data.indexOf(" ")+1) { source = data.substring(data.indexOf("#"), data.indexOf(" ", data.indexOf("#"))); irc.write('JOIN ${source}\r\n'); } // Shutdown command if (data.toLowerCase().indexOf("!quit") != -1) { irc.write('QUIT :Shutdown\r\n'); } } Sys.println(""); Sys.println("Connection terminated."); } }