105 lines
3.3 KiB
JavaScript
105 lines
3.3 KiB
JavaScript
const { SlashCommandBuilder, PermissionFlagsBits, userMention, EmbedBuilder } = require('discord.js');
|
|
const { hypixelGuildID, color } = require('../config/options.json');
|
|
const verify = require('../schemas/verifySchema.js');
|
|
const env = require('dotenv').config();
|
|
const dev = process.env.DEV;
|
|
const fetch = require('axios');
|
|
|
|
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.'))
|
|
.addSubcommand(subcommand =>
|
|
subcommand
|
|
.setName('listallverified')
|
|
.setDescription('List all verified users.'))
|
|
.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;
|
|
const embedColor = Number(color.replace("#", "0x"));
|
|
|
|
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
|
|
|
|
}
|
|
|
|
if (subcommand === 'listallverified') {
|
|
|
|
const verifiedUsers = await verify.find()
|
|
const mojang = "https://api.mojang.com/user/profile/"
|
|
|
|
let embed = new EmbedBuilder()
|
|
.setTitle(guild.name)
|
|
.setColor(embedColor)
|
|
.setDescription('List of all verified users')
|
|
|
|
for (let i = 0; i < verifiedUsers.length; i++) {
|
|
|
|
const user = verifiedUsers[i];
|
|
|
|
const userCheck = await fetch(mojang + user.uuid);
|
|
const ign = userCheck.data.name;
|
|
|
|
const mentionedUser = userMention(user.userID);
|
|
|
|
embed.addFields({
|
|
name: "**IGN:** " + ign,
|
|
value: "**Discord:** " + mentionedUser
|
|
})
|
|
|
|
}
|
|
|
|
await interaction.reply({
|
|
embeds: [embed]
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
}; |