54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
irce = require "irce"
|
|
socket = require "socket"
|
|
print irce._VERSION .. " running on " .. _VERSION
|
|
|
|
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" }
|
|
|
|
irc = irce.new!
|
|
running = true
|
|
|
|
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"
|
|
|
|
client = socket.tcp!
|
|
irc\set_send_func (message) =>
|
|
client\send message
|
|
client\settimeout 1
|
|
|
|
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
|
|
|
|
assert client\connect config.server, 6667
|
|
|
|
assert irc\NICK config.nick
|
|
assert irc\USER config.user, config.real
|
|
|
|
if config.oper
|
|
client\send "OPER " .. config.nick .. " " .. config.oper .. "\r\n"
|
|
|
|
while running
|
|
irc\process client\receive!
|
|
|
|
client\close!
|