-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmairc.js
78 lines (62 loc) · 1.81 KB
/
mairc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
(function() {
"use strict"
var ircClient, io, config
, irc = require('irc')
, ircStat = {
status:false,
channels:{},
};
function handleNewSocket(socket) {
socket.emit('status', ircStat);
socket.addListener('sendMessage', handleClientMessage);
};
function handleMotd(message) {
console.log('sending motd');
//io.sockets.emit('motd',message);
};
function handleMessage(nick, to, text, message) {
io.sockets.emit('message', {from:nick, to:to, message:text});
};
function handleConnection(message) {
console.log('registerd to the irc Server');
ircStat.status = true;
ircStat.nick = message.args[0];
ircStat.server = config.ircServer;
io.sockets.emit('connected', ircStat);
};
function handleNicks(channel, nicks) {
ircStat.channels[channel]['nicks'] = nicks
io.sockets.emit('nicks',{
'channel' : channel,
'nicks' : nicks
})
}
function handleJoin(channel, nick, message) {
if(nick !== ircStat.nick)
return;
ircStat.channels[channel] = {status:true , nicks:''};
io.sockets.emit('join', channel);
ircClient.list();
};
function handlePart(channel, nick, reason, message) {
if(nick !== ircStat.nick)
return;
ircStat.channels[channel]['status'] = false;
io.sockets.emit('part', channel);
};
function handleClientMessage(data) {
ircClient.say(data.to,data.message);
};
exports.init = function init(_config, _io) {
config = _config;
io = _io;
ircClient = new irc.Client(config.ircServer,config.ircNick,config.irc);
ircClient.addListener('registered', handleConnection);
ircClient.addListener('join', handleJoin);
ircClient.addListener('part', handlePart);
ircClient.addListener('message', handleMessage);
ircClient.addListener('names',handleNicks);
io.sockets.addListener('connection', handleNewSocket);
return ircClient;
}
}());