forked from GitHub/dbot
read flags
This commit is contained in:
parent
e83b4af33f
commit
24d14e7005
@ -5,6 +5,32 @@
|
|||||||
var _ = require('underscore')._;
|
var _ = require('underscore')._;
|
||||||
|
|
||||||
var atheme = function(dbot) {
|
var atheme = function(dbot) {
|
||||||
|
this.flagStack = {};
|
||||||
|
|
||||||
|
this.api = {
|
||||||
|
'getChannelFlags': function(server, channel, callback) {
|
||||||
|
if(!_.has(this.flagStack, server)) this.flagStack[server] = {};
|
||||||
|
if(_.has(flagStack[server], channel)) { // Already an active flag call
|
||||||
|
this.flagStack[server][channel].callbacks.push(callback);
|
||||||
|
} else {
|
||||||
|
this.flagStack[server][channel] = {
|
||||||
|
'flags': {},
|
||||||
|
'callbacks': [ callback ]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
dbot.say(server, 'chanserv', 'FLAGS ' + channel);
|
||||||
|
setTimeout(function() { // Delete callback if no response
|
||||||
|
if(_.has(this.flagStack[server], channel)) {
|
||||||
|
_.each(this.flagStack[server][channel].callbacks, function(callback) {
|
||||||
|
callback(true, null);
|
||||||
|
});
|
||||||
|
delete this.flagStack[server][channel];
|
||||||
|
}
|
||||||
|
}.bind(this), 10000);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.commands = {
|
this.commands = {
|
||||||
'~chanserv': function(event) {
|
'~chanserv': function(event) {
|
||||||
if(_.has(this.config.chanserv, event.input[1])) {
|
if(_.has(this.config.chanserv, event.input[1])) {
|
||||||
@ -24,6 +50,25 @@ var atheme = function(dbot) {
|
|||||||
};
|
};
|
||||||
this.commands['~chanserv'].regex = [/^chanserv (\+.)/, 2];
|
this.commands['~chanserv'].regex = [/^chanserv (\+.)/, 2];
|
||||||
this.commands['~chanmode'].regex = [/^chanmode (\+.)/, 2];
|
this.commands['~chanmode'].regex = [/^chanmode (\+.)/, 2];
|
||||||
|
|
||||||
|
this.listener = function(event) {
|
||||||
|
if(event.user === 'chanserv') {
|
||||||
|
var flags = event.message.match(/(\d+)\s+([^ ]+)\s+(\+\w+)\s+\((\#.+)\)/),
|
||||||
|
end = event.message.match(/End of (\#.+) FLAGS listing./);
|
||||||
|
|
||||||
|
if(flags && _.has(this.flagStack[event.server], flags[4])) {
|
||||||
|
this.flagStack[event.server][flags[4]].flags[flags[2]] = flags[3];
|
||||||
|
} else if(end) {
|
||||||
|
if(_.has(this.flagStack[event.server], end[1])) {
|
||||||
|
_.each(this.flagStack[event.server][end[1]].callbacks, function(callback) {
|
||||||
|
callback(null, this.flagStack[event.server][end[1]].flags);
|
||||||
|
});
|
||||||
|
delete this.flagStack[event.server][end[1]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.bind(this);
|
||||||
|
this.on = 'NOTICE';
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.fetch = function(dbot) {
|
exports.fetch = function(dbot) {
|
||||||
|
Loading…
Reference in New Issue
Block a user