From 3043f92dcbe78a6675ca351a3c82d6b559f449b8 Mon Sep 17 00:00:00 2001 From: Taken Date: Sun, 7 Jan 2024 22:52:07 +0100 Subject: [PATCH 1/2] Small tweaks to embed prefs --- src/commands/check.ts | 7 +------ src/commands/forceupdate.ts | 4 +--- src/commands/update.ts | 4 +--- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/commands/check.ts b/src/commands/check.ts index 59080f2..fc509f5 100644 --- a/src/commands/check.ts +++ b/src/commands/check.ts @@ -41,14 +41,9 @@ export = { async execute(interaction) { await interaction.deferReply({}) - const ign = interaction.options.getString("ign") + const ign = interaction.options.getString("ign")! const embedColor = Number(color.replace("#", "0x")) - if (!ign) { - await interaction.editReply("Please provide a player's IGN.") - return - } - await interaction.editReply({ embeds: [ { diff --git a/src/commands/forceupdate.ts b/src/commands/forceupdate.ts index 67d6a9b..8addaf3 100644 --- a/src/commands/forceupdate.ts +++ b/src/commands/forceupdate.ts @@ -45,9 +45,7 @@ export = { color: embedColor, footer: { text: interaction.guild!.name + " | " + devMessage, - icon_url: interaction.guild!.iconURL({ - forceStatic: false, - })!, + icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined, }, }, ], diff --git a/src/commands/update.ts b/src/commands/update.ts index 7828bfe..95908ae 100644 --- a/src/commands/update.ts +++ b/src/commands/update.ts @@ -33,9 +33,7 @@ export = { color: embedColor, footer: { text: interaction.guild!.name + " | " + devMessage, - icon_url: interaction.guild!.iconURL({ - forceStatic: false, - })!, + icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined, }, }, ], From a6d6d86288eaaddb0188f88cf2321e1d8c7ef99b Mon Sep 17 00:00:00 2001 From: Taken Date: Sun, 7 Jan 2024 22:55:23 +0100 Subject: [PATCH 2/2] Added updateuser contextmenu command --- src/commands-contextmenu/updateuser.ts | 165 +++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 src/commands-contextmenu/updateuser.ts diff --git a/src/commands-contextmenu/updateuser.ts b/src/commands-contextmenu/updateuser.ts new file mode 100644 index 0000000..8af1d67 --- /dev/null +++ b/src/commands-contextmenu/updateuser.ts @@ -0,0 +1,165 @@ +import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits, userMention } from "discord.js" +import { color, devMessage, hypixelGuildID } from "../../config/options.json" +import { ContextMenu } from "../interfaces" +import verifySchema from "../schemas/verifySchema" +import { getGuild, getHeadURL, getIGN } from "../utils/Hypixel" +import roleManage from "../utils/functions/rolesmanage" + +export = { + name: "Update User", + description: "Updates a user's roles", + type: "contextmenu", + dev: false, + + data: new ContextMenuCommandBuilder() + .setName("Update User") + .setType(ApplicationCommandType.User) + .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) + .setDMPermission(false), + + async execute(interaction) { + await interaction.deferReply({ ephemeral: true }) + + const targetId = interaction.targetId + const user = await interaction.guild!.members.fetch(targetId) + const usermentioned = userMention(user.user.id) + const verifyData = await verifySchema.findOne({ userID: user.user.id }) + const embedColor = Number(color.replace("#", "0x")) + + if (!verifyData) { + await interaction.editReply({ + embeds: [ + { + description: "User is not verified.", + color: embedColor, + footer: { + text: interaction.guild!.name + " | " + devMessage, + icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined, + }, + }, + ], + }) + return + } + + await interaction.editReply({ + embeds: [ + { + description: "Fetching ign...", + color: embedColor, + }, + ], + }) + + const ign = (await getIGN(verifyData.uuid)) as string + const head = await getHeadURL(ign) + + await interaction.editReply({ + embeds: [ + { + description: "Fetching guild data...", + color: embedColor, + }, + ], + }) + + const guild = await getGuild(verifyData.uuid) + + let responseGuildID: string | null + if (!guild) { + responseGuildID = null + } else { + responseGuildID = guild._id + } + + if (responseGuildID !== hypixelGuildID) { + const roles = roleManage("default") + await user.roles.remove(roles.rolesToRemove, "User was force updated.") + await user.roles.add(roles.rolesToAdd, "User was force updated.") + + await interaction.editReply({ + embeds: [ + { + description: usermentioned + " was given the the Default Member role.", + color: embedColor, + thumbnail: { + url: head!, + }, + footer: { + text: interaction.guild!.name + " | " + devMessage, + icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined, + }, + }, + ], + }) + return + } + + if (responseGuildID === hypixelGuildID) { + const GuildMembers = guild!.members + const guildRank = GuildMembers.find( member => member.uuid === verifyData.uuid)!.rank + let replyRank: string | null = null + + await user.roles.add(roleManage("default").rolesToAdd, "User was force updated.") + + if (guildRank === "Guild Master") { + const roles = roleManage("gm") + await user.roles.remove(roles.rolesToRemove, "User was force updated.") + await user.roles.add(roles.rolesToAdd, "User was force updated.") + replyRank = "Guild Master" + } + + if (guildRank === "Manager") { + const roles = roleManage("manager") + await user.roles.remove(roles.rolesToRemove, "User was force updated.") + await user.roles.add(roles.rolesToAdd, "User was force updated.") + replyRank = "Manager" + } + + if (guildRank === "Moderator") { + const roles = roleManage("moderator") + await user.roles.remove(roles.rolesToRemove, "User was force updated.") + await user.roles.add(roles.rolesToAdd, "User was force updated.") + replyRank = "Moderator" + } + + if (guildRank === "Beast") { + const roles = roleManage("beast") + await user.roles.remove(roles.rolesToRemove, "User was force updated.") + await user.roles.add(roles.rolesToAdd, "User was force updated.") + replyRank = "Beast" + } + + if (guildRank === "Elite") { + const roles = roleManage("elite") + await user.roles.remove(roles.rolesToRemove, "User was force updated.") + await user.roles.add(roles.rolesToAdd, "User was force updated.") + replyRank = "Elite" + } + + if (guildRank === "Member") { + const roles = roleManage("member") + await user.roles.remove(roles.rolesToRemove, "User was force updated.") + await user.roles.add(roles.rolesToAdd, "User was force updated.") + replyRank = "Member" + } + + await interaction.editReply({ + embeds: [ + { + description: + usermentioned + " was given the " + replyRank + " role.", + color: embedColor, + thumbnail: { + url: head!, + }, + footer: { + text: interaction.guild!.name + " | " + devMessage, + icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined, + }, + }, + ], + }) + } + } +} as ContextMenu \ No newline at end of file