From 8d0dad9b4a6f737fbf78ff7e880b5c037da13aab Mon Sep 17 00:00:00 2001 From: Taken Date: Fri, 22 Dec 2023 12:42:27 +0100 Subject: [PATCH] Added new commain (development) Signed-off-by: Taken --- src/commands/staff.js | 13 +++- src/commands/staff/updatediscordroles.js | 99 ++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 src/commands/staff/updatediscordroles.js diff --git a/src/commands/staff.js b/src/commands/staff.js index 30ee6ff..5e58490 100644 --- a/src/commands/staff.js +++ b/src/commands/staff.js @@ -2,12 +2,13 @@ const { SlashCommandBuilder, PermissionFlagsBits } = require("discord.js") const { color, devMessage } = require("../../config/options.json") const { beast } = require("./staff/beast.js") const { help } = require("./staff/help.js") +const { updateDiscordRoles } = require("./staff/updatediscordroles.js") module.exports = { name: "staff", description: "Subcommands for staff", type: "slash", - dev: false, + dev: true, public: false, subcommands: true, @@ -29,6 +30,11 @@ module.exports = { .setRequired(true) ) ) + .addSubcommand(subcommand => + subcommand + .setName("updatediscordroles") + .setDescription("Update the discord roles of all guild members") + ) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDMPermission(false), @@ -49,6 +55,11 @@ module.exports = { return } + if (subcommand === "updatediscordroles") { + updateDiscordRoles(interaction) + return + } + const footerText = interaction.guild ? interaction.guild.name : interaction.user.username const footerIcon = interaction.guild ? interaction.guild.iconURL({ dynamic: true }) : interaction.user.avatarURL({ dynamic: true }) diff --git a/src/commands/staff/updatediscordroles.js b/src/commands/staff/updatediscordroles.js new file mode 100644 index 0000000..cc475f6 --- /dev/null +++ b/src/commands/staff/updatediscordroles.js @@ -0,0 +1,99 @@ +const verify = require("../../schemas/verifySchema.js") +const { color, hypixelGuildID } = require("../../../config/options.json") +const { admin, gm, manager, moderator, beast, elite, member, guildRole, guildStaff, defaultMember } = require("../../../config/roles.json") +const removeThese = [gm, manager, beast, elite, member, guildRole, guildStaff] +const { getGuild } = require("../../utils/utils.js") + +/** @param { import("discord.js").ChatInputCommandInteraction } interaction */ + +async function updateDiscordRoles(interaction) { + + interaction.deferReply() + if (!interaction.member.roles.cache.has(admin)) { + interaction.editReply({ + content: "You do not have permission to use this command.", + ephemeral: true + }) + } + + const embedColor = Number(color.replace("#", "0x")) + const guildMembers = await interaction.guild.members.fetch() + + for (let i = 0; i < guildMembers.size; i++) { + const memberData = await verify.findOne({ + userID: guildMembers[i].user.id + }) + + if (!memberData) { + for (const role of removeThese) { + guildMembers[i].roles.remove(role) + } + } + + if (memberData) { + const igGuildMember = getGuild(memberData[i].uuid) + + if (!igGuildMember) { + for (const role of removeThese) { + guildMembers[i].roles.remove(role) + } + } + + const guildId = igGuildMember._id + const guildRank = igGuildMember.members.find(member => member.uuid === memberData[i].uuid).rank + + if (!guildId === hypixelGuildID) { + for (const role of removeThese) { + guildMembers[i].roles.remove(role) + } + } else { + if (guildRank === "Guild Master") { + guildMembers[i].add(guildRole, "All users updated forcefully by staff") + guildMembers[i].add(guildStaff, "All users updated forcefully by staff") + guildMembers[i].add(gm, "All users updated forcefully by staff") + guildMembers[i].add(defaultMember, "All users updated forcefully by staff") + } + if (guildRank === "Manager") { + guildMembers[i].add(guildRole, "All users updated forcefully by staff") + guildMembers[i].add(guildStaff, "All users updated forcefully by staff") + guildMembers[i].add(manager, "All users updated forcefully by staff") + guildMembers[i].add(defaultMember, "All users updated forcefully by staff") + } + if (guildRank === "Moderator") { + guildMembers[i].add(guildRole, "All users updated forcefully by staff") + guildMembers[i].add(guildStaff, "All users updated forcefully by staff") + guildMembers[i].add(moderator, "All users updated forcefully by staff") + guildMembers[i].add(defaultMember, "All users updated forcefully by staff") + } + if (guildRank === "Beast") { + guildMembers[i].add(guildRole, "All users updated forcefully by staff") + guildMembers[i].add(beast, "All users updated forcefully by staff") + guildMembers[i].add(defaultMember, "All users updated forcefully by staff") + } + if (guildRank === "Elite") { + guildMembers[i].add(guildRole, "All users updated forcefully by staff") + guildMembers[i].add(elite, "All users updated forcefully by staff") + guildMembers[i].add(defaultMember, "All users updated forcefully by staff") + } + if (guildRank === "Member") { + guildMembers[i].add(guildRole, "All users updated forcefully by staff") + guildMembers[i].add(member, "All users updated forcefully by staff") + guildMembers[i].add(defaultMember, "All users updated forcefully by staff") + } + } + } + } + + interaction.editReply({ + embeds: [{ + color: embedColor, + description: "Successfully updated all users.", + footer: { + text: interaction.guild.name, + iconURL: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) +} + +module.exports = { updateDiscordRoles }