Revert "Beautifying"

This reverts commit 3a3bb89635
This commit is contained in:
2023-04-24 22:02:52 +00:00
parent 6dbb92241a
commit 510f6afd23
40 changed files with 3329 additions and 3951 deletions

View File

@@ -1,46 +1,34 @@
const {
ContextMenuCommandBuilder,
ApplicationCommandType,
PermissionFlagsBits,
userMention
} = require("discord.js");
const { ContextMenuCommandBuilder, ApplicationCommandType, PermissionFlagsBits, userMention} = require('discord.js');
module.exports = {
name: "congratsmessage",
description: "Congratulate a user.",
type: "contextmenu",
name: 'congratsmessage',
description: 'Congratulate a user.',
type: 'contextmenu',
data: new ContextMenuCommandBuilder()
.setName("Congratulate")
.setName('Congratulate')
.setType(ApplicationCommandType.Message)
.setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages),
async execute(interaction) {
const { targetId } = interaction;
const { targetId } = interaction
const message = await interaction.channel.messages.fetch(targetId);
if (!message) {
return interaction.reply({
content: "That user does not exist.",
ephemeral: true
});
return interaction.reply({ content: 'That user does not exist.', ephemeral: true });
}
const target = message.author;
await message.reply({
embeds: [
{
title: "Congratulations!",
description: `GG to ${userMention(target.id)}!`
}
]
embeds:[{
title: 'Congratulations!',
description: `GG to ${userMention(target.id)}!`,
}]
});
await message.react("🎉");
await message.react('🎉');
await interaction.reply({
content: `Sent a congrats message`,
ephemeral: true
});
await interaction.reply({ content: `Sent a congrats message`, ephemeral: true });
}
};

View File

@@ -1,55 +1,34 @@
const {
ContextMenuCommandBuilder,
ApplicationCommandType,
PermissionFlagsBits
} = require("discord.js");
const { ContextMenuCommandBuilder, ApplicationCommandType, PermissionFlagsBits } = require('discord.js');
module.exports = {
name: "resetnick",
description: "Reset your nickname.",
type: "contextmenu",
name: 'resetnick',
description: 'Reset your nickname.',
type: 'contextmenu',
data: new ContextMenuCommandBuilder()
.setName("Reset Nickname")
.setName('Reset Nickname')
.setType(ApplicationCommandType.User)
.setDefaultMemberPermissions(PermissionFlagsBits.ManageNicknames),
async execute(interaction) {
const { targetId } = interaction;
const { targetId } = interaction
const target = await interaction.guild.members.fetch(targetId);
if (!target) {
return interaction.reply({
content: "That user does not exist.",
ephemeral: true
});
return interaction.reply({ content: 'That user does not exist.', ephemeral: true });
}
if (target.id === interaction.user.id) {
return interaction.reply({
content: "You can't reset your own nickname.",
ephemeral: true
});
return interaction.reply({ content: 'You can\'t reset your own nickname.', ephemeral: true });
}
if (!target.manageable) {
return interaction.reply({
content: "I cannot reset that user's nickname.",
ephemeral: true
});
return interaction.reply({ content: 'I cannot reset that user\'s nickname.', ephemeral: true });
}
await target.setNickname(
target.user.username,
"Reset by " +
interaction.user.username +
"#" +
interaction.user.discriminator
);
await target.setNickname(target.user.username, 'Reset by ' + interaction.user.username + "#" + interaction.user.discriminator);
return interaction.reply({
content: `Reset ${target.user.username}'s nickname.`,
ephemeral: true
});
return interaction.reply({ content: `Reset ${target.user.username}'s nickname.`, ephemeral: true });
}
};

View File

@@ -1,44 +1,49 @@
const { SlashCommandBuilder, PermissionFlagsBits } = require("discord.js");
const getuuid = require("../utils/functions");
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
const getuuid = require('../utils/functions');
module.exports = {
name: "functest",
description: "Test command for the bot.",
type: "slash",
name: 'functest',
description: 'Test command for the bot.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("functest")
.setDescription("Test command for the bot.")
.addStringOption((option) =>
option.setName("test").setDescription("Test option.")
)
.addStringOption((option) =>
option.setName("test2").setDescription("Test option.")
)
.addStringOption((option) =>
option.setName("test3").setDescription("Test option.")
)
.setName('functest')
.setDescription('Test command for the bot.')
.addStringOption(option =>
option
.setName('test')
.setDescription('Test option.'))
.addStringOption(option =>
option
.setName('test2')
.setDescription('Test option.'))
.addStringOption(option =>
option
.setName('test3')
.setDescription('Test option.'))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
const test = interaction.options.getString("test");
const test2 = interaction.options.getString("test2");
const test3 = interaction.options.getString("test3");
const test = interaction.options.getString('test');
const test2 = interaction.options.getString('test2');
const test3 = interaction.options.getString('test3');
const uuid = await getuuid(test);
if (uuid === null) {
await interaction.reply({
content: "Invalid username.",
content: 'Invalid username.',
ephemeral: true
});
return;
return
}
await interaction.reply({
content: uuid,
ephemeral: true
});
}
};

View File

