-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathchannel-names.js
43 lines (39 loc) · 1.06 KB
/
channel-names.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
/**
* This script enables squIRCy2 to maintain a list of users in each of the
* channels it joins.
*/
(function(Irc) {
/**
* A map of channel names to a list of their participant nicknames.
*/
Irc.Channels = {};
/**
* Processes a NAMES command for the given channel.
* @param {string} channel
*/
Irc.Names = function(channel) {
var users = [];
var listen = function(e) {
var chan = e.Args[2];
if (chan !== channel) {
return;
}
var nicks = e.Args[3].replace(/[^a-z0-9_ ]/gi, '').split(" ");
users = users.concat(nicks);
}
var end = function() {
unbind("irc.353", listen);
unbind("irc.366", end);
Irc.Channels[channel] = users;
}
bind("irc.353", listen);
bind("irc.366", end);
Irc.Raw("NAMES :"+channel);
}
bind("irc.JOIN", function(e) {
Irc.Names(e.Target);
});
bind("irc.PART", function(e) {
Irc.Names(e.Target);
});
})(Irc);