dbot/modules/kill_namespam/kill_namespam.js

74 lines
2.4 KiB
JavaScript
Raw Normal View History

/**
* Module name: kill_namespam
* Description: destroy those wot hilight too many nicks at once . usually
* advertising their rubbish irc server (do not)
*/
var _ = require('underscore')._;
var kill_namespam = function(dbot) {
this.listener = function(event) {
if(event.channel == event.user) return; // return if pm
2018-02-16 14:44:47 +01:00
if(_.includes(this.config.exempt, event.user)) return;
var message;
2018-02-16 15:36:56 +01:00
var naughty = false;
// Check distinctive spam content match
2018-02-16 15:29:17 +01:00
if(_.any(this.config.advert_content, function(spam) { return event.message.indexOf(spam) != -1; })) {
message = dbot.t('spamcont_act', {
'user': event.user,
'channel': event.channel,
'action': this.config.action
});
2018-02-16 15:29:17 +01:00
naughty = true;
}
// Name highlight spam
if(_.filter(event.message.split(' '), function(word) { return _.has(event.channel.nicks, word); }).length > this.config.sensitivity) {
message = dbot.t('namespam_act', {
'user': event.user,
'channel': event.channel,
'action': this.config.action,
'sensitivity': this.config.sensitivity
});
2018-02-16 15:29:17 +01:00
naughty = true;
}
if(naughty) {
switch(this.config.action) {
2018-02-16 14:30:56 +01:00
case 'kickban':
2018-02-16 14:19:12 +01:00
dbot.api.kick.ban(event.server, event.host, event.channel);
dbot.api.kick.kick(event.server, event.user, message);
break;
2018-02-16 14:30:56 +01:00
case 'kill':
dbot.api.kick.kill(event.server, event.user, message);
default: break;
}
dbot.api.report.notify('spam', event.server, event.user, event.channel, message, event.host, event.user);
}
}.bind(this);
this.on = 'PRIVMSG';
2018-02-16 15:36:56 +01:00
this.commands = {
'~add_spamkill': function(event) {
this.config.advert_content.push(event.params.slice(1).join(' '))
event.reply('Users daring to utter the above to be classified as spam.');
},
'~del_spamkill': function(event) {
this.config.advert_content = _.without(this.config.advert_content, event.params.slice(1).join(' '));
event.reply('Users will no longer be killed for this utterance.');
}
};
_.each(this.commands, function(c) {
c.access = 'moderator';
});
};
exports.fetch = function(dbot) {
return new kill_namespam(dbot);
};