From bd205eadc4d3478ff642779d036a9c974becad0b Mon Sep 17 00:00:00 2001 From: Taken Date: Sat, 30 Dec 2023 18:50:13 +0100 Subject: [PATCH] Updated update discord members subcommand --- src/commands/staff/updatediscordroles.ts | 196 ++++------------------- 1 file changed, 31 insertions(+), 165 deletions(-) diff --git a/src/commands/staff/updatediscordroles.ts b/src/commands/staff/updatediscordroles.ts index 933ee1f..748b7bf 100644 --- a/src/commands/staff/updatediscordroles.ts +++ b/src/commands/staff/updatediscordroles.ts @@ -1,191 +1,57 @@ import verify = require("../../schemas/verifySchema") -import { color, hypixelGuildID } from "../../../config/options.json" +import { color } from "../../../config/options.json" import { - admin, gm, manager, - moderator, beast, elite, member, guildRole, - guildStaff, - defaultMember, + guildStaff } from "../../../config/roles.json" const removeThese = [gm, manager, beast, elite, member, guildRole, guildStaff] -import { getGuild } from "../../utils/Hypixel" import { ChatInputCommandInteraction, GuildMember } from "discord.js" -import { GuildData } from "../../interfaces/Guild" +import env from "../../utils/Env" -export async function updateDiscordRoles( - interaction: ChatInputCommandInteraction, -): Promise { - await interaction.deferReply() +export async function updateDiscordRoles( interaction: ChatInputCommandInteraction,): Promise { + const discordMember = interaction.member as GuildMember + const embedColor = Number(color.replace("#", "0x")) + await interaction.deferReply({ ephemeral: true }) - const user = interaction.member as GuildMember - - if (!user.roles.cache.has(admin)) { - await interaction.editReply( - "You do not have permission to use this command.", - ) + if (discordMember.user.id !== env.prod.dev) { + await interaction.editReply({ + embeds: [ + { + description: `You do not have permission to use this command.`, + color: embedColor + }, + ], + }) return } - const embedColor = Number(color.replace("#", "0x")) - const guildMembers = await interaction.guild!.members.fetch() - const memberList = guildMembers.map(member => { + const guildMembersUnfiltered = await interaction.guild!.members.fetch().then(members => members.map(member => { return { - id: member.user.id, - member: member, + id: member.id, + member: member } - }) + })) + const guildMembers = guildMembersUnfiltered.filter(gmember => gmember.member.roles.cache.has(guildRole)) + console.log(guildMembers.length) - for (const guildMember of memberList) { - const memberData = await verify.findOne({ - userID: guildMember.id, - }) + for (const gmember of guildMembers) { + const memberData = await verify.findOne({ userID: gmember.id }) if (!memberData) { - for (const role of removeThese) { - guildMember.member.roles.remove(role) - } - return - } - - if (memberData) { - const isGuildMember = getGuild(memberData.uuid) - - if (!isGuildMember) { - for (const role of removeThese) { - guildMember.member.roles.remove(role) - } - return - } - - const hypixelGuildMember = isGuildMember as unknown as GuildData - - const guildId = hypixelGuildMember!._id - const guildRank = hypixelGuildMember!.members!.find( - member => member.uuid === memberData.uuid, - )!.rank - - if (guildId === hypixelGuildID) { - if (guildRank === "Guild Master") { - guildMember.member.roles.add( - guildRole, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - guildStaff, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - gm, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - defaultMember, - "All users updated forcefully by staff", - ) - } - if (guildRank === "Manager") { - guildMember.member.roles.add( - guildRole, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - guildStaff, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - manager, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - defaultMember, - "All users updated forcefully by staff", - ) - } - if (guildRank === "Moderator") { - guildMember.member.roles.add( - guildRole, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - guildStaff, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - moderator, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - defaultMember, - "All users updated forcefully by staff", - ) - } - if (guildRank === "Beast") { - guildMember.member.roles.add( - guildRole, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - beast, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - defaultMember, - "All users updated forcefully by staff", - ) - } - if (guildRank === "Elite") { - guildMember.member.roles.add( - guildRole, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - elite, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - defaultMember, - "All users updated forcefully by staff", - ) - } - if (guildRank === "Member") { - guildMember.member.roles.add( - guildRole, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - member, - "All users updated forcefully by staff", - ) - guildMember.member.roles.add( - defaultMember, - "All users updated forcefully by staff", - ) - } - } else { - for (const role of removeThese) { - guildMember.member.roles.remove(role) - } - } + await gmember.member.roles.remove(removeThese) + continue } } - interaction.editReply({ - embeds: [ - { - color: embedColor, - description: "Successfully updated all users.", - footer: { - text: interaction.guild!.name, - icon_url: interaction.guild!.iconURL({ - forceStatic: false, - })!, - }, - }, - ], + await interaction.editReply({ + embeds: [{ + description: `Successfully updated all roles.`, + color: embedColor + }] }) }