Initial upload of discord-contrib-advanced repo
This commit is contained in:
158
discord/discordPermissions.js
Normal file
158
discord/discordPermissions.js
Normal file
@@ -0,0 +1,158 @@
|
||||
module.exports = function (RED) {
|
||||
var discordBotManager = require('./lib/discordBotManager.js');
|
||||
|
||||
function discordPermissions(config) {
|
||||
RED.nodes.createNode(this, config);
|
||||
var node = this;
|
||||
var configNode = RED.nodes.getNode(config.token);
|
||||
discordBotManager.getBot(configNode).then(function (bot) {
|
||||
node.on('input', async function (msg, send, done) {
|
||||
const action = msg.action || 'get';
|
||||
const user = msg.user || null;
|
||||
const guild = msg.guild || null;
|
||||
const role = msg.role || null;
|
||||
|
||||
const setError = (error) => {
|
||||
node.status({
|
||||
fill: "red",
|
||||
shape: "dot",
|
||||
text: error
|
||||
})
|
||||
done(error);
|
||||
}
|
||||
|
||||
const setSuccess = (succesMessage) => {
|
||||
node.status({
|
||||
fill: "green",
|
||||
shape: "dot",
|
||||
text: succesMessage
|
||||
});
|
||||
done();
|
||||
}
|
||||
|
||||
const checkIdOrObject = (check) => {
|
||||
try {
|
||||
if (typeof check !== 'string') {
|
||||
if (check.hasOwnProperty('id')) {
|
||||
return check.id;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return check;
|
||||
}
|
||||
} catch (error) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const sendRoles = async () => {
|
||||
const userID = checkIdOrObject(user);
|
||||
const guildID = checkIdOrObject(guild);
|
||||
|
||||
if (!userID) {
|
||||
setError(`msg.user wasn't set correctly`);
|
||||
} else if (!guildID) {
|
||||
setError(`msg.guild wasn't set correctly`);
|
||||
} else {
|
||||
|
||||
try {
|
||||
const guildObject = await bot.guilds.fetch(guildID);
|
||||
const userObject = await guildObject.members.fetch(userID);
|
||||
|
||||
let roles = [];
|
||||
userObject.roles.cache.each(role => {
|
||||
roles.push(role);
|
||||
});
|
||||
msg.payload = roles;
|
||||
msg.user = userObject;
|
||||
send(msg);
|
||||
setSuccess(`roles sent`);
|
||||
} catch (error) {
|
||||
setError(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setRole = async () => {
|
||||
const userID = checkIdOrObject(user);
|
||||
const guildID = checkIdOrObject(guild);
|
||||
const roleID = checkIdOrObject(role);
|
||||
|
||||
if (!userID) {
|
||||
setError(`msg.user wasn't set correctly`);
|
||||
} else if (!guildID) {
|
||||
setError(`msg.guild wasn't set correctly`);
|
||||
} else if (!roleID) {
|
||||
setError(`msg.role wasn't set correctly`);
|
||||
} else {
|
||||
try {
|
||||
const guildObject = await bot.guilds.fetch(guildID);
|
||||
const userObject = await guildObject.members.fetch(userID);
|
||||
|
||||
await userObject.roles.add(roleID);
|
||||
msg.payload = "role set";
|
||||
send(msg);
|
||||
setSuccess(`role set`);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
setError(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const removeRole = async () => {
|
||||
const userID = checkIdOrObject(user);
|
||||
const guildID = checkIdOrObject(guild);
|
||||
const roleID = checkIdOrObject(role);
|
||||
|
||||
if (!userID) {
|
||||
setError(`msg.user wasn't set correctly`);
|
||||
} else if (!guildID) {
|
||||
setError(`msg.guild wasn't set correctly`);
|
||||
} else if (!roleID) {
|
||||
setError(`msg.role wasn't set correctly`);
|
||||
} else {
|
||||
try {
|
||||
const guildObject = await bot.guilds.fetch(guildID);
|
||||
const userObject = await guildObject.members.fetch(userID);
|
||||
|
||||
await userObject.roles.remove(roleID);
|
||||
msg.payload = "role removed";
|
||||
send(msg);
|
||||
setSuccess(`role removed`);
|
||||
} catch (error) {
|
||||
setError(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (action.toLowerCase()) {
|
||||
case 'get':
|
||||
await sendRoles();
|
||||
break;
|
||||
case 'set':
|
||||
await setRole();
|
||||
break;
|
||||
case 'remove':
|
||||
await removeRole();
|
||||
break;
|
||||
default:
|
||||
setError(`msg.action has an incorrect value`)
|
||||
}
|
||||
});
|
||||
|
||||
node.on('close', function () {
|
||||
discordBotManager.closeBot(bot);
|
||||
});
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
node.status({
|
||||
fill: "red",
|
||||
shape: "dot",
|
||||
text: err
|
||||
});
|
||||
});
|
||||
}
|
||||
RED.nodes.registerType("discordPermissions", discordPermissions);
|
||||
}
|
||||
Reference in New Issue
Block a user