45 lines
956 B
Plaintext
45 lines
956 B
Plaintext
|
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
|
||
|
socket = socket.tcp!
|
||
|
irc = irce.new!
|
||
|
get_client_modules irc
|
||
|
irc\set_send_func (message) =>
|
||
|
print string.format "[client %s] > %s", nick, message
|
||
|
socket\send message
|
||
|
|
||
|
socket\connect "127.0.0.1", 6667
|
||
|
irc\NICK nick
|
||
|
irc\USER nick, nick
|
||
|
|
||
|
@socket = socket
|
||
|
@irc = irc
|
||
|
|
||
|
wait_for: (event) =>
|
||
|
running = true
|
||
|
nick = @nick
|
||
|
@irc\set_callback event, =>
|
||
|
print string.format "[client %s] ! got event %s", nick, event
|
||
|
running = false
|
||
|
|
||
|
while running
|
||
|
msg = @socket\receive!
|
||
|
print string.format "[client %s] < %s", nick, msg
|
||
|
@irc\process msg
|
||
|
|
||
|
quit: =>
|
||
|
@irc\QUIT "bye"
|
||
|
@socket\close!
|
||
|
|
||
|
{
|
||
|
:Client
|
||
|
}
|