@@ -1,101 +1,88 @@
const {
SlashCommandBuilder,
PermissionFlagsBits,
userMention
} = require("discord.js");
const env = require("dotenv").config();
const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require('discord.js');
const env = require('dotenv').config();
const dev = process.env.DEV;
const { color } = require("../config/options.json");
const { admin, helper, muted } = require("../config/roles.json");
const { staffOtherChannel } = require("../config/options.json");
const { color } = require('../config/options.json');
const { admin, helper, muted } = require('../config/roles.json');
const { staffOtherChannel } = require('../config/options.json');
module.exports = {
name: "mute",
description: "Mute a user",
type: "slash",
name: 'mute',
description: 'Mute a user',
type: 'slash',
data: new SlashCommandBuilder()
.setName("mute")
.setDescription("Mute a user")
.addUserOption((option) =>
.setName('mute')
.setDescription('Mute a user')
.addUserOption(option =>
option
.setName("user")
.setDescription("The user to mute")
.setRequired(true)
)
.addStringOption((option) =>
option.setName("reason").setDescription("The reason for the mute")
)
.addStringOption((option) =>
option.setName("duration").setDescription("The duration of the mute")
)
.setName('user')
.setDescription('The user to mute')
.setRequired(true))
.addStringOption(option =>
option
.setName('reason')
.setDescription('The reason for the mute'))
.addStringOption(option =>
option
.setName('duration')
.setDescription('The duration of the mute'))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
const member1 = interaction.options.getUser("user");
const member = interaction.guild.members.cache.get(member1.id);
const reason =
interaction.options.getString("reason") ?? "No reason provided";
const duration = interaction.options.getString("duration");
const guild = interaction.guild;
const embedColor = Number(color.replace("#", "0x"));
const userRoles = await guild.members
.fetch(interaction.user.id)
.then((member) => member.roles.cache.map((role) => role.id));
const memberRoles = await guild.members
.fetch(member1.id)
.then((member) => member.roles.cache.map((role) => role.id));
const member1 = interaction.options.getUser('user');
const member = interaction.guild.members.cache.get(member1.id);
const reason = interaction.options.getString('reason') ?? 'No reason provided';
const duration = interaction.options.getString('duration');
const guild = interaction.guild;
const embedColor = Number(color.replace('#', '0x'));
const userRoles = await guild.members.fetch(interaction.user.id).then(member => member.roles.cache.map(role => role.id));
const memberRoles = await guild.members.fetch(member1.id).then(member => member.roles.cache.map(role => role.id));
await interaction.deferReply({});
if (!userRoles.includes(admin || helper)) {
await interaction.editReply({
embeds: [
{
embeds: [{
description: "You don't have permission to use this command.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
}]
});
return;
return
}
if (member.id === interaction.user.id) {
await interaction.editReply({
embeds: [
{
embeds: [{
description: "You can't mute yourself.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
}]
});
return;
return
}
if (member.id === dev) {
await interaction.editReply({
embeds: [
{
embeds: [{
description: "You can't mute my developer.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
}]
});
return;
return
}
// if (memberRoles.includes(admin) || memberRoles.includes(helper)) {
@@ -115,28 +102,25 @@ module.exports = {
if (!duration) {
await member.roles.add(muted, reason);
await interaction.editReply({
embeds: [
{
description:
"Successfully muted " + userMention(member1.id) + " forever.",
embeds: [{
description: "Successfully muted " + userMention(member1.id) + " forever.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
console.log(duration);
const weeks = duration.replace(/[0-9][dhms]/g, "").replace(/w/g, "");
const days = duration.replace(/[0-9][whms]/g, "").replace(/d/g, "");
const hours = duration.replace(/[0-9][wdms]/g, "").replace(/h/g, "");
const minutes = duration.replace(/[0-9][wdhs]/g, "").replace(/m/g, "");
const seconds = duration.replace(/[0-9][wdhm]/g, "").replace(/s/g, "");
const weeks = duration.replace(/[0-9][dhms]/g, '').replace(/w/g, '')
const days = duration.replace(/[0-9][whms]/g, '').replace(/d/g, '')
const hours = duration.replace(/[0-9][wdms]/g, '').replace(/h/g, '')
const minutes = duration.replace(/[0-9][wdhs]/g, '').replace(/m/g, '')
const seconds = duration.replace(/[0-9][wdhm]/g, '').replace(/s/g, '')
const nweeks = Number(weeks) ?? 0;
const ndays = Number(days) ?? 0;
@@ -144,36 +128,19 @@ module.exports = {
const nminutes = Number(minutes) ?? 0;
const nseconds = Number(seconds) ?? 0;
const time =
nweeks * 604800000 +
ndays * 86400000 +
nhours * 3600000 +
nminutes * 60000 +
nseconds * 1000;
const mutedTime =
(nweeks > 0 ? nweeks + " week(s), " : "") +
(ndays > 0 ? ndays + " day(s), " : "") +
(nhours > 0 ? nhours + " hour(s), " : "") +
(nminutes > 0 ? nminutes + " minute(s), " : "") +
(nseconds > 0 ? nseconds + " second(s)" : "");
const time = nweeks * 604800000 + ndays * 86400000 + nhours * 3600000 + nminutes * 60000 + nseconds * 1000;
const mutedTime = (nweeks > 0 ? nweeks + " week(s), " : "") + (ndays > 0 ? ndays + " day(s), " : "") + (nhours > 0 ? nhours + " hour(s), " : "") + (nminutes > 0 ? nminutes + " minute(s), " : "") + (nseconds > 0 ? nseconds + " second(s)" : "");
await member.roles.add(muted, reason);
await interaction.editReply({
embeds: [
{
description:
"Successfully muted " +
userMention(member1.id) +
" for " +
mutedTime +
".",
embeds: [{
description: "Successfully muted " + userMention(member1.id) + " for " + mutedTime + ".",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
}]
});
const logChannel = interaction.guild.channels.cache.get(staffOtherChannel);
@@ -181,17 +148,15 @@ module.exports = {
setTimeout(async () => {
await member.roles.remove(muted, "Mute duration has ended.");
await logChannel.send({
embeds: [
{
embeds: [{
description: userMention(member1.id) + " has been unmuted.",
color: embedColor,
footer: {
text: "ID: " + member1.id,
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}, time);
}
};

View File

@@ -1,55 +1,45 @@
const {
SlashCommandBuilder,
EmbedBuilder,
PermissionFlagsBits
} = require("discord.js");
const {
bwfdkr,
bwstars,
bwwins,
duelswins,
swstars
} = require("../config/reqs.json");
const getuuid = require("../utils/functions");
const env = require("dotenv").config();
const { SlashCommandBuilder, EmbedBuilder, PermissionFlagsBits } = require('discord.js');
const { bwfdkr, bwstars, bwwins, duelswins, swstars } = require('../config/reqs.json')
const getuuid = require('../utils/functions');
const env = require('dotenv').config();
const hypixelApiKey = process.env.HYPIXELAPI;
const { color } = require("../config/options.json");
const fetch = require("axios");
const { color } = require('../config/options.json');
const fetch = require('axios');
module.exports = {
name: "check",
description: "Check a player's stats.",
type: "slash",
name: 'check',
description: 'Check a player\'s stats.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("check")
.setDescription("Check a player's stats.")
.addStringOption((option) =>
.setName('check')
.setDescription('Check a player\'s stats.')
.addStringOption(option =>
option
.setName("ign")
.setDescription("The player's IGN.")
.setRequired(true)
)
.setName('ign')
.setDescription('The player\'s IGN.')
.setRequired(true))
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply({});
const ign = interaction.options.getString("ign");
const mojang = "https://api.mojang.com/users/profiles/minecraft/";
await interaction.deferReply({})
const ign = interaction.options.getString('ign');
const mojang = "https://api.mojang.com/users/profiles/minecraft/"
const slothPixel = "https://api.slothpixel.me/api/players/";
const guildAPI = "https://api.slothpixel.me/api/guilds/";
const guildAPI = "https://api.slothpixel.me/api/guilds/"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
if (!ign) {
await interaction.editReply("Please provide a player's IGN.");
return;
await interaction.editReply('Please provide a player\'s IGN.')
return
}
if ((await getuuid(ign)) === null) {
await interaction.editReply("That player doesn't exist. [Mojang]");
return;
if (await getuuid(ign) === null) {
await interaction.editReply('That player doesn\'t exist. [Mojang]')
return
}
const userUUID = await getuuid(ign);
@@ -57,84 +47,72 @@ module.exports = {
try {
await fetch(slothPixel + userUUID);
} catch (error) {
interaction.editReply("That player doesn't exist. [Hypixel]");
return;
interaction.editReply('That player doesn\'t exist. [Hypixel]')
return
}
const stats = await fetch(slothPixel + userUUID);
const head = minotar + ign;
if (!stats.data.uuid) {
interaction.editReply("That player doesn't exist. [Hypixel]");
return;
interaction.editReply('That player doesn\'t exist. [Hypixel]')
return
}
const rank_formatted = stats.data.rank_formatted;
const rank2 = rank_formatted.replace(/&[0-9a-fk-or]/g, "");
const rank_formatted = stats.data.rank_formatted
const rank2 = rank_formatted.replace(/&[0-9a-fk-or]/g, "")
if (rank2 === "") {
var rank = "";
var rank = ""
} else {
var rank = rank2 + " ";
var rank = rank2 + " "
}
try {
const guildCheck = await fetch(guildAPI + userUUID);
var guildName = guildCheck.data.name;
var guildName = guildCheck.data.name
} catch (error) {
var guildName = "None";
var guildName = "None"
}
const hsbwstars = stats.data.stats.BedWars.level;
const hsbwfkdr = stats.data.stats.BedWars.final_k_d;
const hsbwwins = stats.data.stats.BedWars.wins;
const hsswstars = stats.data.stats.SkyWars.level;
const hsduelswins = stats.data.stats.Duels.general.wins;
const hsbwstars = stats.data.stats.BedWars.level
const hsbwfkdr = stats.data.stats.BedWars.final_k_d
const hsbwwins = stats.data.stats.BedWars.wins
const hsswstars = stats.data.stats.SkyWars.level
const hsduelswins = stats.data.stats.Duels.general.wins
if (hsbwstars < bwstars && hsbwfkdr < bwfdkr && hsbwwins < bwwins) {
var bwtitle =
"<a:cross_a:1087808606897983539> This player does not meet the BedWars requirements.";
var bwtitle = "<a:cross_a:1087808606897983539> This player does not meet the BedWars requirements."
} else {
var bwtitle =
"<a:check_a:1087808632172847134> This player meets the BedWars requirements.";
var bwtitle = "<a:check_a:1087808632172847134> This player meets the BedWars requirements."
}
if (hsswstars < swstars) {
var swtitle =
"<a:cross_a:1087808606897983539> This player does not meet the SkyWars requirements.";
var swtitle = "<a:cross_a:1087808606897983539> This player does not meet the SkyWars requirements."
} else {
var swtitle =
"<a:check_a:1087808632172847134> This player meets the SkyWars requirements.";
var swtitle = "<a:check_a:1087808632172847134> This player meets the SkyWars requirements."
}
if (hsduelswins < duelswins) {
var duelstitle =
"<a:cross_a:1087808606897983539> This player does not meet the Duels requirements.";
var duelstitle = "<a:cross_a:1087808606897983539> This player does not meet the Duels requirements."
} else {
var duelstitle =
"<a:check_a:1087808632172847134> This player meets the Duels requirements.";
var duelstitle = "<a:check_a:1087808632172847134> This player meets the Duels requirements."
}
try {
const guildCheck = await fetch(guildAPI + userUUID);
const tag_formatted = guildCheck.data.tag_formatted;
const guildTag2 = tag_formatted.replace(/&[0-9a-fk-or]/g, "");
var guildTag = " " + guildTag2;
const tag_formatted = guildCheck.data.tag_formatted
const guildTag2 = tag_formatted.replace(/&[0-9a-fk-or]/g, "")
var guildTag = " " + guildTag2
} catch (error) {
var guildTag = "";
var guildTag = ""
}
await interaction.editReply({
embeds: [
{
embeds: [{
title: rank + stats.data.username + guildTag,
description:
"**Network Level:** `" +
stats.data.level.toString() +
"`\n" +
"**Current Guild:** `" +
guildName +
"`",
description: "**Network Level:** `" + stats.data.level.toString() + "`\n" +
"**Current Guild:** `" + guildName + "`",
color: embedColor,
thumbnail: {
url: head
@@ -146,58 +124,24 @@ module.exports = {
fields: [
{
name: bwtitle,
value:
"**➺ Stars:** `" +
stats.data.stats.BedWars.level.toString() +
" / " +
bwstars.toString() +
"`\n" +
"**➺ FKDR:** `" +
stats.data.stats.BedWars.final_k_d.toString() +
" / " +
bwfdkr.toString() +
"`\n" +
"**➺ Wins:** `" +
stats.data.stats.BedWars.wins.toString() +
" / " +
bwwins.toString() +
"`"
value: "**➺ Stars:** `" + stats.data.stats.BedWars.level.toString() + " / " + bwstars.toString() + "`\n" +
"**➺ FKDR:** `" + stats.data.stats.BedWars.final_k_d.toString() + " / " + bwfdkr.toString() + "`\n" +
"**➺ Wins:** `" + stats.data.stats.BedWars.wins.toString() + " / " + bwwins.toString() + "`"
},
{
name: swtitle,
value:
"**➺ Stars:** `" +
stats.data.stats.SkyWars.level.toFixed(2).toString() +
" / " +
swstars.toString() +
"`\n" +
"**➺ KDR:** `" +
stats.data.stats.SkyWars.kill_death_ratio.toString() +
"`\n" +
"**➺ Wins:** `" +
stats.data.stats.SkyWars.wins.toString() +
"`"
value: "**➺ Stars:** `" + stats.data.stats.SkyWars.level.toFixed(2).toString() + " / " + swstars.toString() + "`\n" +
"**➺ KDR:** `" + stats.data.stats.SkyWars.kill_death_ratio.toString() + "`\n" +
"**➺ Wins:** `" + stats.data.stats.SkyWars.wins.toString() + "`"
},
{
name: duelstitle,
value:
"**➺ Wins:** `" +
stats.data.stats.Duels.general.wins.toString() +
" / " +
duelswins.toString() +
"`\n" +
"**➺ KDR:** `" +
stats.data.stats.Duels.general.kd_ratio.toFixed(2).toString() +
"`\n" +
"**➺ WLR:** `" +
stats.data.stats.Duels.general.win_loss_ratio
.toFixed(2)
.toString() +
"`"
value: "**➺ Wins:** `" + stats.data.stats.Duels.general.wins.toString() + " / " + duelswins.toString() + "`\n" +
"**➺ KDR:** `" + stats.data.stats.Duels.general.kd_ratio.toFixed(2).toString() + "`\n" +
"**➺ WLR:** `" + stats.data.stats.Duels.general.win_loss_ratio.toFixed(2).toString() + "`"
}
]
}
]
});
}]
})
}
};

View File

@@ -1,83 +1,70 @@
const {
SlashCommandBuilder,
PermissionFlagsBits,
ButtonBuilder,
ActionRowBuilder,
ButtonStyle,
EmbedBuilder,
WebhookClient
} = require("discord.js");
const { title } = require("process");
const { color } = require("../config/options.json");
const { SlashCommandBuilder, PermissionFlagsBits, ButtonBuilder, ActionRowBuilder, ButtonStyle, EmbedBuilder, WebhookClient } = require('discord.js');
const { title } = require('process');
const { color } = require('../config/options.json');
module.exports = {
name: "config",
description: "Configure the bot.",
type: "slash",
name: 'config',
description: 'Configure the bot.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("config")
.setDescription("Configure the bot.")
.addSubcommand((subcommand) =>
.setName('config')
.setDescription('Configure the bot.')
.addSubcommand(subcommand =>
subcommand
.setName("sendguildapplication")
.setDescription("Send the application message to a channel.")
.addChannelOption((option) =>
.setName('sendguildapplication')
.setDescription('Send the application message to a channel.')
.addChannelOption(option =>
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true)
)
)
.addSubcommand((subcommand) =>
.setName('channel')
.setDescription('The channel to send the application to.')
.setRequired(true)))
.addSubcommand(subcommand =>
subcommand
.setName("sendstaffapplication")
.setDescription("Send the application message to a channel.")
.addChannelOption((option) =>
.setName('sendstaffapplication')
.setDescription('Send the application message to a channel.')
.addChannelOption(option =>
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true)
)
)
.addSubcommand((subcommand) =>
.setName('channel')
.setDescription('The channel to send the application to.')
.setRequired(true)))
.addSubcommand(subcommand =>
subcommand
.setName("sendguildinfo")
.setDescription("Send the guild info message to a channel.")
)
.addSubcommand((subcommand) =>
.setName('sendguildinfo')
.setDescription('Send the guild info message to a channel.'))
.addSubcommand(subcommand =>
subcommand
.setName("sendrequirements")
.setDescription("Send the guild requirements message to a channel.")
)
.addSubcommand((subcommand) =>
.setName('sendrequirements')
.setDescription('Send the guild requirements message to a channel.'))
.addSubcommand(subcommand =>
subcommand
.setName("sendrules-info")
.setDescription("Send the rules and info message to a channel.")
)
.setName('sendrules-info')
.setDescription('Send the rules and info message to a channel.'))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
const user = interaction.user;
const guild = interaction.guild;
const subcommand = interaction.options.getSubcommand();
const embedColor = Number(color.replace("#", "0x"));
if (subcommand === "reload") {
await interaction.reply({ content: "In development", ephemeral: true });
return;
if (subcommand === 'reload') {
await interaction.reply({ content: 'In development', ephemeral: true })
return
}
if (subcommand === "sendguildapplication") {
const channel = interaction.options.getChannel("channel");
if (subcommand === 'sendguildapplication') {
const channel = interaction.options.getChannel('channel');
await channel.send({
embeds: [
{
title: "Guild Application",
description:
"You can apply for the guild by clicking the button below.",
embeds: [{
title: 'Guild Application',
description: "You can apply for the guild by clicking the button below.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
@@ -86,30 +73,28 @@ module.exports = {
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true })
}
}
],
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setCustomId("guildapply")
.setLabel("Apply")
.setCustomId('guildapply')
.setLabel('Apply')
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" })
.setEmoji({ name: '✅' })
)
]
});
await interaction.reply({ content: "Message sent", ephemeral: true });
})
await interaction.reply({ content: 'Message sent', ephemeral: true })
}
if (subcommand === "sendstaffapplication") {
const channel = interaction.options.getChannel("channel");
if (subcommand === 'sendstaffapplication') {
const channel = interaction.options.getChannel('channel');
await channel.send({
embeds: [
{
title: "Staff Application",
description:
"You can apply for the staff team by clicking the button below.",
embeds: [{
title: 'Staff Application',
description: "You can apply for the staff team by clicking the button below.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
@@ -118,28 +103,23 @@ module.exports = {
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true })
}
}
],
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setCustomId("staffapply")
.setLabel("Apply")
.setCustomId('staffapply')
.setLabel('Apply')
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" })
.setEmoji({ name: '✅' })
)
]
});
})
await interaction.reply({ content: "Message sent", ephemeral: true });
await interaction.reply({ content: 'Message sent', ephemeral: true })
}
if (
subcommand !== "sendguildinfo" ||
"sendrequirements" ||
"sendrules-info"
) {
await interaction.reply({ content: "In development.", ephemeral: true });
if (subcommand !== "sendguildinfo" || "sendrequirements" || "sendrules-info") {
await interaction.reply({ content: 'In development.', ephemeral: true });
}
}
};

View File

@@ -1,88 +1,86 @@
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 { 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");
const fetch = require('axios');
module.exports = {
name: "admin",
description: "Admin command.",
type: "slash",
name: 'admin',
description: 'Admin command.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("devel")
.setDescription("Admin command.")
.addSubcommand((subcommand) =>
.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) =>
.setName('dbclearnonguildmembers')
.setDescription('Clears the database of non-guild members.'))
.addSubcommand(subcommand =>
subcommand
.setName("listallverified")
.setDescription("List all verified users.")
)
.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 (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;
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();
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 });
await verify.deleteOne({ uuid: user.uuid })
}
if (subcommand === "reload") {
await interaction.reply({ content: "In development", ephemeral: true });
return;
})
interaction.editReply({ content: 'Done!', ephemeral: true })
}
if (subcommand === "listallverified") {
const verifiedUsers = await verify.find();
const mojang = "https://api.mojang.com/user/profile/";
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");
.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);
@@ -93,12 +91,15 @@ module.exports = {
embed.addFields({
name: "**IGN:** " + ign,
value: "**Discord:** " + mentionedUser
});
})
}
await interaction.reply({
embeds: [embed]
});
})
}
}
};

View File

@@ -1,74 +1,47 @@
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 verify = require("../schemas/verifySchema.js");
const fetch = require("axios");
const removeThese = [
gm,
manager,
moderator,
beast,
member,
trialmember,
guildRole,
guildStaff
];
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 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",
name: 'forceupdate',
description: 'Force update the user',
type: 'slash',
data: new SlashCommandBuilder()
.setName("forceupdate")
.setDescription("Force update the user")
.addUserOption((option) =>
.setName('forceupdate')
.setDescription('Force update the user')
.addUserOption(option =>
option
.setName("user")
.setDescription("The user to force update")
.setRequired(true)
)
.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 user = interaction.options.getUser('user');
const usermentioned = userMention(user.id);
const guild = interaction.guild;
const verifyData = await verify.findOne({ userID: user.id });
const verifyData = await verify.findOne({ userID: user.id })
const user1 = guild.members.cache.get(user.id);
const roleManage = user1.roles;
if (!verifyData) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await interaction.editReply({
embeds: [
{
description:
usermentioned + " was given the the Default Member role.",
embeds: [{
description: usermentioned + " was given the the Default Member role.",
color: embedColor,
thumbnail: {
url: head
@@ -77,16 +50,15 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
await roleManage.add(defaultMember, "User was force updated.");
return;
}]
})
await roleManage.add(defaultMember, "User was force updated.")
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 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);
@@ -101,18 +73,14 @@ module.exports = {
}
if (responseGuildID !== hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await interaction.editReply({
embeds: [
{
description:
usermentioned + " was given the the Default Member role.",
embeds: [{
description: usermentioned + " was given the the Default Member role.",
color: embedColor,
thumbnail: {
url: head
@@ -121,38 +89,32 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
await roleManage.add(defaultMember);
return;
}]
})
await roleManage.add(defaultMember)
return
}
const guildCheck = await fetch(guildAPI + verifyData.uuid);
const embedColor = Number(color.replace("#", "0x"));
const GuildMembers = await guildCheck.data.members;
const guildRank = GuildMembers.find(
(member) => member.uuid === verifyData.uuid
).rank;
const guildRank = GuildMembers.find(member => member.uuid === verifyData.uuid).rank;
if (guildRank === 'Guild Master' && responseGuildID === hypixelGuildID) {
if (guildRank === "Guild Master" && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await roleManage.add(guildRole, "User was force updated.");
await roleManage.add(guildStaff, "User was force updated.");
await roleManage.add(gm, "User was force updated.");
await roleManage.add(defaultMember, "User was force updated.");
await roleManage.add(guildRole, "User was force updated.")
await roleManage.add(guildStaff, "User was force updated.")
await roleManage.add(gm, "User was force updated.")
await roleManage.add(defaultMember, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned + "'s rank has been updated to `Guild Master`",
embeds: [{
description: usermentioned + "'s rank has been updated to `Guild Master`",
color: embedColor,
thumbnail: {
url: head
@@ -161,29 +123,25 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}
if (guildRank === "Manager" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Manager' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await roleManage.add(guildRole, "User was force updated.");
await roleManage.add(guildStaff, "User was force updated.");
await roleManage.add(manager, "User was force updated.");
await roleManage.add(defaultMember, "User was force updated.");
await roleManage.add(guildRole, "User was force updated.")
await roleManage.add(guildStaff, "User was force updated.")
await roleManage.add(manager, "User was force updated.")
await roleManage.add(defaultMember, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned + "'s rank has been updated to `Manager`",
embeds: [{
description: usermentioned + "'s rank has been updated to `Manager`",
color: embedColor,
thumbnail: {
url: head
@@ -192,29 +150,25 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}
if (guildRank === "Moderator" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Moderator' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await roleManage.add(guildRole, "User was force updated.");
await roleManage.add(guildStaff, "User was force updated.");
await roleManage.add(moderator, "User was force updated.");
await roleManage.add(defaultMember, "User was force updated.");
await roleManage.add(guildRole, "User was force updated.")
await roleManage.add(guildStaff, "User was force updated.")
await roleManage.add(moderator, "User was force updated.")
await roleManage.add(defaultMember, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned + "'s rank has been updated to `Moderator`",
embeds: [{
description: usermentioned + "'s rank has been updated to `Moderator`",
color: embedColor,
thumbnail: {
url: head
@@ -223,26 +177,24 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}
if (guildRank === "Beast" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Beast' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await roleManage.add(guildRole, "User was force updated.");
await roleManage.add(beast, "User was force updated.");
await roleManage.add(defaultMember, "User was force updated.");
await roleManage.add(guildRole, "User was force updated.")
await roleManage.add(beast, "User was force updated.")
await roleManage.add(defaultMember, "User was force updated.")
await interaction.editReply({
embeds: [
{
embeds: [{
description: usermentioned + "'s rank has been updated to `Beast`.",
color: embedColor,
thumbnail: {
@@ -252,29 +204,25 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
if (guildRank === "Member" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Member' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await roleManage.add(guildRole, "User was force updated.");
await roleManage.add(member, "User was force updated.");
await roleManage.add(defaultMember, "User was force updated.");
await roleManage.add(guildRole, "User was force updated.")
await roleManage.add(member, "User was force updated.")
await roleManage.add(defaultMember, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned + "'s rank has been updated to `Member`.",
embeds: [{
description: usermentioned + "'s rank has been updated to `Member`.",
color: embedColor,
thumbnail: {
url: head
@@ -283,29 +231,25 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
if (guildRank === "Trial Member" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Trial Member' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(
removeThese[i],
"Auto role removal. (Force Update)"
);
await roleManage.remove(removeThese[i], "Auto role removal. (Force Update)")
}
await roleManage.add(guildRole, "User was force updated.");
await roleManage.add(trialmember, "User was force updated.");
await roleManage.add(defaultMember, "User was force updated.");
await roleManage.add(guildRole, "User was force updated.")
await roleManage.add(trialmember, "User was force updated.")
await roleManage.add(defaultMember, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned + "'s rank has been updated to `Trial Member`.",
embeds: [{
description: usermentioned + "'s rank has been updated to `Trial Member`.",
color: embedColor,
thumbnail: {
url: head
@@ -314,10 +258,9 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
}
}
};

View File

@@ -1,84 +1,77 @@
const { SlashCommandBuilder, PermissionFlagsBits } = require("discord.js");
const env = require("dotenv").config();
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
const env = require('dotenv').config();
const hypixelApiKey = process.env.HYPIXELAPIKEY;
const fetch = require("axios");
const { color, hypixelGuildID } = require("../config/options.json");
const verify = require("../schemas/verifySchema.js");
const { mongoose } = require("mongoose");
const {
gm,
manager,
moderator,
beast,
member,
trialmember,
guildRole,
guildStaff,
defaultMember
} = require("../config/roles.json");
const fetch = require('axios');
const { color, hypixelGuildID } = require('../config/options.json');
const verify = require('../schemas/verifySchema.js')
const {mongoose} = require('mongoose');
const { gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff, defaultMember } = require('../config/roles.json');
module.exports = {
name: "forceverify",
description: "Force verify a user.",
type: "slash",
name: 'forceverify',
description: 'Force verify a user.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("forceverify")
.setDescription("Force verify a user.")
.addUserOption((option) =>
option.setName("user").setDescription("The user to force verify.")
)
.addStringOption((option) =>
option.setName("ign").setDescription("The user's in-game name.")
)
.setName('forceverify')
.setDescription('Force verify a user.')
.addUserOption(option =>
option
.setName('user')
.setDescription('The user to force verify.'))
.addStringOption(option =>
option
.setName('ign')
.setDescription('The user\'s in-game name.'))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply();
const user1 = interaction.options.getUser("user");
const user1 = interaction.options.getUser('user');
const user = interaction.guild.members.cache.get(user1.id);
const fullUsername = user1.username + "#" + user1.discriminator;
const ign = interaction.options.getString("ign");
const mod =
interaction.user.username + "#" + interaction.user.discriminator;
const fullUsername = user1.username + "#" + user1.discriminator
const ign = interaction.options.getString('ign');
const mod = interaction.user.username + "#" + interaction.user.discriminator
const mojang = "https://api.mojang.com/users/profiles/minecraft/";
const mojang = "https://api.mojang.com/users/profiles/minecraft/"
const slothPixel = "https://api.slothpixel.me/api/players/";
const guildAPI = "https://api.slothpixel.me/api/guilds/";
const guildAPI = "https://api.slothpixel.me/api/guilds/"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
if (!user) {
interaction.editReply("Please provide a user to force verify.");
return;
interaction.editReply('Please provide a user to force verify.')
return
}
if (!ign) {
interaction.editReply("Please provide a player's IGN.");
return;
interaction.editReply('Please provide a player\'s IGN.')
return
}
const verifyData = await verify.findOne({ userID: user.id });
const verifyData = await verify.findOne({ userID: user.id })
if (verifyData) {
interaction.editReply("That user is already verified.");
return;
interaction.editReply('That user is already verified.')
return
}
try {
await fetch(mojang + ign);
} catch (err) {
interaction.editReply("That player doesn't exist. [Mojang]");
return;
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;
interaction.editReply('That player doesn\'t exist. [Hypixel]')
return
}
const userCheck = await fetch(mojang + ign);
@@ -95,18 +88,13 @@ module.exports = {
}
if (responseGuildID !== hypixelGuildID) {
await user.roles.add(defaultMember, "User was force verified by " + mod);
await interaction.editReply({
embeds: [
{
embeds: [{
title: interaction.guild.name,
description:
"You have successfully force verified `" +
fullUsername +
"` with the account `" +
hypixelCheck.data.username +
"`.",
description: "You have successfully force verified `" + fullUsername + "` with the account `" + hypixelCheck.data.username + "`.",
color: embedColor,
thumbnail: {
url: head
@@ -115,49 +103,46 @@ module.exports = {
icon_url: interaction.guild.iconURL(),
text: interaction.guild.name + " | Developed by Taken#0002"
}
}
]
}]
});
return;
return
}
const guildCheck = await fetch(guildAPI + userUUID);
const GuildMembers = await guildCheck.data.members;
const guildRank = GuildMembers.find(
(member) => member.uuid === hypixelCheck.data.uuid
).rank;
const guildRank = GuildMembers.find(member => member.uuid === hypixelCheck.data.uuid).rank;
if (guildRank === "Guild Master" && guildCheck.data.id === hypixelGuildID) {
await user.roles.add(gm, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod);
await user.roles.add(guildStaff, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod)
await user.roles.add(guildStaff, "User was force verified by " + mod)
}
if (guildRank === "Manager" && guildCheck.data.id === hypixelGuildID) {
await user.roles.add(manager, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod);
await user.roles.add(guildStaff, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod)
await user.roles.add(guildStaff, "User was force verified by " + mod)
}
if (guildRank === "Moderator" && guildCheck.data.id === hypixelGuildID) {
await user.roles.add(moderator, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod);
await user.roles.add(guildStaff, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod)
await user.roles.add(guildStaff, "User was force verified by " + mod)
}
if (guildRank === "Beast" && guildCheck.data.id === hypixelGuildID) {
await user.roles.add(beast, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod)
}
if (guildRank === "Member" && guildCheck.data.id === hypixelGuildID) {
await user.roles.add(member, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod)
}
if (guildRank === "Trial Member" && guildCheck.data.id === hypixelGuildID) {
await user.roles.add(trialmember, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod);
await user.roles.add(guildRole, "User was force verified by " + mod)
}
await user.roles.add(defaultMember, "User was force verified by " + mod);
@@ -166,20 +151,14 @@ module.exports = {
_id: new mongoose.Types.ObjectId(),
userID: user.id,
uuid: userUUID
});
})
await newVerify.save();
await interaction.editReply({
embeds: [
{
embeds: [{
title: interaction.guild.name,
description:
"You have successfully force verified `" +
fullUsername +
"` with the account `" +
hypixelCheck.data.username +
"`.",
description: "You have successfully force verified `" + fullUsername + "` with the account `" + hypixelCheck.data.username + "`.",
color: embedColor,
thumbnail: {
url: head
@@ -188,8 +167,8 @@ module.exports = {
icon_url: interaction.guild.iconURL(),
text: interaction.guild.name + " | Developed by Taken#0002"
}
}
]
}]
});
}
};

View File

@@ -1,42 +1,42 @@
const { SlashCommandBuilder, ChannelType } = require("discord.js");
const { color } = require("../config/options.json");
const { SlashCommandBuilder, ChannelType } = require('discord.js');
const { color } = require('../config/options.json');
module.exports = {
name: "help",
description: "Help command",
type: "slash",
name: 'help',
description: 'Help command',
type: 'slash',
data: new SlashCommandBuilder()
.setName("help")
.setDescription("Help command")
.setName('help')
.setDescription('Help command')
.setDMPermission(true),
async execute(interaction) {
await interaction.deferReply({ ephemeral: true });
const embedColor = Number(color.replace("#", "0x"));
const embedColor = Number(color.replace('#', '0x'));
await interaction.editReply({
embeds: [
{
title: "Commands",
embeds: [{
title: 'Commands',
description: "List of commands",
fields: [
{
name: "/check",
value: "Check the stats of a player"
name: '/check',
value: 'Check the stats of a player'
},
{
name: "/reqs",
value: "Check the requirements of the guild"
name: '/reqs',
value: 'Check the requirements of the guild'
},
{
name: "/update",
value: "Update's your roles"
name: '/update',
value: 'Update\'s your roles'
},
{
name: "/help",
value: "Shows this message"
name: '/help',
value: 'Shows this message'
}
],
color: embedColor,
@@ -45,10 +45,10 @@ module.exports = {
},
footer: {
icon_url: interaction.guild.iconURL({ dynamic: true }),
text: interaction.guild.name + " | Developed by: @Taken#0001"
text: interaction.guild.name + ' | Developed by: @Taken#0001'
}
}
]
}]
});
}
};

View File

@@ -1,63 +1,50 @@
const { SlashCommandBuilder } = require("discord.js");
const { color } = require("../config/options.json");
const {
bwfdkr,
bwstars,
bwwins,
duelswins,
swstars
} = require("../config/reqs.json");
const { SlashCommandBuilder } = require('discord.js');
const { color } = require('../config/options.json');
const { bwfdkr, bwstars, bwwins, duelswins, swstars } = require('../config/reqs.json');
module.exports = {
name: "reqs",
description: "Displays the requirements for the guild.",
type: "slash",
name: 'reqs',
description: 'Displays the requirements for the guild.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("reqs")
.setDescription("Displays the requirements for the guild."),
.setName('reqs')
.setDescription('Displays the requirements for the guild.'),
async execute(interaction) {
await interaction.deferReply({ ephemeral: true });
const embedColor = Number(color.replace("#", "0x"));
await interaction.editReply({
embeds: [
{
title: "Requirements",
description:
"**You must make 100k-150k weekly GEXP.\nAs well as onne of the game stats below**",
embeds: [{
title: 'Requirements',
description: '**You must make 100k-150k weekly GEXP.\nAs well as onne of the game stats below**',
color: embedColor,
thumbnail: {
url: interaction.guild.iconURL()
},
fields: [
{
name: "**Bedwars**",
value:
"**Stars:** `" +
bwstars.toString() +
"`\n**Wins:** `" +
bwwins.toString() +
"`\n**FKDR:** `" +
bwfdkr.toString() +
"`"
name: '**Bedwars**',
value: '**Stars:** `' + bwstars.toString() +
'`\n**Wins:** `' + bwwins.toString() +
'`\n**FKDR:** `' + bwfdkr.toString() + '`'
},
{
name: "**Skywars**",
value: "**Stars:** `" + swstars.toString() + "`"
name: '**Skywars**',
value: '**Stars:** `' + swstars.toString() + '`'
},
{
name: "**Duels**",
value: "**Wins:** `" + duelswins.toString() + "`"
name: '**Duels**',
value: '**Wins:** `' + duelswins.toString() + '`'
}
],
footer: {
text: interaction.guild.name + " | Developed by: @Taken#0002",
text: interaction.guild.name + ' | Developed by: @Taken#0002',
icon_url: interaction.guild.iconURL()
}
}]
})
}
]
});
}
};

View File

@@ -1,46 +1,41 @@
const { SlashCommandBuilder, PermissionFlagsBits } = require("discord.js");
const { color } = require("../config/options.json");
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
const { color } = require('../config/options.json');
module.exports = {
name: "send",
description: "Send a message to a channel.",
type: "slash",
name: 'send',
description: 'Send a message to a channel.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("send")
.setDescription("Send a message to a channel.")
.addStringOption((option) =>
option.setName("message").setDescription("The message to send.")
)
.addChannelOption((option) =>
.setName('send')
.setDescription('Send a message to a channel.')
.addStringOption(option =>
option
.setName("channel")
.setDescription("The channel to send the message to.")
)
.setName('message')
.setDescription('The message to send.'))
.addChannelOption(option =>
option
.setName('channel')
.setDescription('The channel to send the message to.'))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply({ ephemeral: true });
const message = interaction.options.getString("message");
const channel = interaction.options.getChannel("channel");
const message = interaction.options.getString('message');
const channel = interaction.options.getChannel('channel');
const embedColor = Number(color.replace("#", "0x"));
if (!message) {
interaction.editReply({
content: "Please provide a message to send.",
ephemeral: true
});
return;
interaction.editReply({ content: 'Please provide a message to send.', ephemeral: true })
return
}
if (!channel) {
interaction.editReply({
content: "Please provide a channel to send the message to.",
ephemeral: true
});
return;
interaction.editReply({ content: 'Please provide a channel to send the message to.', ephemeral: true })
return
}
channel.send({

View File

@@ -1,50 +1,39 @@
const {
SlashCommandBuilder,
PermissionFlagsBits,
userMention
} = require("discord.js");
const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require('discord.js')
module.exports = {
name: "setnick",
description: "Set your nickname",
type: "slash",
name: 'setnick',
description: 'Set your nickname',
type: 'slash',
data: new SlashCommandBuilder()
.setName("setnick")
.setDescription("Set your nickname")
.addUserOption((option) =>
.setName('setnick')
.setDescription('Set your nickname')
.addUserOption(option =>
option
.setName("user")
.setDescription("The user to set the nickname for")
.setRequired(true)
)
.addStringOption((option) =>
.setName('user')
.setDescription('The user to set the nickname for')
.setRequired(true))
.addStringOption(option =>
option
.setName("nickname")
.setDescription("The nickname to set")
.setRequired(true)
)
.setName('nickname')
.setDescription('The nickname to set')
.setRequired(true))
.setDefaultMemberPermissions(PermissionFlagsBits.ManageNicknames)
.setDMPermission(false),
async execute(interaction) {
const user = interaction.options.getUser("user");
const nickname = interaction.options.getString("nickname");
const user = interaction.options.getUser('user');
const nickname = interaction.options.getString('nickname');
const member = await interaction.guild.members.fetch(user.id);
if (!member.manageable) {
return interaction.reply({
content: "I cannot set the nickname for this user!",
ephemeral: true
});
return interaction.reply({ content: 'I cannot set the nickname for this user!', ephemeral: true });
}
await member.setNickname(nickname, `Set by ${interaction.user.tag}`);
await interaction.reply({
content:
"Set the nickname of " + userMention(member.id) + " to " + nickname,
ephemeral: true
});
await interaction.reply({ content: "Set the nickname of " + userMention(member.id) + " to " + nickname, ephemeral: true });
}
}
};

View File

@@ -1,64 +1,59 @@
const { SlashCommandBuilder, PermissionFlagsBits } = require("discord.js");
const { color } = require("../config/options.json");
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
const { color } = require('../config/options.json');
module.exports = {
name: "slowmode",
description: "Set the slowmode of a channel.",
type: "slash",
name: 'slowmode',
description: 'Set the slowmode of a channel.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("slowmode")
.setDescription("Set the slowmode of a channel.")
.addIntegerOption((option) =>
.setName('slowmode')
.setDescription('Set the slowmode of a channel.')
.addIntegerOption(option =>
option
.setName("seconds")
.setDescription("The amount of seconds to set the slowmode to.")
)
.addChannelOption((option) =>
.setName('seconds')
.setDescription('The amount of seconds to set the slowmode to.'))
.addChannelOption(option =>
option
.setName("channel")
.setDescription("The channel to set the slowmode of.")
)
.setName('channel')
.setDescription('The channel to set the slowmode of.'))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply({ ephermeral: true });
const seconds = interaction.options.getInteger("seconds") ?? 5;
const channel =
interaction.options.getChannel("channel") ?? interaction.channel;
const seconds = interaction.options.getInteger('seconds') ?? 5
const channel = interaction.options.getChannel('channel') ?? interaction.channel
const embedColor = Number(color.replace("#", "0x"));
if (seconds > 21600) {
await channel.setRateLimitPerUser(21600);
await channel.setRateLimitPerUser(21600)
await interaction.editReply({
embeds: [
{
embeds: [{
description: `Set the slowmode of ${channel} to 21600 seconds.`,
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by: @Taken#0001",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
await interaction.editReply({
embeds: [
{
embeds: [{
description: `Set the slowmode of ${channel} to ${seconds} seconds.`,
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by: @Taken#0001",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
await channel.setRateLimitPerUser(seconds)
}
]
});
await channel.setRateLimitPerUser(seconds);
}
};

View File

@@ -1,58 +1,40 @@
const { SlashCommandBuilder } = require("discord.js");
const env = require("dotenv").config();
const { SlashCommandBuilder } = require('discord.js');
const env = require('dotenv').config();
const hypixelApiKey = process.env.HYPIXELAPIKEY;
const fetch = require("axios");
const verify = require("../schemas/verifySchema.js");
const { color, hypixelGuildID } = require("../config/options.json");
const {
gm,
manager,
moderator,
beast,
member,
trialmember,
guildRole,
guildStaff,
defaultMember
} = require("../config/roles.json");
const fetch = require('axios');
const verify = require('../schemas/verifySchema.js')
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
];
const removeThese = [gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff];
module.exports = {
name: "update",
description: "Update your guild rank.",
type: "slash",
name: 'update',
description: 'Update your guild rank.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("update")
.setDescription("Update your guild rank.")
.setName('update')
.setDescription('Update your guild rank.')
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply();
const user1 = interaction.user;
const user = interaction.guild.members.cache.get(user1.id);
const verifyData = await verify.findOne({ userID: user.id });
const verifyData = await verify.findOne({ userID: user.id })
const roleManage = user.roles;
if (!verifyData) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Updated your roles to `Default Member`",
color: embedColor,
thumbnail: {
@@ -62,15 +44,14 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
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 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);
@@ -84,15 +65,15 @@ module.exports = {
}
if (responseGuildID !== hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await roleManage.add(defaultMember, "User used the update command");
await roleManage.add(defaultMember, "User used the update command")
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Updated your roles to `Default Member`",
color: embedColor,
thumbnail: {
@@ -102,10 +83,9 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
const guildCheck = await fetch(guildAPI + verifyData.uuid);
@@ -113,23 +93,22 @@ module.exports = {
const embedColor = Number(color.replace("#", "0x"));
const GuildMembers = guildCheck.data.members;
const guildRank = GuildMembers.find(
(member) => member.uuid === verifyData.uuid
).rank;
const guildRank = GuildMembers.find(member => member.uuid === verifyData.uuid).rank;
if (guildRank === 'Guild Master' && responseGuildID === hypixelGuildID) {
if (guildRank === "Guild Master" && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await roleManage.add(guildRole, "User used the update command");
await roleManage.add(guildStaff, "User used the update command");
await roleManage.add(gm, "User used the update command");
await roleManage.add(defaultMember, "User used the update command");
await roleManage.add(guildRole, "User used the update command")
await roleManage.add(guildStaff, "User used the update command")
await roleManage.add(gm, "User used the update command")
await roleManage.add(defaultMember, "User used the update command")
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Your rank has been updated to `Guild Master`",
color: embedColor,
thumbnail: {
@@ -139,24 +118,24 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}
if (guildRank === "Manager" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Manager' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await roleManage.add(guildRole, "User used the update command");
await roleManage.add(guildStaff, "User used the update command");
await roleManage.add(manager, "User used the update command");
await roleManage.add(defaultMember, "User used the update command");
await roleManage.add(guildRole, "User used the update command")
await roleManage.add(guildStaff, "User used the update command")
await roleManage.add(manager, "User used the update command")
await roleManage.add(defaultMember, "User used the update command")
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Your rank has been updated to `Manager`",
color: embedColor,
thumbnail: {
@@ -166,24 +145,24 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}
if (guildRank === "Moderator" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Moderator' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await roleManage.add(guildRole, "User used the update command");
await roleManage.add(guildStaff, "User used the update command");
await roleManage.add(moderator, "User used the update command");
await roleManage.add(defaultMember, "User used the update command");
await roleManage.add(guildRole, "User used the update command")
await roleManage.add(guildStaff, "User used the update command")
await roleManage.add(moderator, "User used the update command")
await roleManage.add(defaultMember, "User used the update command")
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Your rank has been updated to `Moderator`",
color: embedColor,
thumbnail: {
@@ -193,23 +172,24 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}
if (guildRank === "Beast" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Beast' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await roleManage.add(guildRole, "User used the update command");
await roleManage.add(beast, "User used the update command");
await roleManage.add(defaultMember, "User used the update command");
await roleManage.add(guildRole, "User used the update command")
await roleManage.add(beast, "User used the update command")
await roleManage.add(defaultMember, "User used the update command")
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Your rank has been updated to `Beast`.",
color: embedColor,
thumbnail: {
@@ -219,24 +199,24 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
if (guildRank === "Member" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Member' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await roleManage.add(guildRole, "User used the update command");
await roleManage.add(member, "User used the update command");
await roleManage.add(defaultMember, "User used the update command");
await roleManage.add(guildRole, "User used the update command")
await roleManage.add(member, "User used the update command")
await roleManage.add(defaultMember, "User used the update command")
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Your rank has been updated to `Member`.",
color: embedColor,
thumbnail: {
@@ -246,24 +226,24 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
return;
}]
})
return
}
if (guildRank === "Trial Member" && responseGuildID === hypixelGuildID) {
if (guildRank === 'Trial Member' && responseGuildID === hypixelGuildID) {
for (let i = 0; i < removeThese.length; i++) {
await roleManage.remove(removeThese[i], "Auto role removal. (Update)");
await roleManage.remove(removeThese[i], "Auto role removal. (Update)")
}
await roleManage.add(guildRole, "User used the update command");
await roleManage.add(trialmember, "User used the update command");
await roleManage.add(defaultMember, "User used the update command");
await roleManage.add(guildRole, "User used the update command")
await roleManage.add(trialmember, "User used the update command")
await roleManage.add(defaultMember, "User used the update command")
await interaction.editReply({
embeds: [
{
embeds: [{
description: "Your rank has been updated to `Trial Member`.",
color: embedColor,
thumbnail: {
@@ -273,10 +253,10 @@ module.exports = {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
]
});
return;
}
}
};

View File

@@ -1,73 +1,66 @@
const { SlashCommandBuilder } = require("discord.js");
const env = require("dotenv").config();
const { SlashCommandBuilder } = require('discord.js');
const env = require('dotenv').config();
const hypixelApiKey = process.env.HYPIXELAPIKEY;
const fetch = require("axios");
const { color, hypixelGuildID } = require("../config/options.json");
const verify = require("../schemas/verifySchema.js");
const mongoose = require("mongoose");
const {
gm,
manager,
moderator,
beast,
member,
trialmember,
guildRole,
guildStaff,
defaultMember
} = require("../config/roles.json");
const fetch = require('axios');
const { color, hypixelGuildID } = require('../config/options.json');
const verify = require('../schemas/verifySchema.js')
const mongoose = require('mongoose');
const { gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff, defaultMember } = require('../config/roles.json');
module.exports = {
name: "verify",
description: "Verify yourself as a member of the server.",
type: "slash",
name: 'verify',
description: 'Verify yourself as a member of the server.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("verify")
.setDescription("Verify yourself as a member of the server.")
.addStringOption((option) =>
option.setName("ign").setDescription("Your in-game name.")
)
.setName('verify')
.setDescription('Verify yourself as a member of the server.')
.addStringOption(option =>
option
.setName('ign')
.setDescription('Your in-game name.'))
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply();
const user1 = interaction.user;
const user = await interaction.guild.members.fetch(user1.id);
const fullUsername = user.user.username + "#" + user.user.discriminator;
const ign = interaction.options.getString("ign");
const mojang = "https://api.mojang.com/users/profiles/minecraft/";
const fullUsername = user.user.username + "#" + user.user.discriminator
const ign = interaction.options.getString('ign');
const mojang = "https://api.mojang.com/users/profiles/minecraft/"
const slothPixel = "https://api.slothpixel.me/api/players/";
const guildAPI = "https://api.slothpixel.me/api/guilds/";
const guildAPI = "https://api.slothpixel.me/api/guilds/"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
const verifyData = await verify.findOne({ userID: user.id });
const verifyData = await verify.findOne({ userID: user.id })
if (verifyData) {
interaction.editReply("You are already verified.");
return;
interaction.editReply('You are already verified.')
return
}
if (!ign) {
interaction.editReply("Please provide a player's IGN.");
return;
interaction.editReply('Please provide a player\'s IGN.')
return
}
try {
await fetch(mojang + ign);
} catch (err) {
interaction.editReply("That player doesn't exist. [Mojang]");
return;
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;
interaction.editReply('That player doesn\'t exist. [Hypixel]')
return
}
const userCheck = await fetch(mojang + ign);
@@ -77,10 +70,8 @@ module.exports = {
const head = minotar + ign;
if (hypixelCheck.data.links.DISCORD !== fullUsername) {
interaction.editReply(
"Your Discord tag does not match your in-game tag."
);
return;
interaction.editReply('Your Discord tag does not match your in-game tag.')
return
}
try {
@@ -91,18 +82,13 @@ module.exports = {
}
if (responseGuildID !== hypixelGuildID) {
await user.roles.add(defaultMember, "Verification");
await user.roles.add(defaultMember, "Verification")
await interaction.editReply({
embeds: [
{
embeds: [{
title: interaction.guild.name,
description:
"You have successfully verified `" +
fullUsername +
"` with the account `" +
hypixelCheck.data.username +
"`.",
description: "You have successfully verified `" + fullUsername + "` with the account `" + hypixelCheck.data.username + "`.",
color: embedColor,
thumbnail: {
url: head
@@ -111,71 +97,62 @@ module.exports = {
icon_url: interaction.guild.iconURL(),
text: interaction.guild.name + " | Developed by Taken#0002"
}
}
]
}]
});
return;
return
}
const guildCheck = await fetch(guildAPI + userUUID);
const GuildMembers = await guildCheck.data.members;
const guildRank = GuildMembers.find(
(member) => member.uuid === hypixelCheck.data.uuid
).rank;
const guildRank = GuildMembers.find(member => member.uuid === hypixelCheck.data.uuid).rank;
if (guildRank === "Guild Master" && responseGuildID === hypixelGuildID) {
await user.roles.add(gm, "Verification");
await user.roles.add(guildRole, "Verification");
await user.roles.add(guildStaff, "Verification");
await user.roles.add(guildRole, "Verification")
await user.roles.add(guildStaff, "Verification")
}
if (guildRank === "Manager" && responseGuildID === hypixelGuildID) {
await user.roles.add(manager, "Verification");
await user.roles.add(guildRole, "Verification");
await user.roles.add(guildStaff, "Verification");
await user.roles.add(guildRole, "Verification")
await user.roles.add(guildStaff, "Verification")
}
if (guildRank === "Moderator" && responseGuildID === hypixelGuildID) {
await user.roles.add(moderator, "Verification");
await user.roles.add(guildRole, "Verification");
await user.roles.add(guildStaff, "Verification");
await user.roles.add(guildRole, "Verification")
await user.roles.add(guildStaff, "Verification")
}
if (guildRank === "Beast" && responseGuildID === hypixelGuildID) {
await user.roles.add(beast, "Verification");
await user.roles.add(guildRole, "Verification");
await user.roles.add(guildRole, "Verification")
}
if (guildRank === "Member" && responseGuildID === hypixelGuildID) {
await user.roles.add(member, "Verification");
await user.roles.add(guildRole, "Verification");
await user.roles.add(guildRole, "Verification")
}
if (guildRank === "Trial Member" && responseGuildID === hypixelGuildID) {
await user.roles.add(trialmember, "Verification");
await user.roles.add(guildRole, "Verification");
await user.roles.add(guildRole, "Verification")
}
await user.roles.add(defaultMember, "Verification");
await user.roles.add(defaultMember, "Verification")
const newVerify = new verify({
_id: new mongoose.Types.ObjectId(),
userID: user.id,
uuid: userUUID
});
})
await newVerify.save();
await newVerify.save()
await interaction.editReply({
embeds: [
{
embeds: [{
title: interaction.guild.name,
description:
"You have successfully verified `" +
fullUsername +
"` with the account `" +
hypixelCheck.data.username +
"`.",
description: "You have successfully verified `" + fullUsername + "` with the account `" + hypixelCheck.data.username + "`.",
color: embedColor,
thumbnail: {
url: head
@@ -184,8 +161,8 @@ module.exports = {
icon_url: interaction.guild.iconURL(),
text: interaction.guild.name + " | Developed by Taken#0002"
}
}
]
}]
});
}
};

View File

@@ -1,44 +1,38 @@
const {
SlashCommandBuilder,
PermissionFlagsBits,
userMention
} = require("discord.js");
const { color } = require("../config/options.json");
const verify = require("../schemas/verifySchema.js");
const fetch = require("axios");
const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require('discord.js');
const { color } = require('../config/options.json');
const verify = require('../schemas/verifySchema.js');
const fetch = require('axios');
module.exports = {
name: "whois",
description: "Get's the ign of a user.",
type: "slash",
name: 'whois',
description: 'Get\'s the ign of a user.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("whois")
.setDescription("Get's the ign of a user.")
.addUserOption((option) =>
.setName('whois')
.setDescription('Get\'s the ign of a user.')
.addUserOption(option =>
option
.setName("user")
.setDescription("The user to get the ign of.")
.setRequired(true)
)
.setName('user')
.setDescription('The user to get the ign of.')
.setRequired(true))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply();
const user = interaction.options.getUser("user");
const user = interaction.options.getUser('user');
const embedColor = Number(color.replace("#", "0x"));
const mojang = "https://api.mojang.com/user/profile/";
const mojang = "https://api.mojang.com/user/profile/"
const minotar = "https://minotar.net/helm/";
const verifiedUser = await verify.findOne({ userID: user.id });
if (!verifiedUser) {
interaction.editReply({
content: "This user has not verified their account."
});
return;
interaction.editReply({ content: 'This user has not verified their account.' });
return
}
const userCheck = await fetch(mojang + verifiedUser.uuid);
@@ -46,11 +40,9 @@ module.exports = {
const head = minotar + ign;
await interaction.editReply({
embeds: [
{
embeds: [{
title: interaction.guild.name,
description:
"**User:** " + userMention(user.id) + "\n**IGN:** " + ign,
description: "**User:** " + userMention(user.id) + "\n**IGN:** " + ign,
color: embedColor,
thumbnail: {
url: head
@@ -59,8 +51,8 @@ module.exports = {
text: interaction.guild.name + " | Developed by: @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}
]
});
}]
})
}
};

View File

@@ -1,22 +1,19 @@
const { REST, Routes } = require("discord.js");
const env = require("dotenv").config();
const { REST, Routes } = require('discord.js');
const env = require('dotenv').config();
const token = process.env.TOKEN;
const clientId = process.env.CLIENTID;
const fs = require("node:fs");
const fs = require('node:fs');
const args = process.argv.slice(2);
const arg = args[0];
if (!arg) {
console.log("Please specify a command to run!");
} else if (arg === "--prod") {
console.log('Please specify a command to run!');
}
else if (arg === '--prod') {
const commands = [];
// Grab all the command files from the commands directory you created earlier
const commandFiles = fs
.readdirSync("./commands")
.filter((file) => file.endsWith(".js"));
const contentMenuCommands = fs
.readdirSync("./commands-contextmenu")
.filter((file) => file.endsWith(".js"));
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
const contentMenuCommands = fs.readdirSync('./commands-contextmenu').filter(file => file.endsWith('.js'));
// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
for (const file of commandFiles) {
@@ -30,34 +27,31 @@ if (!arg) {
}
// Construct and prepare an instance of the REST module
const rest = new REST({ version: "10" }).setToken(token);
const rest = new REST({ version: '10' }).setToken(token);
// and deploy your commands!
(async () => {
try {
console.log(
`Started refreshing ${commands.length} application (/) commands.`
);
console.log(`Started refreshing ${commands.length} application (/) commands.`);
// The put method is used to fully refresh all commands in the guild with the current set
const data = await rest.put(Routes.applicationCommands(clientId), {
body: commands
});
console.log(
`Successfully reloaded ${data.length} application (/) commands.`
const data = await rest.put(
Routes.applicationCommands(clientId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
// And of course, make sure you catch and log any errors!
console.error(error);
}
})();
} else if (arg === "--dev") {
}
else if (arg === '--dev') {
const commands = [];
// Grab all the command files from the commands directory you created earlier
const commandFiles = fs
.readdirSync("./commands-contextmenu")
.filter((file) => file.endsWith(".js"));
const commandFiles = fs.readdirSync('./commands-contextmenu').filter(file => file.endsWith('.js'));
// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
for (const file of commandFiles) {
@@ -66,28 +60,27 @@ if (!arg) {
}
// Construct and prepare an instance of the REST module
const rest = new REST({ version: "10" }).setToken(token);
const rest = new REST({ version: '10' }).setToken(token);
// and deploy your commands!
(async () => {
try {
console.log(
`Started refreshing ${commands.length} application (/) commands.`
);
console.log(`Started refreshing ${commands.length} application (/) commands.`);
// The put method is used to fully refresh all commands in the guild with the current set
const data = await rest.put(Routes.applicationCommands(clientId), {
body: commands
});
console.log(
`Successfully reloaded ${data.length} application (/) commands.`
const data = await rest.put(
Routes.applicationCommands(clientId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
// And of course, make sure you catch and log any errors!
console.error(error);
}
})();
} else if (arg && arg !== "--prod" && arg !== "--dev") {
console.log("Invalid argument!");
}
else if (arg && arg !== '--prod' && arg !== '--dev') {
console.log('Invalid argument!');
}

View File

@@ -1,32 +1,27 @@
const { color } = require("../../config/options.json");
const fetch = require("axios");
const guildapp = require("../../schemas/guildAppSchema.js");
const {
bwfdkr,
bwstars,
bwwins,
duelswins,
swstars
} = require("../../config/reqs.json");
const { color } = require('../../config/options.json');
const fetch = require('axios');
const guildapp = require('../../schemas/guildAppSchema.js');
const { bwfdkr, bwstars, bwwins, duelswins, swstars } = require('../../config/reqs.json');
module.exports = {
name: "checkstats",
description: "Check your stats.",
type: "button",
name: 'checkstats',
description: 'Check your stats.',
type: 'button',
async execute(interaction) {
await interaction.deferReply();
const message = interaction.message;
const embed = message.embeds[0];
const applicantId = embed.footer.text.split(" ")[1];
const applicantId = embed.footer.text.split(" ")[1]
const guildappdata = await guildapp.findOne({ userID: applicantId });
const guildappdata = await guildapp.findOne({ userID: applicantId })
const uuid = guildappdata.uuid;
const mojang = "https://api.mojang.com/user/profile/";
const mojang = "https://api.mojang.com/user/profile/"
const slothPixel = "https://api.slothpixel.me/api/players/";
const guildAPI = "https://api.slothpixel.me/api/guilds/";
const guildAPI = "https://api.slothpixel.me/api/guilds/"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
@@ -36,79 +31,67 @@ module.exports = {
try {
await fetch(slothPixel + uuid);
} catch (error) {
interaction.editReply("That player doesn't exist. [Hypixel]");
return;
interaction.editReply('That player doesn\'t exist. [Hypixel]')
return
}
const stats = await fetch(slothPixel + uuid);
const head = minotar + ign;
const rank_formatted = stats.data.rank_formatted;
const rank2 = rank_formatted.replace(/&[0-9a-fk-or]/g, "");
const rank_formatted = stats.data.rank_formatted
const rank2 = rank_formatted.replace(/&[0-9a-fk-or]/g, "")
if (rank2 === "") {
var rank = "";
var rank = ""
} else {
var rank = rank2 + " ";
var rank = rank2 + " "
}
try {
const guildCheck = await fetch(guildAPI + uuid);
var guildName = guildCheck.data.name;
var guildName = guildCheck.data.name
} catch (error) {
var guildName = "None";
var guildName = "None"
}
const hsbwstars = stats.data.stats.BedWars.level;
const hsbwfkdr = stats.data.stats.BedWars.final_k_d;
const hsbwwins = stats.data.stats.BedWars.wins;
const hsswstars = stats.data.stats.SkyWars.level;
const hsduelswins = stats.data.stats.Duels.general.wins;
const hsbwstars = stats.data.stats.BedWars.level
const hsbwfkdr = stats.data.stats.BedWars.final_k_d
const hsbwwins = stats.data.stats.BedWars.wins
const hsswstars = stats.data.stats.SkyWars.level
const hsduelswins = stats.data.stats.Duels.general.wins
if (hsbwstars < bwstars && hsbwfkdr < bwfdkr && hsbwwins < bwwins) {
var bwtitle =
"<a:cross_a:1087808606897983539> This player does not meet the BedWars requirements.";
var bwtitle = "<a:cross_a:1087808606897983539> This player does not meet the BedWars requirements."
} else {
var bwtitle =
"<a:check_a:1087808632172847134> This player meets the BedWars requirements.";
var bwtitle = "<a:check_a:1087808632172847134> This player meets the BedWars requirements."
}
if (hsswstars < swstars) {
var swtitle =
"<a:cross_a:1087808606897983539> This player does not meet the SkyWars requirements.";
var swtitle = "<a:cross_a:1087808606897983539> This player does not meet the SkyWars requirements."
} else {
var swtitle =
"<a:check_a:1087808632172847134> This player meets the SkyWars requirements.";
var swtitle = "<a:check_a:1087808632172847134> This player meets the SkyWars requirements."
}
if (hsduelswins < duelswins) {
var duelstitle =
"<a:cross_a:1087808606897983539> This player does not meet the Duels requirements.";
var duelstitle = "<a:cross_a:1087808606897983539> This player does not meet the Duels requirements."
} else {
var duelstitle =
"<a:check_a:1087808632172847134> This player meets the Duels requirements.";
var duelstitle = "<a:check_a:1087808632172847134> This player meets the Duels requirements."
}
try {
const guildCheck = await fetch(guildAPI + userUUID);
const tag_formatted = guildCheck.data.tag_formatted;
const guildTag2 = tag_formatted.replace(/&[0-9a-fk-or]/g, "");
var guildTag = " " + guildTag2;
const tag_formatted = guildCheck.data.tag_formatted
const guildTag2 = tag_formatted.replace(/&[0-9a-fk-or]/g, "")
var guildTag = " " + guildTag2
} catch (error) {
var guildTag = "";
var guildTag = ""
}
await interaction.editReply({
embeds: [
{
embeds: [{
title: rank + stats.data.username + guildTag,
description:
"**Network Level:** `" +
stats.data.level.toString() +
"`\n" +
"**Current Guild:** `" +
guildName +
"`",
description: "**Network Level:** `" + stats.data.level.toString() + "`\n" +
"**Current Guild:** `" + guildName + "`",
color: embedColor,
thumbnail: {
url: head
@@ -120,48 +103,25 @@ module.exports = {
fields: [
{
name: bwtitle,
value:
"**➺ Stars:** `" +
stats.data.stats.BedWars.level.toString() +
"`\n" +
"**➺ FKDR:** `" +
stats.data.stats.BedWars.final_k_d.toString() +
"`\n" +
"**➺ Wins:** `" +
stats.data.stats.BedWars.wins.toString() +
"`"
value: "**➺ Stars:** `" + stats.data.stats.BedWars.level.toString() + "`\n" +
"**➺ FKDR:** `" + stats.data.stats.BedWars.final_k_d.toString() + "`\n" +
"**➺ Wins:** `" + stats.data.stats.BedWars.wins.toString() + "`"
},
{
name: swtitle,
value:
"**➺ Stars:** `" +
stats.data.stats.SkyWars.level.toFixed(2).toString() +
"`\n" +
"**➺ KDR:** `" +
stats.data.stats.SkyWars.kill_death_ratio.toString() +
"`\n" +
"**➺ Wins:** `" +
stats.data.stats.SkyWars.wins.toString() +
"`"
value: "**➺ Stars:** `" + stats.data.stats.SkyWars.level.toFixed(2).toString() + "`\n" +
"**➺ KDR:** `" + stats.data.stats.SkyWars.kill_death_ratio.toString() + "`\n" +
"**➺ Wins:** `" + stats.data.stats.SkyWars.wins.toString() + "`"
},
{
name: duelstitle,
value:
"**➺ Wins:** `" +
stats.data.stats.Duels.general.wins.toString() +
"`\n" +
"**➺ KDR:** `" +
stats.data.stats.Duels.general.kd_ratio.toFixed(2).toString() +
"`\n" +
"**➺ WLR:** `" +
stats.data.stats.Duels.general.win_loss_ratio
.toFixed(2)
.toString() +
"`"
value: "**➺ Wins:** `" + stats.data.stats.Duels.general.wins.toString() + "`\n" +
"**➺ KDR:** `" + stats.data.stats.Duels.general.kd_ratio.toFixed(2).toString() + "`\n" +
"**➺ WLR:** `" + stats.data.stats.Duels.general.win_loss_ratio.toFixed(2).toString() + "`"
}
]
}
]
});
}]
})
}
};

View File

@@ -1,570 +1,459 @@
const {
ButtonBuilder,
ButtonStyle,
ActionRowBuilder,
EmbedBuilder
} = require("discord.js");
const { color } = require("../../config/options.json");
const { largeM, smallM, ignM } = require("../../config/limitmessages.json");
const { applicationsChannel } = require("../../config/options.json");
const {
qu1,
qu2,
qu3,
qu4,
qu5,
qu6,
qu7,
qu8
} = require("../../config/questions.json");
const {
rq1,
rq2,
rq3,
rq4,
rq5,
rq6,
rq7,
rq8
} = require("../../config/questions.json");
const { guildRole } = require("../../config/roles.json");
const mongoose = require("mongoose");
const guildapp = require("../../schemas/guildAppSchema.js");
const fetch = require("axios");
const { ButtonBuilder, ButtonStyle, ActionRowBuilder, EmbedBuilder } = require('discord.js');
const { color } = require('../../config/options.json');
const { largeM, smallM, ignM } = require('../../config/limitmessages.json')
const { applicationsChannel } = require('../../config/options.json');
const { qu1, qu2, qu3, qu4, qu5, qu6, qu7, qu8 } = require('../../config/questions.json');
const { rq1, rq2, rq3, rq4, rq5, rq6, rq7, rq8 } = require('../../config/questions.json');
const { guildRole } = require('../../config/roles.json')
const mongoose = require('mongoose');
const guildapp = require('../../schemas/guildAppSchema.js');
const fetch = require('axios');
module.exports = {
name: "guildapply",
description: "Guild application button.",
type: "button",
name: 'guildapply',
description: 'Guild application button.',
type: 'button',
async execute(interaction) {
const user = interaction.user;
const guild = interaction.guild;
const embedColor = Number(color.replace("#", "0x"));
const mojangAPI = "https://api.mojang.com/users/profiles/minecraft/";
const mojangAPI = "https://api.mojang.com/users/profiles/minecraft/"
const userRoles = guild.members.cache
.get(user.id)
.roles.cache.map((role) => role.id);
const userRoles = guild.members.cache.get(user.id).roles.cache.map(role => role.id);
if (interaction.customId === 'guildapply') {
if (interaction.customId === "guildapply") {
await interaction.deferReply({ ephemeral: true });
if (userRoles.includes(guildRole)) {
await interaction.editReply({
content: "You are already a member of the guild.",
ephemeral: true
});
return;
await interaction.editReply({ content: "You are already a member of the guild.", ephemeral: true });
return
}
const application = await guildapp.findOne({ userID: user.id });
if (application) {
await interaction.editReply({
content: "You already have an application in progress.",
ephemeral: true
});
return;
await interaction.editReply({ content: "You already have an application in progress.", ephemeral: true });
return
}
const tooLong = new EmbedBuilder()
.setDescription("You took too long to respond.")
.setColor(embedColor);
.setColor(embedColor)
const cancelled = new EmbedBuilder()
.setDescription("You have cancelled your application.")
.setColor(embedColor);
.setColor(embedColor)
const attachments = new EmbedBuilder()
.setDescription(
"You have uploaded an attachment. Please do not upload images, videos, or GIFS."
)
.setColor(embedColor);
.setDescription("You have uploaded an attachment. Please do not upload images, videos, or GIFS.")
.setColor(embedColor)
try {
await user.send({
embeds: [
{
title: "Guild Application",
description:
"Please answer the following questions to apply for the guild.\n" +
embeds: [{
title: 'Guild Application',
description: "Please answer the following questions to apply for the guild.\n" +
"If you wish to cancel your application, please press type `cancel` at any time.\n" +
"If you wish to proceed with your application, please type `yes`.\n\n" +
"**Do not upload images, videos, or GIFS.**\n" +
"You have a minute to respond to this message.",
color: embedColor
}
]
});
color: embedColor,
}]
})
} catch (error) {
await interaction.editReply({
content: "Please enable your DMs.",
ephemeral: true
});
return;
await interaction.editReply({ content: "Please enable your DMs.", ephemeral: true });
return
}
await interaction.editReply({
content: "Please check your DMs.",
ephemeral: true
});
await interaction.editReply({ content: "Please check your DMs.", ephemeral: true})
const input = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60
});
if (input.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (input.size === 0) {
await user.send({ embeds: [tooLong] });
return;
return
}
if (input.first().content.toLowerCase() !== "yes") {
if (input.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return;
return
}
// first question
const question1 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 1**",
description:
qu1 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
ignM +
"`",
description: qu1 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + ignM + "`",
color: embedColor,
footer:{
text: "You have 5 minutes to respond to this message."
}
}
]
});
}]
})
const answer1 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 5
time: 1000 * 60 * 5,
});
if (answer1.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer1.first().content > 16) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 16.",
color: embedColor
}
]
});
return;
}]
})
return
}
try {
await fetch(mojangAPI + answer1.first().content);
await fetch(mojangAPI + answer1.first().content)
} catch (error) {
await user.send({
embeds: [
{
description:
"That is not a valid Minecraft username.\n" +
embeds: [{
description: "That is not a valid Minecraft username.\n" +
"Application cancelled.",
color: embedColor
}
]
});
return;
}]
})
return
}
if (answer1.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer1.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer1.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer1_1 = answer1.first().content;
const answer1_1 = answer1.first().content
// second question
const question2 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 2**",
description:
qu2 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n" +
"`(8 characters max)`",
description: qu2 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n" + "`(8 characters max)`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer2 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer2.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer2.first().content.size > 8) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 8.",
color: embedColor
}
]
});
return;
}]
})
return
}
if (answer2.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer2.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer2.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer2_1 = answer2.first().content;
const answer2_1 = answer2.first().content
// third question
const question3 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 3**",
description:
qu3 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
smallM +
"`",
description: qu3 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + smallM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer3 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer3.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer3.first().content > 128) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 128.",
color: embedColor
}
]
});
}]
})
}
if (answer3.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer3.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer3.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer3_1 = answer3.first().content;
const answer3_1 = answer3.first().content
// fourth question
const question4 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 4**",
description:
qu4 +
"\n\nPlease type your answer below or type `cancel` to cancel your application." +
" `(We expect a longer answer.)`\n`" +
largeM +
"`",
description: qu4 + "\n\nPlease type your answer below or type `cancel` to cancel your application." +
" `(We expect a longer answer.)`\n`" + largeM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer4 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer4.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer4.first().content > 256) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 256.",
color: embedColor
}
]
});
}]
})
}
if (answer4.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer4.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer4.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer4_1 = answer4.first().content;
const answer4_1 = answer4.first().content
// fifth question
const question5 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 5**",
description:
qu5 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
smallM +
"`",
description: qu5 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + smallM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer5 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer5.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer5.first().content > 128) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 128.",
color: embedColor
}
]
});
}]
})
}
if (answer5.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer5.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer5.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer5_1 = answer5.first().content;
const answer5_1 = answer5.first().content
// sixth question
const question6 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 6**",
description:
qu6 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
description: qu6 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + largeM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer6 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer6.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer6.first().content > 256) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 256.",
color: embedColor
}
]
});
}]
})
}
if (answer6.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer6.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer6.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer6_1 = answer6.first().content;
const answer6_1 = answer6.first().content
// seventh question
const question7 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 7**",
description:
qu7 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
smallM +
"`",
description: qu7 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + smallM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer7 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer7.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer7.first().content > 128) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 128.",
color: embedColor
}
]
});
}]
})
}
if (answer7.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer7.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer7.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer7_1 = answer7.first().content;
const answer7_1 = answer7.first().content
// eighth question
const question8 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 8**",
description:
qu8 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n" +
"`(64 characters max)`",
description: qu8 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n" + "`(64 characters max)`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer8 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer8.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer8.first().content > 64) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 64.",
color: embedColor
}
]
});
}]
})
}
if (answer8.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer8.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer8.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer8_1 = answer8.first().content;
const answer8_1 = answer8.first().content
await user.send({
embeds: [
{
description:
"If you want to submit your application, type `yes` if not, type `no`",
embeds: [{
description: "If you want to submit your application, type `yes` if not, type `no`",
color: embedColor
}
]
});
}]
})
const final = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 5
});
if (final.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (final.size === 0) {
await user.send({ embeds: [tooLong] });
return;
return
}
if (final.first().content.toLowerCase() !== "yes") {
if (final.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return;
return
}
await user.send({
embeds: [
{
embeds: [{
description: "Your application has been submitted!",
color: embedColor
}
]
});
}]
})
const userCheck = await fetch(mojangAPI + answer1_1);
const uuid = userCheck.data.id;
const userCheck = await fetch(mojangAPI + answer1_1)
const uuid = userCheck.data.id
const newGuildApp = new guildapp({
_id: new mongoose.Types.ObjectId(),
userID: user.id,
uuid: uuid
});
uuid: uuid,
})
await newGuildApp.save();
await newGuildApp.save()
const channel = guild.channels.cache.get(applicationsChannel);
await channel.send({
embeds: [
{
title:
user.username + "#" + user.discriminator + " - Guild Application",
embeds: [{
title: user.username + "#" + user.discriminator + " - Guild Application",
color: embedColor,
thumbnail: {
url: user.avatarURL()
@@ -607,8 +496,7 @@ module.exports = {
iconURL: guild.iconURL(),
text: "ID: " + user.id
}
}
],
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
@@ -626,6 +514,7 @@ module.exports = {
)
]
});
}
}
}
};

