diff --git a/commands/config.js b/commands/config.js index 2d60011..61dd08a 100644 --- a/commands/config.js +++ b/commands/config.js @@ -40,10 +40,6 @@ 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), diff --git a/commands/devel.js b/commands/devel.js new file mode 100644 index 0000000..aaf9405 --- /dev/null +++ b/commands/devel.js @@ -0,0 +1,67 @@ +const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require('discord.js'); +const { dev } = require('../config.json'); +const mongoose = require('mongoose'); +const fetch = require('axios'); +const verify = require('../schemas/verifySchema.js'); +const { hypixelGuildID } = require('../config/options.json'); + +module.exports = { + name: 'admin', + description: 'Admin command.', + type: 'slash', + + data: new SlashCommandBuilder() + .setName('devel') + .setDescription('Admin command.') + .addSubcommand(subcommand => + subcommand + .setName('dbclearnonguildmembers') + .setDescription('Clears the database of non-guild members.')) + .addSubcommand(subcommand => + subcommand + .setName('reload') + .setDescription('Reload the bot.')) + .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) + .setDMPermission(false), + + async execute(interaction) { + + const subcommand = interaction.options.getSubcommand(); + const user = interaction.user; + const userMentioned = userMention(user.id); + const guild = interaction.guild; + + if (subcommand === 'dbclearnonguildmembers') { + + await interaction.deferReply({ ephemeral: true }) + + if (user.id !== dev) { + interaction.editReply({ content: 'Due to you not screwing something up this command is restricted to only ' + userMentioned, ephemeral: true }) + return + } + + const slothPixel = "https://api.slothpixel.me/api/guilds/" + const verifiedUsers = await verify.find() + + verifiedUsers.forEach(async (user) => { + + const userGuild = await fetch(slothPixel + user.uuid); + + if (userGuild.data.id !== hypixelGuildID) { + await verify.deleteOne({ uuid: user.uuid }) + } + + }) + + interaction.editReply({ content: 'Done!', ephemeral: true }) + + } + + if (subcommand === 'reload') { + + await interaction.reply({ content: 'In development', ephemeral: true }) + return + + } + } +}; \ No newline at end of file diff --git a/commands/verify.js b/commands/verify.js index d549407..48d326f 100644 --- a/commands/verify.js +++ b/commands/verify.js @@ -66,9 +66,16 @@ module.exports = { const userUUID = userCheck.data.id; const hypixelCheck = await fetch(slothPixel + userUUID); - const guildCheck = await fetch(guildAPI + userUUID); const head = minotar + ign; + + try { + await fetch(guildAPI + userUUID); + var responseGuildID = guildCheck.data.id; + } catch (err) { + var responseGuildID = null; + } + const guildCheck = await fetch(guildAPI + userUUID); const GuildMembers = await guildCheck.data.members; const guildRank = GuildMembers.find(member => member.uuid === hypixelCheck.data.uuid).rank; @@ -78,41 +85,56 @@ module.exports = { return } - if (guildRank === "Guild Master" && guildCheck.data.id === hypixelGuildID) { - await user.roles.remove(gm && manager && moderator && beast && member && trialmember && guildRole && guildStaff) + if (responseGuildID !== hypixelGuildID) { + + await user.roles.add(defaultMember) + + await interaction.editReply({ + embeds: [{ + title: interaction.guild.name, + description: "You have successfully verified `" + fullUsername + "` with the account `" + hypixelCheck.data.username + "`.", + color: embedColor, + thumbnail: { + url: head + }, + footer: { + icon_url: interaction.guild.iconURL(), + text: interaction.guild.name + " | Developed by Taken#0002" + } + }] + }); + return + } + + if (guildRank === "Guild Master" && responseGuildID === hypixelGuildID) { await user.roles.add(gm); await user.roles.add(guildRole) await user.roles.add(guildStaff) } - if (guildRank === "Manager" && guildCheck.data.id === hypixelGuildID) { - await user.roles.remove(gm && manager && moderator && beast && member && trialmember && guildRole && guildStaff) + if (guildRank === "Manager" && responseGuildID === hypixelGuildID) { await user.roles.add(manager); await user.roles.add(guildRole) await user.roles.add(guildStaff) } - if (guildRank === "Moderator" && guildCheck.data.id === hypixelGuildID) { - await user.roles.remove(gm && manager && moderator && beast && member && trialmember && guildRole && guildStaff) + if (guildRank === "Moderator" && responseGuildID === hypixelGuildID) { await user.roles.add(moderator); await user.roles.add(guildRole) await user.roles.add(guildStaff) } - if (guildRank === "Beast" && guildCheck.data.id === hypixelGuildID) { - await user.roles.remove(gm && manager && moderator && beast && member && trialmember && guildRole && guildStaff) + if (guildRank === "Beast" && responseGuildID === hypixelGuildID) { await user.roles.add(beast); await user.roles.add(guildRole) } - if (guildRank === "Member" && guildCheck.data.id === hypixelGuildID) { - await user.roles.remove(gm && manager && moderator && beast && member && trialmember && guildRole && guildStaff) + if (guildRank === "Member" && responseGuildID === hypixelGuildID) { await user.roles.add(member); await user.roles.add(guildRole) } - if (guildRank === "Trial Member" && guildCheck.data.id === hypixelGuildID) { - await user.roles.remove(gm && manager && moderator && beast && member && trialmember && guildRole && guildStaff) + if (guildRank === "Trial Member" && responseGuildID === hypixelGuildID) { await user.roles.add(trialmember); await user.roles.add(guildRole) }