f0ckv1/src/trigger/umode.js

67 lines
1.9 KiB
JavaScript
Raw Normal View History

2016-09-05 22:13:31 +00:00
var allowedModes = [
'q','a','o','h','v'
];
2016-09-05 11:18:58 +00:00
module.exports = (bot, trigger, lib) => {
trigger.add({
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.match(/(\+|-)/))
user = e.user.getNick();
else
tmp.pop();
e.reply("input: "+JSON.stringify(tmp));
2016-09-05 21:21:26 +00:00
var modes;
2016-09-05 11:25:29 +00:00
if(user.toLowerCase() != bot.me.nick.toLowerCase()) {
2016-09-05 22:13:31 +00:00
if(user in e.channel.names) {
if(modes = processModes(tmp.join(' '))) {
if(checkModes(modes, allowedModes))
modes.forEach((entry,i,a) => {
bot.mode(e.channel, (entry.delta?'+':'-')+entry.mode+' '+user, e.network);
});
else
e.reply('Error! Allowed modes are: ' + allowedModes.join(','));
}
else
e.reply('Syntax Error!');
2016-09-05 18:23:31 +00:00
}
2016-09-05 11:21:52 +00:00
else
2016-09-05 22:13:31 +00:00
e.reply('user not found!');
2016-09-05 11:18:58 +00:00
}
else
2016-09-05 22:13:31 +00:00
e.reply('f0ck you hard');
e.reply("output: "+JSON.stringify(modes));
2016-09-05 11:18:58 +00:00
},
desc: 'change Usermodes'
});
2016-09-05 22:13:31 +00:00
};
var processModes = (modes) => {
var delta, modeList = [];
if(modes.split('').some((token) => {
if(token === '-') {delta = false; return;}
if(token === '+') {delta = true; return;}
if(token === ' ') return;
if(typeof delta === "undefined") return true;
modeList.push({
delta: delta,
mode: token
});
})) return false;
return [...new Set(modeList)];
};
var checkModes = (modes, allowedModes) => {
if([...new Set(modes.map(a => a.mode))].some((mode) => {
for(var i = 0; i <= allowedModes.length; i++)
if(allowedModes[i] == mode) return false;
return true;
})) return false;
return true;
2016-09-05 11:18:58 +00:00
};