View File

@@ -1,14 +1,15 @@
const { ActionRowBuilder, ButtonStyle, ButtonBuilder } = require("discord.js");
const { color } = require("../../config/options.json");
const guildapp = require("../../schemas/guildAppSchema.js");
const { waitingList } = require("../../config/roles.json");
const { ActionRowBuilder, ButtonStyle, ButtonBuilder } = require('discord.js');
const { color } = require('../../config/options.json');
const guildapp = require('../../schemas/guildAppSchema.js');
const { waitingList } = require('../../config/roles.json');
module.exports = {
name: "guildapplicationaccept",
description: "Accept a guild application.",
type: "button",
name: 'guildapplicationaccept',
description: 'Accept a guild application.',
type: 'button',
async execute(interaction) {
await interaction.deferReply();
const user = interaction.user;
@@ -17,11 +18,10 @@ module.exports = {
const message = interaction.message;
const embed = message.embeds[0];
const applicantId = embed.footer.text.split(" ")[1];
const applicantId = embed.footer.text.split(" ")[1]
const applicant = await guild.members.fetch(applicantId);
const applicantUsername =
applicant.user.username + "#" + applicant.user.discriminator;
const applicant = await guild.members.fetch(applicantId)
const applicantUsername = applicant.user.username + "#" + applicant.user.discriminator;
await message.edit({
components: [
@@ -46,20 +46,17 @@ module.exports = {
});
await applicant.send({
embeds: [
{
embeds: [{
description: `Your application for the Illegitimate guild has been accepted.`,
color: embedColor
}
]
}]
});
await applicant.roles.add(waitingList);
await guildapp.findOneAndDelete({ userID: applicantId });
await interaction.editReply({
embeds: [
{
embeds: [{
title: applicantUsername + " - Guild Application",
description: "Application has been accepted by <@" + user.id + ">.",
color: embedColor,
@@ -70,8 +67,7 @@ module.exports = {
iconURL: guild.iconURL(),
text: "ID: " + applicant.id
}
}
]
}]
});
}
};

View File

@@ -1,17 +1,13 @@
const {
ModalBuilder,
ActionRowBuilder,
TextInputBuilder,
TextInputStyle
} = require("discord.js");
const { color } = require("../../config/options.json");
const { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require('discord.js');
const { color } = require('../../config/options.json');
module.exports = {
name: "guildapplicationdeny",
description: "Deny a guild application.",
type: "button",
name: 'guildapplicationdeny',
description: 'Deny a guild application.',
type: 'button',
async execute(interaction) {
const channel = interaction.channel;
const guild = interaction.guild;
const embedColor = Number(color.replace("#", "0x"));
@@ -19,18 +15,18 @@ module.exports = {
const message = interaction.message;
const modal = new ModalBuilder()
.setTitle("Deny Reason")
.setCustomId("denyreasonbox")
.setTitle('Deny Reason')
.setCustomId('denyreasonbox')
.setComponents(
new ActionRowBuilder().setComponents(
new TextInputBuilder()
.setLabel("Deny Reason")
.setCustomId("denyreason")
.setLabel('Deny Reason')
.setCustomId('denyreason')
.setStyle(TextInputStyle.Paragraph)
.setPlaceholder("Enter a reason for denying the application")
.setPlaceholder('Enter a reason for denying the application')
.setRequired(false)
)
);
)
await interaction.showModal(modal);
}
};

View File

@@ -1,13 +1,14 @@
const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
const { color } = require("../../config/options.json");
const staffapp = require("../../schemas/staffAppSchema.js");
const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
const { color } = require('../../config/options.json');
const staffapp = require('../../schemas/staffAppSchema.js');
module.exports = {
name: "staffapplicationaccept",
description: "Accept a staff application.",
type: "button",
name: 'staffapplicationaccept',
description: 'Accept a staff application.',
type: 'button',
async execute(interaction) {
const user = interaction.user;
const channel = interaction.channel;
const guild = interaction.guild;
@@ -15,19 +16,16 @@ module.exports = {
const message = interaction.message;
const embed = message.embeds[0];
const applicantId = embed.footer.text.split(" ")[1];
const applicantId = embed.footer.text.split(" ")[1]
const applicant = await guild.members.fetch(applicantId);
const applicantUsername =
applicant.user.username + "#" + applicant.user.discriminator;
const applicant = await guild.members.fetch(applicantId)
const applicantUsername = applicant.user.username + "#" + applicant.user.discriminator;
await applicant.send({
embeds: [
{
embeds: [{
description: `Your application for the Illegitimate staff team has been accepted.`,
color: embedColor
}
]
}]
});
await message.edit({
@@ -50,8 +48,7 @@ module.exports = {
await staffapp.findOneAndDelete({ userId: applicantId });
await interaction.reply({
embeds: [
{
embeds: [{
title: applicantUsername + " - Staff Application.",
description: "Application accepted by <@" + user.id + ">.",
color: embedColor,
@@ -62,8 +59,8 @@ module.exports = {
iconurl: guild.iconURL(),
text: "ID: " + applicantId
}
}
]
}]
});
}
}
};

View File

@@ -1,29 +1,25 @@
const {
ModalBuilder,
ActionRowBuilder,
TextInputBuilder,
TextInputStyle
} = require("discord.js");
const { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } = require('discord.js');
module.exports = {
name: "staffapplicationdeny",
description: "Deny a guild application.",
type: "button",
name: 'staffapplicationdeny',
description: 'Deny a guild application.',
type: 'button',
async execute(interaction) {
const modal = new ModalBuilder()
.setTitle("Deny Reason")
.setCustomId("staffdenyreasonbox")
.setTitle('Deny Reason')
.setCustomId('staffdenyreasonbox')
.setComponents(
new ActionRowBuilder().setComponents(
new TextInputBuilder()
.setLabel("Deny Reason")
.setCustomId("staffdenyreason")
.setLabel('Deny Reason')
.setCustomId('staffdenyreason')
.setStyle(TextInputStyle.Paragraph)
.setPlaceholder("Enter a reason for denying the application")
.setPlaceholder('Enter a reason for denying the application')
.setRequired(false)
)
);
)
await interaction.showModal(modal);
}
};

View File

@@ -1,474 +1,387 @@
const {
ButtonBuilder,
ButtonStyle,
ActionRowBuilder,
EmbedBuilder
} = require("discord.js");
const { color } = require("../../config/options.json");
const { largeM, smallM, ignM } = require("../../config/limitmessages.json");
const { staffApplicationsChannel } = require("../../config/options.json");
const { sq1, sq2, sq3, sq4, sq5, sq6 } = require("../../config/questions.json");
const {
rsq1,
rsq2,
rsq3,
rsq4,
rsq5,
rsq6
} = require("../../config/questions.json");
const { guildRole, guildStaff } = require("../../config/roles.json");
const mongoose = require("mongoose");
const staffapp = require("../../schemas/staffAppSchema.js");
const fetch = require("axios");
const { ButtonBuilder, ButtonStyle, ActionRowBuilder, EmbedBuilder } = require('discord.js');
const { color } = require('../../config/options.json');
const { largeM, smallM, ignM } = require('../../config/limitmessages.json')
const { staffApplicationsChannel } = require('../../config/options.json');
const { sq1, sq2, sq3, sq4, sq5, sq6 } = require('../../config/questions.json');
const { rsq1, rsq2, rsq3, rsq4, rsq5, rsq6 } = require('../../config/questions.json');
const { guildRole, guildStaff } = require('../../config/roles.json')
const mongoose = require('mongoose');
const staffapp = require('../../schemas/staffAppSchema.js');
const fetch = require('axios');
module.exports = {
name: "staffapply",
description: "Apply for the staff team.",
type: "button",
name: 'staffapply',
description: 'Apply for the staff team.',
type: 'button',
async execute(interaction) {
const user = interaction.user;
const guild = interaction.guild;
const embedColor = Number(color.replace("#", "0x"));
const userRoles = interaction.member.roles.cache;
const mojangAPI = "https://api.mojang.com/users/profiles/minecraft/";
const mojangAPI = "https://api.mojang.com/users/profiles/minecraft/"
if (interaction.customId === "staffapply") {
await interaction.deferReply({ ephemeral: true });
if (!userRoles.has(guildRole)) {
await interaction.editReply({
content: "You must be a member of the guild to apply for staff.",
ephemeral: true
});
return;
await interaction.editReply({content: "You must be a member of the guild to apply for staff.", ephemeral: true});
return
}
if (userRoles.has(guildStaff)) {
await interaction.editReply({
content: "You are already a staff member.",
ephemeral: true
});
return;
await interaction.editReply({content: "You are already a staff member.", ephemeral: true});
return
}
const application = await staffapp.findOne({ userID: user.id });
if (application) {
await interaction.editReply({
content: "You already have an application in progress.",
ephemeral: true
});
return;
await interaction.editReply({ content: "You already have an application in progress.", ephemeral: true });
return
}
const tooLong = new EmbedBuilder()
.setDescription("You took too long to respond.")
.setColor(embedColor);
.setColor(embedColor)
const cancelled = new EmbedBuilder()
.setDescription("You have cancelled your application.")
.setColor(embedColor);
.setColor(embedColor)
const attachments = new EmbedBuilder()
.setDescription(
"You have uploaded an attachment. Please do not upload images, videos, or GIFS."
)
.setColor(embedColor);
.setDescription("You have uploaded an attachment. Please do not upload images, videos, or GIFS.")
.setColor(embedColor)
try {
await user.send({
embeds: [
{
title: "Staff Application",
description:
"Please answer the following questions to apply for staff.\n" +
embeds: [{
title: 'Staff Application',
description: "Please answer the following questions to apply for staff.\n" +
"If you wish to cancel your application, please press type `cancel` at any time.\n" +
"If you wish to proceed with your application, please type `yes`.\n\n" +
"**Do not upload images, videos, or GIFS.**\n" +
"You have a minute to respond to this message.",
color: embedColor
}
]
});
color: embedColor,
}]
})
} catch (error) {
await interaction.editReply({
content: "Please enable your DMs.",
ephemeral: true
});
return;
await interaction.editReply({ content: "Please enable your DMs.", ephemeral: true });
return
}
await interaction.editReply({
content: "Please check your DMs.",
ephemeral: true
});
await interaction.editReply({ content: "Please check your DMs.", ephemeral: true})
const input = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60
});
if (input.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (input.size === 0) {
await user.send({ embeds: [tooLong] });
return;
return
}
if (input.first().content.toLowerCase() !== "yes") {
if (input.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return;
return
}
// first question
const question1 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 1**",
description:
sq1 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
ignM +
"`",
description: sq1 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + ignM + "`",
color: embedColor,
footer:{
text: "You have 5 minutes to respond to this message."
}
}
]
});
}]
})
const answer1 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 5
time: 1000 * 60 * 5,
});
if (answer1.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer1.first().content > 16) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 16.",
color: embedColor
}
]
});
return;
}]
})
return
}
try {
await fetch(mojangAPI + answer1.first().content);
await fetch(mojangAPI + answer1.first().content)
} catch (error) {
await user.send({
embeds: [
{
description:
"That is not a valid Minecraft username.\n" +
embeds: [{
description: "That is not a valid Minecraft username.\n" +
"Application cancelled.",
color: embedColor
}
]
});
return;
}]
})
return
}
if (answer1.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer1.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer1.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer1_1 = answer1.first().content;
const answer1_1 = answer1.first().content
// second question
const question2 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 2**",
description:
sq2 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n" +
"`(64 characters max)`",
description: sq2 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n" + "`(64 characters max)`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer2 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer2.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer2.first().content > 64) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 64.",
color: embedColor
}
]
});
return;
}]
})
return
}
if (answer2.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer2.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer2.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer2_1 = answer2.first().content;
const answer2_1 = answer2.first().content
// third question
const question3 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 3**",
description:
sq3 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
description: sq3 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + largeM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer3 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer3.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer3.first().content > 256) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 256.",
color: embedColor
}
]
});
}]
})
}
if (answer3.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer3.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer3.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer3_1 = answer3.first().content;
const answer3_1 = answer3.first().content
// fourth question
const question4 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 4**",
description:
sq4 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
description: sq4 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + largeM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer4 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer4.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer4.first().content > 256) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 256.",
color: embedColor
}
]
});
}]
})
}
if (answer4.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer4.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer4.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer4_1 = answer4.first().content;
const answer4_1 = answer4.first().content
// fifth question
const question5 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 5**",
description:
sq5 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
description: sq5 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + largeM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer5 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer5.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer5.first().content > 256) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 256.",
color: embedColor
}
]
});
}]
})
}
if (answer5.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer5.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer5.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer5_1 = answer5.first().content;
const answer5_1 = answer5.first().content
// sixth question
const question6 = await user.send({
embeds: [
{
embeds: [{
title : "**Question 6**",
description:
sq6 +
"\n\nPlease type your answer below or type `cancel` to cancel your application." +
"`(We expect a longer answer here)`\n`" +
largeM +
"`",
description: sq6 + "\n\nPlease type your answer below or type `cancel` to cancel your application." +
"`(We expect a longer answer here)`\n`" + largeM + "`",
color: embedColor,
footer:{
text: "You have 15 minutes to respond to this message."
}
}
]
});
}]
})
const answer6 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15
});
if (answer6.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (answer6.first().content > 256) {
await user.send({
embeds: [
{
embeds: [{
description: "Max character limit is 256.",
color: embedColor
}
]
});
}]
})
}
if (answer6.size === 0) {
await user.send({ embeds: [tooLong] });
return;
await user.send({ embeds: [tooLong] })
return
}
if (answer6.first().content.toLowerCase() === "cancel") {
await user.send({ embeds: [cancelled] });
return;
if (answer6.first().content.toLowerCase() === 'cancel') {
await user.send({ embeds: [cancelled] })
return
}
const answer6_1 = answer6.first().content;
const answer6_1 = answer6.first().content
await user.send({
embeds: [
{
description:
"If you want to submit your application, type `yes` if not, type `no`",
embeds: [{
description: "If you want to submit your application, type `yes` if not, type `no`",
color: embedColor
}
]
});
}]
})
const final = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
filter: m => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 5
});
if (final.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
return;
return
}
if (final.size === 0) {
await user.send({ embeds: [tooLong] });
return;
return
}
if (final.first().content.toLowerCase() !== "yes") {
if (final.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return;
return
}
await user.send({
embeds: [
{
embeds: [{
description: "Your application has been submitted!",
color: embedColor
}
]
});
}]
})
const userCheck = await fetch(mojangAPI + answer1_1);
const uuid = userCheck.data.id;
const userCheck = await fetch(mojangAPI + answer1_1)
const uuid = userCheck.data.id
const newStaffApp = new staffapp({
_id: new mongoose.Types.ObjectId(),
userID: user.id,
uuid: uuid
});
uuid: uuid,
})
await newStaffApp.save();
await newStaffApp.save()
await user.deleteDM();
const channel = guild.channels.cache.get(staffApplicationsChannel);
await channel.send({
embeds: [
{
title:
user.username + "#" + user.discriminator + " - Staff Application",
embeds: [{
title: user.username + "#" + user.discriminator + " - Staff Application",
color: embedColor,
thumbnail: {
url: user.avatarURL()
@@ -498,13 +411,13 @@ module.exports = {
name: rsq6,
value: "```" + answer6_1 + "```"
}
],
footer: {
iconURL: guild.iconURL(),
text: "ID: " + user.id
}
}
],
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
@@ -517,7 +430,8 @@ module.exports = {
.setStyle(ButtonStyle.Danger)
)
]
});
}
);
}
}
}
};

