-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathircbot.js
71 lines (55 loc) · 2.1 KB
/
ircbot.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
var sys = require("sys");
var irc = require("./irc.lib.js");
var ircbot = exports;
var self = null;
/* This program is free software. It comes without any warranty, to
* the extent permitted by applicable law. You can redistribute it
* and/or modify it under the terms of the Do What The Fuck You Want
* To Public License, Version 2, as published by Sam Hocevar. See
* http://sam.zoy.org/wtfpl/COPYING for more details. */
var Bot = ircbot.Bot = function(host, port,chn,nickname){
this.client = new irc.Client(host,port);
this.channel = chn;
this.nick = nickname;
self = this;
}
sys.inherits(Bot, process.EventEmitter);
Bot.prototype.connect = function(){
this.client.connect(self.nick, self.nick, self.nick);
this.client.addListener('001', function(){
this.send("JOIN", self.channel);
self.client.send("TOPIC",self.channel,""); // fire a 322 event and resolve the topic
});
this.client.addListener('331', function(server,prefix,to,topic){
self.currentTopic = topic;
});
this.client.addListener('332', function(server,prefix,to,topic){
self.currentTopic = topic;
});
this.client.addListener('TOPIC', function (server, prefix, topic){
self.currentTopic= topic;
});
this.client.addListener('PRIVMSG', function(prefix, to, text) {
});
// when the DISCONNECT event is emitted by the client, somehow the
// connection was dropped (timeout, eof) see client.disconnect
this.client.addListener('DISCONNECT', function(why){
console.log('disconnected because of '+ why +', trying reconnect');
this.client.connect(self.nick, self.nick, self.nick);
});
}
Bot.prototype.joinChannel = function(channelname){
this.client.send('JOIN', channelname);
}
Bot.prototype.getTopic = function() {
return self.currentTopic;
};
Bot.prototype.setTopic = function(newTopic){
this.client.send("TOPIC",this.channel,":"+newTopic);
}
Bot.prototype.say = function(message){
this.client.send("PRIVMSG",this.channel,":"+message);
}
Bot.prototype.notice = function(message){
this.client.send("NOTICE",this.channel,":"+message);
}