ketracel/src/ketracel/server.moon

55 lines
1.2 KiB
Plaintext
Raw Normal View History

2019-12-26 01:30:44 +00:00
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
}