55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
|
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
|
||
|
}
|