Updated update discord members subcommand

This commit is contained in:
2023-12-30 18:50:13 +01:00
parent 7f7b14ce21
commit bd205eadc4

View File

@@ -1,191 +1,57 @@
import verify = require("../../schemas/verifySchema") import verify = require("../../schemas/verifySchema")
import { color, hypixelGuildID } from "../../../config/options.json" import { color } from "../../../config/options.json"
import { import {
admin,
gm, gm,
manager, manager,
moderator,
beast, beast,
elite, elite,
member, member,
guildRole, guildRole,
guildStaff, guildStaff
defaultMember,
} from "../../../config/roles.json" } from "../../../config/roles.json"
const removeThese = [gm, manager, beast, elite, member, guildRole, guildStaff] const removeThese = [gm, manager, beast, elite, member, guildRole, guildStaff]
import { getGuild } from "../../utils/Hypixel"
import { ChatInputCommandInteraction, GuildMember } from "discord.js" import { ChatInputCommandInteraction, GuildMember } from "discord.js"
import { GuildData } from "../../interfaces/Guild" import env from "../../utils/Env"
export async function updateDiscordRoles( export async function updateDiscordRoles( interaction: ChatInputCommandInteraction,): Promise<void> {
interaction: ChatInputCommandInteraction, const discordMember = interaction.member as GuildMember
): Promise<void> { const embedColor = Number(color.replace("#", "0x"))
await interaction.deferReply() await interaction.deferReply({ ephemeral: true })
const user = interaction.member as GuildMember if (discordMember.user.id !== env.prod.dev) {
await interaction.editReply({
if (!user.roles.cache.has(admin)) { embeds: [
await interaction.editReply( {
"You do not have permission to use this command.", description: `You do not have permission to use this command.`,
) color: embedColor
},
],
})
return return
} }
const embedColor = Number(color.replace("#", "0x")) const guildMembersUnfiltered = await interaction.guild!.members.fetch().then(members => members.map(member => {
const guildMembers = await interaction.guild!.members.fetch()
const memberList = guildMembers.map(member => {
return { return {
id: member.user.id, id: member.id,
member: member, member: member
} }
}) }))
const guildMembers = guildMembersUnfiltered.filter(gmember => gmember.member.roles.cache.has(guildRole))
console.log(guildMembers.length)
for (const guildMember of memberList) { for (const gmember of guildMembers) {
const memberData = await verify.findOne({ const memberData = await verify.findOne({ userID: gmember.id })
userID: guildMember.id,
})
if (!memberData) { if (!memberData) {
for (const role of removeThese) { await gmember.member.roles.remove(removeThese)
guildMember.member.roles.remove(role) continue
}
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)
}
}
} }
} }
interaction.editReply({ await interaction.editReply({
embeds: [ embeds: [{
{ description: `Successfully updated all roles.`,
color: embedColor, color: embedColor
description: "Successfully updated all users.", }]
footer: {
text: interaction.guild!.name,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
}) })
} }