// Haxe RawBot v1.0 // Connects to IRC and joins #lobby // // Issues: // - Does not detect connection loss import sys.net.Host; import sys.net.Socket; 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(); 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 = Std.string(irc.input.readLine()); // Detect connection loss (from PyBot, not working in Haxe) //if (dataReceived == "b''") {break;} 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 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'); } } // End of program Sys.println(""); Sys.println('Connection terminated.'); } }