diff --git a/commands/config.js b/commands/config.js index a03e98d..cf22b1b 100644 --- a/commands/config.js +++ b/commands/config.js @@ -39,6 +39,10 @@ module.exports = { subcommand .setName('sendrules-info') .setDescription('Send the rules and info message to a channel.')) + .addSubcommand(subcommand => + subcommand + .setName('reload') + .setDescription('Reload the bot.')) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDMPermission(false), @@ -49,6 +53,10 @@ module.exports = { const subcommand = interaction.options.getSubcommand(); const embedColor = Number(color.replace("#", "0x")); + if (subcommand === 'reload') { + await interaction.reply({ content: "In development.", ephemeral: true }); + } + if (subcommand === 'sendguildapplication') { const channel = interaction.options.getChannel('channel'); @@ -109,5 +117,9 @@ module.exports = { await interaction.reply({ content: 'Message sent', ephemeral: true }) } + + if (subcommand !== "sendguildinfo" || "sendrequirements" || "sendrules-info") { + await interaction.reply({ content: 'In development.', ephemeral: true }); + } } }; \ No newline at end of file diff --git a/commands/forceupdate.js b/commands/forceupdate.js new file mode 100644 index 0000000..18a3ef2 --- /dev/null +++ b/commands/forceupdate.js @@ -0,0 +1,238 @@ +const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require('discord.js'); +const { hypixelGuildID, color } = require('../config/options.json'); +const { gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff, defaultMember } = require('../config/roles.json'); +const mongoose = require('mongoose'); +const verify = require('../schemas/verifySchema.js') +const fetch = require('axios'); +const removeThese = [gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff] + +module.exports = { + name: 'forceupdate', + description: 'Force update the user', + type: 'slash', + + data: new SlashCommandBuilder() + .setName('forceupdate') + .setDescription('Force update the user') + .addUserOption(option => + option + .setName('user') + .setDescription('The user to force update') + .setRequired(true)) + .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) + .setDMPermission(false), + + async execute(interaction) { + + await interaction.deferReply(); + + const user = interaction.options.getUser('user'); + const usermentioned = userMention(user.id); + const guild = interaction.guild; + const verifyData = await verify.findOne({ userID: user.id }) + + const user1 = guild.members.cache.get(user.id); + const roleManage = user1.roles; + + if (!verifyData) { + interaction.editReply('That user is not verified.') + return + } + + const slothPixel = "https://api.slothpixel.me/api/players/"; + const guildAPI = "https://api.slothpixel.me/api/guilds/" + const mojangAPI = "https://api.mojang.com/user/profile/" + const minotar = "https://minotar.net/helm/"; + + const userCheck = await fetch(mojangAPI + verifyData.uuid); + const hypixelCheck = await fetch(slothPixel + verifyData.uuid); + const guildCheck = await fetch(guildAPI + verifyData.uuid); + const head = minotar + userCheck.data.name; + + const embedColor = Number(color.replace("#", "0x")); + const GuildMembers = await guildCheck.data.members; + const guildRank = GuildMembers.find(member => member.uuid === verifyData.uuid).rank; + + if (guildCheck.data.id !== hypixelGuildID) { + interaction.editReply({ + embeds: [{ + description: usermentioned + " was given the the Member role.", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + text: interaction.guild.name + " | Developed by @Taken#0002", + icon_url: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) + await roleManage.add(defaultMember) + return + } + + if (guildRank === 'Guild Master') { + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + + await roleManage.add(guildRole) + await roleManage.add(guildStaff) + await roleManage.add(gm) + await roleManage.add(defaultMember) + + + interaction.editReply({ + embeds: [{ + description: usermentioned + "'s rank has been updated to `Guild Master`", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + text: interaction.guild.name + " | Developed by @Taken#0002", + icon_url: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) + } + + if (guildRank === 'Manager') { + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + + await roleManage.add(guildRole) + await roleManage.add(guildStaff) + await roleManage.add(manager) + await roleManage.add(defaultMember) + + + interaction.editReply({ + embeds: [{ + description: usermentioned + "'s rank has been updated to `Manager`", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + text: interaction.guild.name + " | Developed by @Taken#0002", + icon_url: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) + } + + if (guildRank === 'Moderator') { + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + + await roleManage.add(guildRole) + await roleManage.add(guildStaff) + await roleManage.add(moderator) + await roleManage.add(defaultMember) + + + interaction.editReply({ + embeds: [{ + description: usermentioned + "'s rank has been updated to `Moderator`", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + text: interaction.guild.name + " | Developed by @Taken#0002", + icon_url: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) + + } + + if (guildRank === 'Beast') { + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + + await roleManage.add(guildRole) + await roleManage.add(beast) + await roleManage.add(defaultMember) + + + interaction.editReply({ + embeds: [{ + description: usermentioned + "'s rank has been updated to `Beast`.", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + text: interaction.guild.name + " | Developed by @Taken#0002", + icon_url: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) + return + } + + if (guildRank === 'Member') { + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + + await roleManage.add(guildRole) + await roleManage.add(member) + await roleManage.add(defaultMember) + + + interaction.editReply({ + embeds: [{ + description: usermentioned + "'s rank has been updated to `Member`.", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + text: interaction.guild.name + " | Developed by @Taken#0002", + icon_url: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) + return + } + + if (guildRank === 'Trial Member') { + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + + await roleManage.remove(gm && manager && moderator && beast && member && trialmember && guildRole && guildStaff) + await roleManage.add(guildRole) + await roleManage.add(trialmember) + await roleManage.add(defaultMember) + + + interaction.editReply({ + embeds: [{ + description: usermentioned + "'s rank has been updated to `Trial Member`.", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + text: interaction.guild.name + " | Developed by @Taken#0002", + icon_url: interaction.guild.iconURL({ dynamic: true }) + } + }] + }) + return + } + } +} \ No newline at end of file diff --git a/commands/forceverify.js b/commands/forceverify.js index 6e96507..c34e8a8 100644 --- a/commands/forceverify.js +++ b/commands/forceverify.js @@ -41,6 +41,37 @@ module.exports = { const minotar = "https://minotar.net/helm/"; const embedColor = Number(color.replace("#", "0x")); + if (!user) { + interaction.editReply('Please provide a user to force verify.') + return + } + + if (!ign) { + interaction.editReply('Please provide a player\'s IGN.') + return + } + + const verifyData = await verify.findOne({ userID: user.id }) + + if (verifyData) { + interaction.editReply('That user is already verified.') + return + } + + try { + await fetch(mojang + ign); + } catch (err) { + interaction.editReply('That player doesn\'t exist. [Mojang]') + return + } + + try { + await fetch(slothPixel + ign); + } catch (err) { + interaction.editReply('That player doesn\'t exist. [Hypixel]') + return + } + const userCheck = await fetch(mojang + ign); const userUUID = userCheck.data.id; @@ -51,26 +82,6 @@ module.exports = { const GuildMembers = await guildCheck.data.members; const guildRank = GuildMembers.find(member => member.uuid === hypixelCheck.data.uuid).rank; - if (!user) { - interaction.reply('Please provide a user to force verify.') - return - } - - if (!ign) { - interaction.reply('Please provide a player\'s IGN.') - return - } - - if (!userUUID) { - interaction.reply('That player doesn\'t exist. [Mojang]') - return - } - - if (!hypixelCheck.data.uuid) { - interaction.reply('That player doesn\'t exist. [Hypixel]') - return - } - if (guildRank === "Guild Master" && guildCheck.data.id === hypixelGuildID) { await user.roles.add(gm); await user.roles.add(guildRole) @@ -106,21 +117,15 @@ module.exports = { await user.roles.add(defaultMember); - const verifyData = await verify.findOne({ userID: user.id }) - const newVerify = new verify({ _id: new mongoose.Types.ObjectId(), userID: user.id, uuid: userUUID }) - if (verifyData) { - await verify.findOneAndUpdate({ userID: user.id }, { uuid: userUUID }) - } else { - await newVerify.save() - } + await newVerify.save(); - await interaction.reply({ + await interaction.editReply({ embeds: [{ title: interaction.guild.name, description: "You have successfully force verified `" + fullUsername + "` with the account `" + hypixelCheck.data.username + "`.", diff --git a/commands/update.js b/commands/update.js index ec73775..603c136 100644 --- a/commands/update.js +++ b/commands/update.js @@ -6,6 +6,8 @@ const mongoose = require('mongoose'); const { color, hypixelGuildID } = require('../config/options.json'); const { gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff, defaultMember } = require('../config/roles.json'); +const removeThese = [gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff]; + module.exports = { name: 'update', description: 'Update your guild rank.', @@ -26,7 +28,7 @@ module.exports = { const roleManage = user.roles; if (!verifyData) { - interaction.reply('You are not verified.') + interaction.editReply('You are not verified.') return } @@ -62,7 +64,11 @@ module.exports = { } if (guildRank === 'Guild Master') { - await roleManage.remove(gm || manager || moderator || beast || member || trialmember || guildRole || guildStaff || defaultMember) + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + await roleManage.add(guildRole) await roleManage.add(guildStaff) await roleManage.add(gm) @@ -85,7 +91,11 @@ module.exports = { } if (guildRank === 'Manager') { - await roleManage.remove(gm || manager || moderator || beast || member || trialmember || guildRole || guildStaff) + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + await roleManage.add(guildRole) await roleManage.add(guildStaff) await roleManage.add(manager) @@ -108,7 +118,11 @@ module.exports = { } if (guildRank === 'Moderator') { - await roleManage.remove(gm || manager || moderator || beast || member || trialmember || guildRole || guildStaff) + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + await roleManage.add(guildRole) await roleManage.add(guildStaff) await roleManage.add(moderator) @@ -132,7 +146,11 @@ module.exports = { } if (guildRank === 'Beast') { - await roleManage.remove(gm || manager || moderator || beast || member || trialmember || guildRole) + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + await roleManage.add(guildRole) await roleManage.add(beast) await roleManage.add(defaultMember) @@ -155,7 +173,11 @@ module.exports = { } if (guildRank === 'Member') { - await roleManage.remove(gm || manager || moderator || beast || member || trialmember || guildRole) + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + await roleManage.add(guildRole) await roleManage.add(member) await roleManage.add(defaultMember) @@ -178,7 +200,11 @@ module.exports = { } if (guildRank === 'Trial Member') { - await roleManage.remove(gm || manager || moderator || beast || member || trialmember || guildRole) + + for (let i = 0; i < removeThese.length; i++) { + await roleManage.remove(removeThese[i]) + } + await roleManage.add(guildRole) await roleManage.add(trialmember) await roleManage.add(defaultMember)