irce = require "irce" socket = require "socket" config = server: "127.0.0.1" nick: os.getenv("IRC_NICK") or "Ketracel" user: os.getenv("IRC_USER") or "white" real: os.getenv("IRC_REAL") or "The favorite of the Jem'Hadar" oper: os.getenv("IRC_OPER") channels: { "#ketracel", "#opers" } debug: os.getenv("KETRACEL_DEBUG") irc = irce.new! running = true -- load IRC modules assert irc\load_module require "irce.modules.base" assert irc\load_module require "irce.modules.message" assert irc\load_module require "irce.modules.channel" assert irc\load_module require "irce.modules.motd" assert irc\load_module require "irce.modules.oper" client = socket.tcp! client\settimeout 1 -- irc engine callbacks irc\set_send_func (message) => client\send message if config.debug irc\set_callback irce.RAW, (send, message) => print string.format "%s %s", (send and ">" or "<"), message irc\set_callback "CTCP", (sender, origin, command, params, pm) => if command == "VERSION" self\CTCP_REPLY origin, "VERSION", string.format("Ketracel white - dev (%s, %s)", irce._VERSION, _VERSION) irc\set_callback "001", (...) => for k, chan in ipairs config.channels assert irc\JOIN chan irc\set_callback "PRIVMSG", (sender, origin, message, pm) => if message == "?quit" assert self\QUIT "Ran out of white" running = false -- connect to irc server assert client\connect config.server, 6667 assert irc\NICK config.nick assert irc\USER config.user, config.real print "Ketracel loaded using " .. irce._VERSION .. " running on " .. _VERSION if config.oper irc\OPER config.nick, config.oper print "IRC operator status requested for " .. config.nick while running irc\process client\receive! client\close!