View File

@@ -1,22 +1,17 @@
const {
InteractionType,
EmbedBuilder,
ActionRowBuilder,
ButtonBuilder,
ButtonStyle
} = require("discord.js");
const { color } = require("../../config/options.json");
const mongoose = require("mongoose");
const guildapp = require("../../schemas/guildAppSchema.js");
const fs = require("fs");
const path = require("path");
const { InteractionType, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
const { color } = require('../../config/options.json');
const mongoose = require('mongoose');
const guildapp = require('../../schemas/guildAppSchema.js');
const fs = require('fs');
const path = require('path');
module.exports = {
name: "denyreasonbox",
description: "Deny reason box.",
type: "modal",
name: 'denyreasonbox',
description: 'Deny reason box.',
type: 'modal',
async execute(interaction) {
if (interaction.type !== InteractionType.ModalSubmit) return;
if (interaction.customId !== "denyreasonbox") return;
@@ -29,8 +24,7 @@ module.exports = {
const applicantId = embed.footer.text.split(" ")[1];
const applicant = await guild.members.fetch(applicantId);
const reason =
interaction.fields.fields.get("denyreason").value || "No reason provided";
const reason = interaction.fields.fields.get('denyreason').value || "No reason provided";
const embedColor = Number(color.replace("#", "0x"));
const filePath = path.join(__dirname, `../../apps/guild/${applicantId}`);
@@ -57,12 +51,8 @@ module.exports = {
});
const dmMessage = new EmbedBuilder()
.setDescription(
"Your application for the Illegitimate guild has been denied\n" +
"**Reason:** `" +
reason +
"`"
)
.setDescription("Your application for the Illegitimate guild has been denied\n" +
"**Reason:** `" + reason + "`")
.setColor(embedColor);
await applicant.send({ embeds: [dmMessage] });
@@ -70,16 +60,10 @@ module.exports = {
await guildapp.findOneAndDelete({ userID: applicantId });
await interaction.editReply({
embeds: [
{
embeds: [{
title: "Application Denied",
description:
"The application has been denied by <@" +
interaction.user.id +
">.\n" +
"**Reason:** `" +
reason +
"`",
description: "The application has been denied by <@" + interaction.user.id + ">.\n" +
"**Reason:** `" + reason + "`",
color: embedColor,
thumbnail: {
url: applicant.avatarURL()
@@ -88,8 +72,7 @@ module.exports = {
iconURL: guild.iconURL(),
text: "ID: " + applicant.id
}
}
]
}],
});
}
};
}

View File

@@ -1,22 +1,17 @@
const {
InteractionType,
EmbedBuilder,
ActionRowBuilder,
ButtonBuilder,
ButtonStyle
} = require("discord.js");
const { color } = require("../../config/options.json");
const mongoose = require("mongoose");
const staffapp = require("../../schemas/staffAppSchema.js");
const fs = require("fs");
const path = require("path");
const { InteractionType, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
const { color } = require('../../config/options.json');
const mongoose = require('mongoose');
const staffapp = require('../../schemas/staffAppSchema.js');
const fs = require('fs');
const path = require('path');
module.exports = {
name: "staffdenyreasonbox",
description: "Deny reason box.",
type: "modal",
name: 'staffdenyreasonbox',
description: 'Deny reason box.',
type: 'modal',
async execute(interaction) {
if (interaction.type !== InteractionType.ModalSubmit) return;
if (interaction.customId !== "staffdenyreasonbox") return;
@@ -24,15 +19,13 @@ module.exports = {
const channel = interaction.channel;
const guild = interaction.guild;
const reason =
interaction.fields.fields.get("staffdenyreason").value ||
"No reason provided";
const reason = interaction.fields.fields.get('staffdenyreason').value || "No reason provided";
const embedColor = Number(color.replace("#", "0x"));
const message = interaction.message;
const embed = message.embeds[0];
const applicantId = embed.footer.text.split(" ")[1];
const applicant = await guild.members.fetch(applicantId);
const applicantId = embed.footer.text.split(" ")[1]
const applicant = await guild.members.fetch(applicantId)
await message.edit({
components: [
@@ -46,18 +39,14 @@ module.exports = {
.setCustomId("staffapplicationdeny")
.setLabel("Deny")
.setStyle(ButtonStyle.Danger)
.setDisabled(true)
.setDisabled(true),
)
]
});
const dmMessage = new EmbedBuilder()
.setDescription(
"Your application for the Illegitimate guild staff has been denied\n" +
"**Reason:** `" +
reason +
"`"
)
.setDescription("Your application for the Illegitimate guild staff has been denied\n" +
"**Reason:** `" + reason + "`")
.setColor(embedColor);
await applicant.send({ embeds: [dmMessage] });
@@ -65,16 +54,10 @@ module.exports = {
await staffapp.findOneAndDelete({ userID: applicantId });
await interaction.editReply({
embeds: [
{
embeds: [{
title: "Application Denied",
description:
"The application has been denied by <@" +
interaction.user.id +
">.\n" +
"**Reason:** `" +
reason +
"`",
description: "The application has been denied by <@" + interaction.user.id + ">.\n" +
"**Reason:** `" + reason + "`",
color: embedColor,
thumbnail: {
url: applicant.avatarURL()
@@ -83,8 +66,7 @@ module.exports = {
iconURL: guild.iconURL(),
text: "ID: " + applicant.id
}
}],
});;
}
]
});
}
};

132
index.js
View File

@@ -1,17 +1,10 @@
const {
Client,
GatewayIntentBits,
Partials,
ActivityType,
Events,
Collection
} = require("discord.js");
const env = require("dotenv").config();
const { Client, GatewayIntentBits, Partials, ActivityType, Events, Collection } = require('discord.js');
const env = require('dotenv').config();
const token = process.env.TOKEN;
const mongoURI = process.env.MONGOURI;
const { connect } = require("mongoose");
const path = require("path");
const fs = require("fs");
const { connect } = require('mongoose');
const path = require('path');
const fs = require('fs');
const client = new Client({
intents: [
@@ -34,43 +27,39 @@ client.events = new Collection();
client.modals = new Collection();
//! commands
const cmdPath = path.join(__dirname, "commands");
const cmdFiles = fs.readdirSync(cmdPath).filter((file) => file.endsWith(".js"));
const cmdPath = path.join(__dirname, 'commands');
const cmdFiles = fs.readdirSync(cmdPath).filter(file => file.endsWith('.js'));
for (const file of cmdFiles) {
const filePath = path.join(cmdPath, file);
const cmd = require(filePath);
if ("data" in cmd && "execute" in cmd && cmd.type === "slash") {
if ('data' in cmd && 'execute' in cmd && cmd.type === 'slash') {
client.commands.set(cmd.data.name, cmd);
} else {
console.log(
`[WARNING] The command at ${filePath} is missing a required "data", "execute" or "type" property.`
);
console.log(`[WARNING] The command at ${filePath} is missing a required "data", "execute" or "type" property.`);
}
}
//! commands testing
const cmdTestPath = path.join(__dirname, "commands-testing");
const cmdTestFiles = fs
.readdirSync(cmdTestPath)
.filter((file) => file.endsWith(".js"));
const cmdTestPath = path.join(__dirname, 'commands-testing');
const cmdTestFiles = fs.readdirSync(cmdTestPath).filter(file => file.endsWith('.js'));
for (const file of cmdTestFiles) {
const filePath = path.join(cmdTestPath, file);
const cmd = require(filePath);
if ("data" in cmd && "execute" in cmd && cmd.type === "slash") {
if ('data' in cmd && 'execute' in cmd && cmd.type === 'slash') {
client.commands.set(cmd.data.name, cmd);
} else {
console.log(
`[WARNING] The command at ${filePath} is missing a required "data", "execute" or "type" property.`
);
console.log(`[WARNING] The command at ${filePath} is missing a required "data", "execute" or "type" property.`);
}
}
//! command handler
client.on(Events.InteractionCreate, async (interaction) => {
client.on(Events.InteractionCreate, async interaction => {
if(!interaction.isChatInputCommand()) return;
const command = interaction.client.commands.get(interaction.commandName);
@@ -84,34 +73,28 @@ client.on(Events.InteractionCreate, async (interaction) => {
await command.execute(interaction);
} catch (error) {
console.error(error);
await interaction.reply({
content: "There was an error while executing this command!",
ephemeral: true
});
await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true })
}
});
//! commands
const contextMenuPath = path.join(__dirname, "commands-contextmenu");
const contextMenuFiles = fs
.readdirSync(contextMenuPath)
.filter((file) => file.endsWith(".js"));
const contextMenuPath = path.join(__dirname, 'commands-contextmenu');
const contextMenuFiles = fs.readdirSync(contextMenuPath).filter(file => file.endsWith('.js'));
for (const file of contextMenuFiles) {
const filePath = path.join(contextMenuPath, file);
const cmd = require(filePath);
if ("data" in cmd && "execute" in cmd && cmd.type === "contextmenu") {
if ('data' in cmd && 'execute' in cmd && cmd.type === 'contextmenu') {
client.commands.set(cmd.data.name, cmd);
} else {
console.log(
`[WARNING] The command at ${filePath} is missing a required "data", "execute" or "type" property.`
);
console.log(`[WARNING] The command at ${filePath} is missing a required "data", "execute" or "type" property.`);
}
}
//! context menu command handler
client.on(Events.InteractionCreate, async (interaction) => {
client.on(Events.InteractionCreate, async interaction => {
if(!interaction.isContextMenuCommand()) return;
const command = interaction.client.commands.get(interaction.commandName);
@@ -125,32 +108,28 @@ client.on(Events.InteractionCreate, async (interaction) => {
await command.execute(interaction);
} catch (error) {
console.error(error);
await interaction.reply({
content: "There was an error while executing this command!",
ephemeral: true
});
await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true })
}
});
//! button events
const btnPath = path.join(__dirname, "events", "buttons");
const btnFiles = fs.readdirSync(btnPath).filter((file) => file.endsWith(".js"));
const btnPath = path.join(__dirname, 'events', 'buttons');
const btnFiles = fs.readdirSync(btnPath).filter(file => file.endsWith('.js'));
for (const file of btnFiles) {
const filePath = path.join(btnPath, file);
const btn = require(filePath);
if ("name" in btn && "execute" in btn && btn.type === "button") {
if ('name' in btn && 'execute' in btn && btn.type === 'button') {
client.events.set(btn.name, btn);
} else {
console.log(
`[WARNING] The button at ${filePath} is missing a required "name", "execute" or "type" property.`
);
console.log(`[WARNING] The button at ${filePath} is missing a required "name", "execute" or "type" property.`);
}
}
//! button event handler
client.on(Events.InteractionCreate, async (event) => {
client.on(Events.InteractionCreate, async event => {
if(!event.isButton()) return;
const event2 = event.client.events.get(event.customId);
@@ -164,29 +143,23 @@ client.on(Events.InteractionCreate, async (event) => {
await event2.execute(event);
} catch (error) {
console.error(error);
await event.reply({
content: "There was an error while executing this event!",
ephemeral: true
});
await event.reply({ content: 'There was an error while executing this event!', ephemeral: true })
}
});
})
//! modals
const modalPath = path.join(__dirname, "events", "modals");
const modalFiles = fs
.readdirSync(modalPath)
.filter((file) => file.endsWith(".js"));
const modalPath = path.join(__dirname, 'events', 'modals');
const modalFiles = fs.readdirSync(modalPath).filter(file => file.endsWith('.js'));
for (const file of modalFiles) {
const filePath = path.join(modalPath, file);
const modal = require (filePath);
if ("name" in modal && "execute" in modal && modal.type === "modal") {
if ('name' in modal && 'execute' in modal && modal.type === 'modal') {
client.on(Events.InteractionCreate, modal.execute);
} else {
console.log(
`[WARNING] The modal at ${filePath} is missing a required "name", "execute" or "type" property.`
);
console.log(`[WARNING] The modal at ${filePath} is missing a required "name", "execute" or "type" property.`);
}
}
client.on(Events.ClientReady, () => {
@@ -194,27 +167,24 @@ client.on(Events.ClientReady, () => {
});
// message events
const msgPath = path.join(__dirname, "events", "messages");
const msgFiles = fs.readdirSync(msgPath).filter((file) => file.endsWith(".js"));
const msgPath = path.join(__dirname, 'events', 'messages');
const msgFiles = fs.readdirSync(msgPath).filter(file => file.endsWith('.js'));
for (const file of msgFiles) {
const filePath = path.join(msgPath, file);
const msg = require(filePath);
if ("name" in msg && "execute" in msg && msg.type === "message") {
if ('name' in msg && 'execute' in msg && msg.type === 'message') {
client.on(Events.MessageCreate, msg.execute);
} else {
console.log(
`[WARNING] The message at ${filePath} is missing a required "name", "execute" or "type" property.`
);
console.log(`[WARNING] The message at ${filePath} is missing a required "name", "execute" or "type" property.`);
}
}
client.on(Events.ClientReady, () => {
client.user.setActivity({
name: "over the Illegitimate Server",
type: ActivityType.Watching
});
client.user.setActivity({ name: "over the Illegitimate Server", type: ActivityType.Watching });
const activities = [
{
@@ -248,16 +218,16 @@ client.on(Events.ClientReady, () => {
];
let i = 0;
setInterval(
() => client.user.setActivity(activities[i++ % activities.length]),
1000 * 60 * 30
);
setInterval(() =>
client.user.setActivity(activities[i++ % activities.length]), 1000 * 60 * 30
)
});
client.on(Events.ClientReady, () => {
client.user.setStatus("dnd");
client.user.setStatus('dnd');
});
client.login(token);
connect(mongoURI, {}).then(() => {
console.log("Connected to MongoDB");
});
console.log('Connected to MongoDB');
})

View File

@@ -1,9 +1,9 @@
const { Schema, model } = require("mongoose");
const { Schema, model } = require('mongoose');
const guildAppSchema = new Schema({
_id: Schema.Types.ObjectId,
userID: { type: String, required: true },
uuid: { type: String, required: true }
uuid: { type: String, required: true },
});
module.exports = model("guildapp", guildAppSchema, "guildapp");
module.exports = model('guildapp', guildAppSchema, 'guildapp');

View File

@@ -1,9 +1,9 @@
const { Schema, model } = require("mongoose");
const { Schema, model } = require('mongoose');
const staffAppSchema = new Schema({
_id: Schema.Types.ObjectId,
userID: { type: String, required: true },
uuid: { type: String, required: true }
uuid: { type: String, required: true },
});
module.exports = model("staffapp", staffAppSchema, "staffapp");
module.exports = model('staffapp', staffAppSchema, 'staffapp');

View File

@@ -1,9 +1,9 @@
const { Schema, model } = require("mongoose");
const { Schema, model } = require('mongoose');
const verifySchema = new Schema({
_id: Schema.Types.ObjectId,
userID: { type: String, required: true },
uuid: { type: String, required: true }
uuid: { type: String, required: true },
});
module.exports = model("verify", verifySchema, "verify");
module.exports = model('verify', verifySchema, 'verify');

View File

@@ -1,10 +1,10 @@
const fetch = require("axios");
async function getuuid(ign) {
const mojangAPI = "https://api.mojang.com/users/profiles/minecraft/";
const mojangAPI = "https://api.mojang.com/users/profiles/minecraft/"
try {
const user = await fetch(mojangAPI + ign);
const user = await fetch(mojangAPI + ign)
return user.data.id;
} catch (error) {
return null;
@@ -15,12 +15,12 @@ async function getplayer(uuid) {
const slothPixel = "https://api.slothpixel.me/api/players/";
try {
const player = await fetch(slothPixel + uuid);
return player;
const player = await fetch(slothPixel + uuid)
return player
} catch (error) {
return null;
}
}
module.exports = getuuid;
module.exports = getplayer;
module.exports = getuuid
module.exports = getplayer

View File

@@ -1,11 +1,12 @@
module.exports = {
name: "limbo",
description: "Sends bot to limbo.",
type: "spawn",
name: 'limbo',
description: 'Sends bot to limbo.',
type: 'spawn',
async execute() {
const bot = require("../../index.js");
const bot = require ('../../index.js');
bot.chat("\u00a7")
bot.chat("\u00a7");
}
};

View File

@@ -1,12 +1,13 @@
const client = require("../../index.js");
const client = require('../../index.js');
module.exports = {
name: "Guild chat relay",
description: "Sends a message to the chat.",
type: "message",
name: 'Guild chat relay',
description: 'Sends a message to the chat.',
type: 'message',
async execute(jsonMsg) {
const gcchannel = "1092569207918575687";
const gcchannel = "1092569207918575687"
const msg = jsonMsg.getText();
const annoyingMessages = [
@@ -14,7 +15,7 @@ module.exports = {
"REMINDER: Your Online Status is currently set to Appear Offline",
"You have 1 unclaimed achievement reward!",
"Click here to view it!"
];
]
if (annoyingMessages.includes(msg)) return;
@@ -23,5 +24,6 @@ module.exports = {
const channel = client.guild.channels.cache.get(gcchannel);
channel.send(msg);
}
};

View File

@@ -1,10 +1,10 @@
module.exports = {
name: "login",
description: "Logs the bot in.",
type: "login",
name: 'login',
description: 'Logs the bot in.',
type: 'login',
async execute() {
const bot = require("../../index.js");
console.log("Logged in as " + bot.username + "!");
const bot = require ('../../index.js');
console.log('Logged in as ' + bot.username + '!')
}
}
};