Initial upload of discord-contrib-advanced repo

This commit is contained in:
2025-08-10 20:41:47 +02:00
parent a114b6d74a
commit b4e4749006
38 changed files with 9348 additions and 0 deletions

View 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);
}