ketracel/src/ketracel/test.moon

48 lines
1.1 KiB
Plaintext
Raw Normal View History

2019-12-25 22:48:28 +00:00
irce = require "irce"
socket = require "socket"
get_client_modules = (irc) ->
irc\load_module require "irce.modules.base"
irc\load_module require "irce.modules.message"
irc\load_module require "irce.modules.channel"
class Client
new: (nick) =>
@nick = nick
sock = socket.tcp!
2019-12-25 22:48:28 +00:00
irc = irce.new!
get_client_modules irc
irc\set_send_func (message) =>
print string.format "[client %s] > %s", nick, message if os.getenv "DEBUG"
sock\send message
2019-12-25 22:48:28 +00:00
sock\connect "127.0.0.1", 6667
2019-12-25 22:48:28 +00:00
irc\NICK nick
irc\USER nick, nick
@socket = sock
2019-12-25 22:48:28 +00:00
@irc = irc
wait_for: (event, checker) =>
2019-12-25 22:48:28 +00:00
running = true
nick = @nick
@irc\set_callback event, (...) =>
if checker and not checker ...
return
print string.format "[client %s] ! got event %s", nick, event if os.getenv "DEBUG"
2019-12-25 22:48:28 +00:00
running = false
while running
msg = assert @socket\receive!
print string.format "[client %s] < %s", nick, msg if os.getenv "DEBUG"
2019-12-25 22:48:28 +00:00
@irc\process msg
@irc\clear_callback event
2019-12-25 22:48:28 +00:00
quit: =>
@irc\QUIT "bye"
@socket\close!
{
:Client
}