forked from GitHub/dbot
various fixes to the reporting system and related stuff
This commit is contained in:
parent
ac9488bad9
commit
c10b65ef3b
@ -7,7 +7,7 @@ var commands = function(dbot) {
|
|||||||
'~quiet': function(event) {
|
'~quiet': function(event) {
|
||||||
var server = event.server,
|
var server = event.server,
|
||||||
quieter = event.user,
|
quieter = event.user,
|
||||||
duration = event.input[1].trim(),
|
duration = event.input[1],
|
||||||
channel = (event.input[2] || event.channel.name).trim(),
|
channel = (event.input[2] || event.channel.name).trim(),
|
||||||
quietee = event.input[3].trim(),
|
quietee = event.input[3].trim(),
|
||||||
reason = event.input[4] || "N/A";
|
reason = event.input[4] || "N/A";
|
||||||
@ -17,14 +17,15 @@ var commands = function(dbot) {
|
|||||||
if(host) {
|
if(host) {
|
||||||
this.hosts[server][quietee] = host;
|
this.hosts[server][quietee] = host;
|
||||||
|
|
||||||
if(!_.isUndefined(duration)) {
|
if(!_.isUndefined(duration) && !_.isNull(duration)) {
|
||||||
|
duration = duration.trim();
|
||||||
var msTimeout = new Date(new Date().getTime() + (parseFloat(duration) * 60000));
|
var msTimeout = new Date(new Date().getTime() + (parseFloat(duration) * 60000));
|
||||||
if(_.has(dbot.modules, 'remind')) {
|
if(_.has(dbot.modules, 'remind')) {
|
||||||
msTimeout = dbot.api.remind.parseTime(duration);
|
msTimeout = dbot.api.remind.parseTime(duration);
|
||||||
if(!msTimeout) {
|
if(!msTimeout) {
|
||||||
return event.reply('Invalid time. Remember you must give e.g. 5m now.');
|
return event.reply('Invalid time. Remember you must give e.g. 5m now.');
|
||||||
}
|
}
|
||||||
duration = duration.replace(/([\d]+)d/, '$1 days').replace(/([\d]+)h/, '$1 hours ').replace(/([\d]+)m/, '$1 minutes ').replace(/([\d]+)s/, '$1 seconds');
|
duration = duration.replace(/([\d]+)d/, '$1 days').replace(/([\d]+)h/, '$1 hours ').replace(/([\d]+)m/, '$1 minutes ').replace(/([\d]+)s/, '$1 seconds').trim();
|
||||||
} else {
|
} else {
|
||||||
duration += ' minutes';
|
duration += ' minutes';
|
||||||
}
|
}
|
||||||
@ -33,8 +34,8 @@ var commands = function(dbot) {
|
|||||||
dbot.api.timers.addTimeout(msTimeout, function() {
|
dbot.api.timers.addTimeout(msTimeout, function() {
|
||||||
if(_.has(this.hosts[server], quietee)) {
|
if(_.has(this.hosts[server], quietee)) {
|
||||||
if(_.include(this.config.quietBans, channel)) {
|
if(_.include(this.config.quietBans, channel)) {
|
||||||
this.api.unban(server, this.hosts[server][quietee], channel);
|
this.api.unban(server, this.hosts[server][quietee], channel);
|
||||||
this.api.voice(server, quietee, channel);
|
this.api.voice(server, quietee, channel);
|
||||||
} else {
|
} else {
|
||||||
this.api.unquiet(server, this.hosts[server][quietee], channel);
|
this.api.unquiet(server, this.hosts[server][quietee], channel);
|
||||||
}
|
}
|
||||||
@ -44,7 +45,7 @@ var commands = function(dbot) {
|
|||||||
dbot.t('unquiet_notify', {
|
dbot.t('unquiet_notify', {
|
||||||
'unquieter': dbot.config.name,
|
'unquieter': dbot.config.name,
|
||||||
'quietee': quietee
|
'quietee': quietee
|
||||||
}));
|
}), false, quietee);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
@ -58,7 +59,7 @@ var commands = function(dbot) {
|
|||||||
'quieter': event.rUser.primaryNick,
|
'quieter': event.rUser.primaryNick,
|
||||||
'quietee': quietee,
|
'quietee': quietee,
|
||||||
'reason': reason
|
'reason': reason
|
||||||
})
|
}), false, quietee
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
event.reply(dbot.t('quieted', { 'quietee': quietee }));
|
event.reply(dbot.t('quieted', { 'quietee': quietee }));
|
||||||
@ -67,7 +68,7 @@ var commands = function(dbot) {
|
|||||||
'quieter': quieter,
|
'quieter': quieter,
|
||||||
'quietee': quietee,
|
'quietee': quietee,
|
||||||
'reason': reason
|
'reason': reason
|
||||||
}));
|
}), false, quietee);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.api.devoice(server, quietee, channel);
|
this.api.devoice(server, quietee, channel);
|
||||||
@ -106,7 +107,7 @@ var commands = function(dbot) {
|
|||||||
dbot.t('unquiet_notify', {
|
dbot.t('unquiet_notify', {
|
||||||
'unquieter': quieter,
|
'unquieter': quieter,
|
||||||
'quietee': quietee
|
'quietee': quietee
|
||||||
}));
|
}), false, quietee);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -128,7 +129,7 @@ var commands = function(dbot) {
|
|||||||
'kicker': kicker,
|
'kicker': kicker,
|
||||||
'kickee': kickee,
|
'kickee': kickee,
|
||||||
'reason': reason
|
'reason': reason
|
||||||
}));
|
}), false, kickee);
|
||||||
},
|
},
|
||||||
|
|
||||||
// Kick and ban from all channels on the network.
|
// Kick and ban from all channels on the network.
|
||||||
@ -151,11 +152,24 @@ var commands = function(dbot) {
|
|||||||
dbot.api.nickserv.getUserHost(event.server, banee, function(host) {
|
dbot.api.nickserv.getUserHost(event.server, banee, function(host) {
|
||||||
// Add host record entry
|
// Add host record entry
|
||||||
if(host) {
|
if(host) {
|
||||||
|
if((reason.match('#line') || reason.match('#specialk') || reason.match('#kline')) && _.include(dbot.access.moderator(), event.rUser.primaryNick)) {
|
||||||
|
var t = ' !P ';
|
||||||
|
if(timeout) {
|
||||||
|
t = ' !T ' + (timeout * 60);
|
||||||
|
}
|
||||||
|
dbot.say(event.server, 'operserv', 'akill add '+banee + t + banee + ' banned by ' + banner + ': ' + reason);
|
||||||
|
}
|
||||||
|
|
||||||
// Ban from current channel first
|
// Ban from current channel first
|
||||||
this.api.ban(server, host, event.channel);
|
this.api.ban(server, host, event.channel);
|
||||||
this.api.kick(server, banee, event.channel, reason +
|
this.api.kick(server, banee, event.channel, reason +
|
||||||
' (network-wide ban requested by ' + banner + ')');
|
' (network-wide ban)');
|
||||||
channels = _.without(channels, event.channel);
|
channels = _.without(channels, event.channel);
|
||||||
|
if(!_.isUndefined(adminChannel)) {
|
||||||
|
channels = _.without(channels, adminChannel);
|
||||||
|
} else {
|
||||||
|
adminChannel = event.channel.name;
|
||||||
|
}
|
||||||
|
|
||||||
// Ban the user from all channels
|
// Ban the user from all channels
|
||||||
var i = 0;
|
var i = 0;
|
||||||
@ -164,7 +178,7 @@ var commands = function(dbot) {
|
|||||||
var channel = channels[i];
|
var channel = channels[i];
|
||||||
this.api.ban(server, host, channel);
|
this.api.ban(server, host, channel);
|
||||||
this.api.kick(server, banee, channel, reason +
|
this.api.kick(server, banee, channel, reason +
|
||||||
' (network-wide ban requested by ' + banner + ')');
|
' (network-wide ban)');
|
||||||
i++; banChannel(channels);
|
i++; banChannel(channels);
|
||||||
}.bind(this);
|
}.bind(this);
|
||||||
banChannel(channels);
|
banChannel(channels);
|
||||||
@ -181,7 +195,7 @@ var commands = function(dbot) {
|
|||||||
if(!msTimeout) {
|
if(!msTimeout) {
|
||||||
return event.reply('Invalid time. Remember you must give e.g. 5m now.');
|
return event.reply('Invalid time. Remember you must give e.g. 5m now.');
|
||||||
}
|
}
|
||||||
timeout = timeout.replace(/([\d]+)d/, '$1 days').replace(/([\d]+)h/, '$1 hours ').replace(/([\d]+)m/, '$1 minutes ').replace(/([\d]+)s/, '$1 seconds');
|
timeout = timeout.replace(/([\d]+)d/, '$1 days').replace(/([\d]+)h/, '$1 hours ').replace(/([\d]+)m/, '$1 minutes ').replace(/([\d]+)s/, '$1 seconds').trim();
|
||||||
} else {
|
} else {
|
||||||
timeout += ' hours';
|
timeout += ' hours';
|
||||||
}
|
}
|
||||||
@ -228,7 +242,7 @@ var commands = function(dbot) {
|
|||||||
adminChannel = event.channel.name;
|
adminChannel = event.channel.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbot.api.report.notify('ban', server, event.rUser, adminChannel, notifyString);
|
dbot.api.report.notify('ban', server, event.rUser, adminChannel, notifyString, false, banee);
|
||||||
dbot.say(event.server, adminChannel, notifyString);
|
dbot.say(event.server, adminChannel, notifyString);
|
||||||
|
|
||||||
if(!_.isUndefined(timeout)) {
|
if(!_.isUndefined(timeout)) {
|
||||||
@ -326,10 +340,12 @@ var commands = function(dbot) {
|
|||||||
commands['~kickstats'].access = 'regular';
|
commands['~kickstats'].access = 'regular';
|
||||||
commands['~quiet'].access = 'voice';
|
commands['~quiet'].access = 'voice';
|
||||||
commands['~unquiet'].access = 'voice';
|
commands['~unquiet'].access = 'voice';
|
||||||
|
commands['~nban'].access = 'power_user';
|
||||||
|
commands['~nunban'].access = 'power_user';
|
||||||
|
|
||||||
commands['~ckick'].regex = /^ckick (#[^ ]+ )?([^ ]+) ?(.*)?$/;
|
commands['~ckick'].regex = /^ckick (#[^ ]+ )?([^ ]+) ?(.*)?$/;
|
||||||
commands['~nban'].regex = /^nban ([\d\.dhms^ ]+)?([^ ]+) (.+)$/;
|
commands['~nban'].regex = /^nban (\d[\d\.dhms^ ]+)?([^ ]+) (.+)$/;
|
||||||
commands['~quiet'].regex = /^quiet ([\d\.dhms^ ]+)?(#[^ ]+ )?([^ ]+) ?(.*)?$/;
|
commands['~quiet'].regex = /^quiet (\d[\d\.hms^ ]+)?(#[^ ]+ )?([^ ]+) ?(.*)?$/;
|
||||||
commands['~unquiet'].regex = /^unquiet (#[^ ]+ )?([^ ]+) ?$/;
|
commands['~unquiet'].regex = /^unquiet (#[^ ]+ )?([^ ]+) ?$/;
|
||||||
|
|
||||||
return commands;
|
return commands;
|
||||||
|
@ -50,7 +50,7 @@ var kick = function(dbot) {
|
|||||||
'unbanee': unbanee,
|
'unbanee': unbanee,
|
||||||
'unbanner': unbanner.currentNick
|
'unbanner': unbanner.currentNick
|
||||||
});
|
});
|
||||||
dbot.api.report.notify('unban', server, unbanner, adminChannel, notifyString);
|
dbot.api.report.notify('unban', server, unbanner, adminChannel, notifyString, false, unbanee);
|
||||||
dbot.say(server, adminChannel, notifyString);
|
dbot.say(server, adminChannel, notifyString);
|
||||||
|
|
||||||
// Notify Unbanee
|
// Notify Unbanee
|
||||||
@ -90,14 +90,14 @@ var kick = function(dbot) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.internalAPI = {
|
this.internalAPI = {
|
||||||
'addTempBan': function(server, banee, timeout) {
|
'addTempBan': function(server, banee, timeout) {
|
||||||
dbot.api.users.resolveUser(server, dbot.config.name, function(err, bot) {
|
dbot.api.users.resolveUser(server, dbot.config.name, function(err, bot) {
|
||||||
dbot.api.timers.addTimeout(timeout, function() {
|
dbot.api.timers.addTimeout(timeout, function() {
|
||||||
this.api.networkUnban(server, banee, bot, function(err) {});
|
this.api.networkUnban(server, banee, bot, function(err) {});
|
||||||
delete this.tempBans[server][banee];
|
delete this.tempBans[server][banee];
|
||||||
}.bind(this));
|
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
}.bind(this)
|
}.bind(this));
|
||||||
|
}.bind(this)
|
||||||
};
|
};
|
||||||
|
|
||||||
this.listener = function(event) {
|
this.listener = function(event) {
|
||||||
|
@ -89,6 +89,9 @@ var commands = function(dbot) {
|
|||||||
|
|
||||||
'~sustatus': function(event) {
|
'~sustatus': function(event) {
|
||||||
var user = event.input[1];
|
var user = event.input[1];
|
||||||
|
if(event.channel == '#tripsit.me') {
|
||||||
|
return event.reply('~_~ do that in #moderators ~_~');
|
||||||
|
}
|
||||||
|
|
||||||
dbot.api.users.resolveUser(event.server, user, function(err, user) {
|
dbot.api.users.resolveUser(event.server, user, function(err, user) {
|
||||||
if(user) {
|
if(user) {
|
||||||
@ -106,11 +109,32 @@ var commands = function(dbot) {
|
|||||||
dbot.modules.report.db.search('notifies', {
|
dbot.modules.report.db.search('notifies', {
|
||||||
'server': event.server
|
'server': event.server
|
||||||
}, function(notify) {
|
}, function(notify) {
|
||||||
_.each(aliases, function(alias) {
|
if(_.include(aliases, notify.target)) {
|
||||||
|
if(notify.type == 'ban') {
|
||||||
|
ban++;
|
||||||
|
if(notify.time > latest_ban.time) {
|
||||||
|
latest_ban = notify;
|
||||||
|
}
|
||||||
|
} else if(notify.type == 'unban') {
|
||||||
|
unban++;
|
||||||
|
if(notify.time > latest_unban.time) {
|
||||||
|
latest_unban = notify;
|
||||||
|
}
|
||||||
|
} else if(notify.type == 'quiet') {
|
||||||
|
quiet++;
|
||||||
|
} else if(notify.type == 'warn') {
|
||||||
|
warn++;
|
||||||
|
} else if(notify.type == 'report') {
|
||||||
|
report++;
|
||||||
|
}
|
||||||
|
items[notify.time] = notify.message;
|
||||||
|
|
||||||
|
}
|
||||||
|
/*_.each(aliases, function(alias) {
|
||||||
if(notify.message.indexOf('banned ' + alias + ' ') != -1 ||
|
if(notify.message.indexOf('banned ' + alias + ' ') != -1 ||
|
||||||
notify.message.indexOf(' ' + alias + ' has been unbanned') != -1 ||
|
notify.message.indexOf(' ' + alias + ' has been unbanned') != -1 ||
|
||||||
notify.message.indexOf('issued a warning to ' + alias + ' ') != -1 ||
|
notify.message.indexOf('issued a warning to ' + alias) != -1 ||
|
||||||
notify.message.indexOf('has quieted ' + alias + ' ') != -1 ||
|
notify.message.indexOf('has quieted ' + alias) != -1 ||
|
||||||
notify.message.indexOf('has reported ' + alias + ' ') != -1) {
|
notify.message.indexOf('has reported ' + alias + ' ') != -1) {
|
||||||
if(notify.type == 'ban') {
|
if(notify.type == 'ban') {
|
||||||
ban++;
|
ban++;
|
||||||
@ -132,6 +156,7 @@ var commands = function(dbot) {
|
|||||||
items[notify.time] = notify.message;
|
items[notify.time] = notify.message;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
}, function() {
|
}, function() {
|
||||||
if(quiet != 0 || warn != 0 || report != 0) {
|
if(quiet != 0 || warn != 0 || report != 0) {
|
||||||
event.reply(user.primaryNick + ' has been warned ' + warn + ' times, quieted ' + quiet + ' times, and reported ' + report + ' times.');
|
event.reply(user.primaryNick + ' has been warned ' + warn + ' times, quieted ' + quiet + ' times, and reported ' + report + ' times.');
|
||||||
@ -140,7 +165,7 @@ var commands = function(dbot) {
|
|||||||
return parseInt(a) - parseInt(b);
|
return parseInt(a) - parseInt(b);
|
||||||
});
|
});
|
||||||
|
|
||||||
if(sTimes.length < 50) {
|
if(sTimes.length < 70) {
|
||||||
_.each(sTimes, function(time) {
|
_.each(sTimes, function(time) {
|
||||||
event.reply('[' + moment(parseInt(time)).format('DD/MM/YYYY') + '] ' + items[time]);
|
event.reply('[' + moment(parseInt(time)).format('DD/MM/YYYY') + '] ' + items[time]);
|
||||||
});
|
});
|
||||||
@ -198,9 +223,10 @@ var commands = function(dbot) {
|
|||||||
}, function() {
|
}, function() {
|
||||||
if(ban) {
|
if(ban) {
|
||||||
event.reply(user.primaryNick + ' was banned on ' + new Date(ban).toUTCString());
|
event.reply(user.primaryNick + ' was banned on ' + new Date(ban).toUTCString());
|
||||||
} else if(quiet != 0 || warn != 0) {
|
}
|
||||||
|
if(quiet != 0 || warn != 0) {
|
||||||
event.reply(user.primaryNick + ' has been warned ' + warn + ' times, and quieted ' + quiet + ' times.');
|
event.reply(user.primaryNick + ' has been warned ' + warn + ' times, and quieted ' + quiet + ' times.');
|
||||||
} else {
|
} else if(!ban) {
|
||||||
event.reply(user.primaryNick + ' has no record.');
|
event.reply(user.primaryNick + ' has no record.');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -240,7 +266,7 @@ var commands = function(dbot) {
|
|||||||
'reporter': event.rUser.primaryNick,
|
'reporter': event.rUser.primaryNick,
|
||||||
'reportee': nick,
|
'reportee': nick,
|
||||||
'reason': reason
|
'reason': reason
|
||||||
}));
|
}), false, nick);
|
||||||
event.reply(dbot.t('reported', { 'reported': nick }));
|
event.reply(dbot.t('reported', { 'reported': nick }));
|
||||||
} else {
|
} else {
|
||||||
event.reply(dbot.t('user_not_found', {
|
event.reply(dbot.t('user_not_found', {
|
||||||
@ -333,33 +359,6 @@ var commands = function(dbot) {
|
|||||||
} else {
|
} else {
|
||||||
event.reply('Channel not known.');
|
event.reply('Channel not known.');
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
'~concerning': function(event) {
|
|
||||||
var nick = event.params[1].trim();
|
|
||||||
dbot.api.nickserv.getUserHost(event.server, nick, function(host) {
|
|
||||||
if(host) {
|
|
||||||
var results = [];
|
|
||||||
this.db.scan('notifies', function(notify) {
|
|
||||||
if(notify && _.has(notify, 'host') && (notify.host == host || notify.message.split(' ')[0] == nick)) {
|
|
||||||
results.push(notify);
|
|
||||||
}
|
|
||||||
}, function() {
|
|
||||||
event.reply(nick + ' has sought help ' + results.length + ' times under the host ' + host + ' or nick ' + nick);
|
|
||||||
_.each(results, function(n) {
|
|
||||||
event.reply('[' + moment(parseInt(n.time)).format('DD/MM/YYYY HH:mm:ss') + '][' + n.user.split('.')[0] + '] ' + n.message);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
dbot.api.quotes.getQuote('deal with it', function(quote) {
|
|
||||||
var out = 'Couldn\'t find user\'s host, but that doesn\'t necessarily mean they don\'t exist. This is the lazy way of doing it for now... ';
|
|
||||||
if(quote) {
|
|
||||||
out += quote;
|
|
||||||
}
|
|
||||||
event.reply(out);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}.bind(this));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
commands['~report'].regex = /^report (#[^ ]+ )?([^ ]+) (.*)$/;
|
commands['~report'].regex = /^report (#[^ ]+ )?([^ ]+) (.*)$/;
|
||||||
|
@ -54,7 +54,7 @@ var report = function(dbot) {
|
|||||||
if(_.has(this.pending, event.rUser.id) && this.pNotify[event.rUser.id] === true && !_.include(event.rUser.mobile, event.rUser.currentNick)) {
|
if(_.has(this.pending, event.rUser.id) && this.pNotify[event.rUser.id] === true && !_.include(event.rUser.mobile, event.rUser.currentNick)) {
|
||||||
dbot.say(event.server, event.user, dbot.t('missed_notifies', {
|
dbot.say(event.server, event.user, dbot.t('missed_notifies', {
|
||||||
'user': event.rUser.primaryNick,
|
'user': event.rUser.primaryNick,
|
||||||
'link': dbot.api.web.getUrl('notify/missing')
|
'link': dbot.api.web.getUrl('notify/stream/missing')
|
||||||
}));
|
}));
|
||||||
this.pNotify[event.rUser.id] = false;
|
this.pNotify[event.rUser.id] = false;
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ var warning = function(dbot) {
|
|||||||
+ warnee.primaryNick)
|
+ warnee.primaryNick)
|
||||||
});
|
});
|
||||||
|
|
||||||
dbot.api.report.notify('warn', server, warner, adminChannel, notifyString);
|
dbot.api.report.notify('warn', server, warner, adminChannel, notifyString, false, warnee.primaryNick);
|
||||||
dbot.say(server, adminChannel, notifyString);
|
dbot.say(server, adminChannel, notifyString);
|
||||||
|
|
||||||
var uString = dbot.t('warn_user', {
|
var uString = dbot.t('warn_user', {
|
||||||
@ -38,6 +38,8 @@ var warning = function(dbot) {
|
|||||||
dbot.say(server, warnee.currentNick, uString);
|
dbot.say(server, warnee.currentNick, uString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dbot.api.event.emit('new_warning', [ warner, warnee, reason ]);
|
||||||
|
|
||||||
callback(null);
|
callback(null);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user