f0ckv1/src/trigger/umode.js

54 lines
1.5 KiB
JavaScript
Raw Normal View History

2016-09-05 22:13:31 +00:00
var allowedModes = [
'q','a','o','h','v'
];
2016-09-14 22:05:18 +00:00
module.exports = (lib) => {
2016-09-09 11:18:03 +00:00
lib.trigger.add({
2016-09-05 11:18:58 +00:00
name: 'umode',
2016-09-05 21:07:15 +00:00
call: /^\!umode .*/i,
2016-09-05 11:18:58 +00:00
level: 100,
active: 1,
func: (e) => {
2016-09-05 21:07:15 +00:00
var tmp = e.message.trim().split(' ');
tmp.shift();
var user = tmp[tmp.length - 1];
if(!(user in e.channel.names))
2016-09-05 21:07:15 +00:00
user = e.user.getNick();
else
tmp.pop();
2016-09-05 21:21:26 +00:00
var modes;
2016-09-14 22:05:18 +00:00
if(user.toLowerCase() != lib.bot.me.nick.toLowerCase()) {
2016-09-06 12:12:36 +00:00
var modes = processModes(tmp.join(''));
if(modes.length) {
2016-09-06 11:36:52 +00:00
if(checkModes(modes, allowedModes)) {
2016-09-15 17:17:07 +00:00
modesToApply = lib.groupUserModes(modes);
modesToApply.forEach(modeStr => lib.bot.mode(e.channel, modeStr + (' ' + user).repeat(modeStr.length - 1), e.network));
2016-09-05 22:13:31 +00:00
}
else
e.reply('Error! Allowed modes are: ' + allowedModes.join(','));
2016-09-05 18:23:31 +00:00
}
2016-09-05 11:21:52 +00:00
else
2016-09-06 12:12:36 +00:00
e.reply('No modes specified!');
2016-09-05 11:18:58 +00:00
}
else
2016-09-05 22:13:31 +00:00
e.reply('f0ck you hard');
2016-09-05 11:18:58 +00:00
},
desc: 'change Usermodes'
});
2016-09-05 22:13:31 +00:00
};
2016-09-06 11:36:52 +00:00
var processModes = modes => {
var prefix = '+', modeArr = [];
modes.split('').forEach(token => {
if(token === '-' || token === '+') {prefix = token; return;}
2016-09-06 11:45:37 +00:00
modeArr.push(prefix + token);
2016-09-05 22:34:32 +00:00
});
2016-09-06 12:02:29 +00:00
return modeArr;
2016-09-05 22:13:31 +00:00
};
var checkModes = (modes, allowedModes) => {
2016-09-06 12:02:29 +00:00
if([... new Set(modes)].some(mode => {
2016-09-06 11:36:52 +00:00
return (allowedModes.indexOf(mode[1]) != -1)?false:true;
2016-09-05 22:13:31 +00:00
})) return false;
return true;
2016-09-05 11:18:58 +00:00
};