Merge branch 'dev' into 'main'
Updated updateroles subcommand See merge request illegitimate/illegitimate-bot!148
This commit is contained in:
@@ -1,19 +1,34 @@
|
||||
import verify = require("../../schemas/verifySchema")
|
||||
import { color } from "../../../config/options.json"
|
||||
import { color, hypixelGuildID } from "../../../config/options.json"
|
||||
import {
|
||||
gm,
|
||||
manager,
|
||||
moderator,
|
||||
beast,
|
||||
elite,
|
||||
member,
|
||||
guildRole,
|
||||
guildStaff
|
||||
guildStaff,
|
||||
defaultMember,
|
||||
} from "../../../config/roles.json"
|
||||
const removeThese = [gm, manager, beast, elite, member, guildRole, guildStaff]
|
||||
const removeThese = [
|
||||
gm,
|
||||
manager,
|
||||
moderator,
|
||||
beast,
|
||||
elite,
|
||||
member,
|
||||
guildRole,
|
||||
guildStaff,
|
||||
]
|
||||
import { ChatInputCommandInteraction, GuildMember } from "discord.js"
|
||||
import env from "../../utils/Env"
|
||||
import { getGuild } from "../../utils/Hypixel"
|
||||
import { GuildData } from "../../interfaces"
|
||||
|
||||
export async function updateDiscordRoles( interaction: ChatInputCommandInteraction,): Promise<void> {
|
||||
export async function updateDiscordRoles(
|
||||
interaction: ChatInputCommandInteraction,
|
||||
): Promise<void> {
|
||||
const discordMember = interaction.member as GuildMember
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
await interaction.deferReply({ ephemeral: true })
|
||||
@@ -23,35 +38,173 @@ export async function updateDiscordRoles( interaction: ChatInputCommandInteracti
|
||||
embeds: [
|
||||
{
|
||||
description: `You do not have permission to use this command.`,
|
||||
color: embedColor
|
||||
color: embedColor,
|
||||
},
|
||||
],
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
const guildMembersUnfiltered = await interaction.guild!.members.fetch().then(members => members.map(member => {
|
||||
const guildMembers = await interaction
|
||||
.guild!.members.fetch()
|
||||
.then(members =>
|
||||
members.map(member => {
|
||||
return {
|
||||
id: member.id,
|
||||
member: member
|
||||
member: member,
|
||||
}
|
||||
}))
|
||||
const guildMembers = guildMembersUnfiltered.filter(gmember => gmember.member.roles.cache.has(guildRole))
|
||||
console.log(guildMembers.length)
|
||||
}),
|
||||
)
|
||||
|
||||
const guildData = (await getGuild(hypixelGuildID, "id")) as GuildData
|
||||
|
||||
const hypixelGuildMembers = guildData.members.map(gmember => {
|
||||
return {
|
||||
uuid: gmember.uuid,
|
||||
rank: gmember.rank,
|
||||
}
|
||||
})
|
||||
const guildMemberIDs = hypixelGuildMembers.map(gmember => gmember.uuid)
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
description: `Updating roles for ${guildMembers.length} members...`,
|
||||
color: embedColor,
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
for (const gmember of guildMembers) {
|
||||
const memberData = await verify.findOne({ userID: gmember.id })
|
||||
|
||||
if (!memberData) {
|
||||
await gmember.member.roles.remove(removeThese)
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
if (!guildMemberIDs.includes(memberData?.uuid || "none")) {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberIDs.includes(memberData!.uuid)) {
|
||||
const guildMemberRank = hypixelGuildMembers.find(
|
||||
gmember => gmember.uuid === memberData!.uuid,
|
||||
)!.rank
|
||||
console.log("Updating roles for " + gmember.member.user.username)
|
||||
|
||||
if (guildMemberRank === "Guild Master") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
gm,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildStaff,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Manager") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
manager,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildStaff,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Moderator") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
moderator,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildStaff,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Beast") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
beast,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Elite") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
elite,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Member") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
member,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
}
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [{
|
||||
embeds: [
|
||||
{
|
||||
description: `Successfully updated all roles.`,
|
||||
color: embedColor
|
||||
}]
|
||||
color: embedColor,
|
||||
},
|
||||
],
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user