irce = require "irce" ln = require "ln" socket = require "socket" class Server new: (config) => @config = config socket = socket.tcp! irc = irce.new! irc\load_module require "irce.modules.ngircd" irc\load_module require "ketracel.bots.ketracel" irc\set_send_func (message) => socket\send message if config.debug ln.log {"msg": "debug enabled"}, config irc\set_callback irce.RAW, (send, message) => sigil = send and ">" or "<" print string.format "%s %s", (send and ">" or "<"), message ln.log msg: "Ketracel loaded", irce: irce._VERSION, lua: _VERSION assert socket\connect config.server, 6667 assert irc\REGISTER config.spass, "ketracel", "0.0.1", config.sname, config.sreal, config.nicklen @irc = irc @socket = socket wait_for: (event) => running = true @irc\set_callback event, => running = false while running @irc\process @socket\receive! run: => running = true @irc\set_callback "DIE", (why) => ln.err why, {msg: "told to die"} running = false while running @irc\process @socket\receive! @socket\close! { :Server }