Revert "Making all files use prettier"

This reverts commit 5aa85986cd.
This commit is contained in:
2023-08-31 23:13:47 +02:00
parent 99167be941
commit 0952d89809
49 changed files with 3777 additions and 4018 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
node_modules/*
.env
.prettierrc
.editorconfig

View File

@@ -1,3 +1,4 @@
docker-build:
image: docker:latest
stage: build

View File

@@ -1,35 +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!",
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 });
},
}
};

View File

@@ -1,36 +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 });
},
}
};

View File

@@ -1,24 +1,34 @@
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: "dev-info",
description: "Test command for the bot.",
type: "slash",
name: 'dev-info',
description: 'Test command for the bot.',
type: 'slash',
data: new SlashCommandBuilder()
.setName("dev-info")
.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('dev-info')
.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 message = await interaction.channel.messages.fetch(test);
const embed = message.embeds[0];
@@ -27,6 +37,6 @@ module.exports = {
console.log(field1.value);
await interaction.reply({ content: "Test command.", ephemeral: true });
},
await interaction.reply({ content: 'Test command.', ephemeral: true });
}
};

View File

@@ -1,87 +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) => 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('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'))
.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 }),
},
},
],
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 }),
},
},
],
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 }),
},
},
],
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
});
return;
return
}
// if (memberRoles.includes(admin) || memberRoles.includes(helper)) {
@@ -101,27 +102,25 @@ module.exports = {
if (!duration) {
await member.roles.add(muted, reason);
await interaction.editReply({
embeds: [
{
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;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
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;
@@ -130,25 +129,18 @@ module.exports = {
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 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: [
{
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 }),
},
},
],
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
});
const logChannel = interaction.guild.channels.cache.get(staffOtherChannel);
@@ -156,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 }),
},
},
],
});
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}, time);
},
}
};

View File

@@ -14,7 +14,9 @@ module.exports = {
data: new SlashCommandBuilder()
.setName("check")
.setDescription("Check a player's stats.")
.addStringOption((option) => option.setName("ign").setDescription("The player's IGN.").setRequired(true))
.addStringOption((option) => option.setName("ign")
.setDescription("The player's IGN.")
.setRequired(true))
.setDMPermission(false),
async execute(interaction) {
@@ -22,8 +24,8 @@ module.exports = {
const ign = interaction.options.getString("ign");
const mojang = "https://api.mojang.com/users/profiles/minecraft/";
const hypixel = "https://api.hypixel.net/player";
const guildAPI = "https://api.hypixel.net/guild";
const hypixel = "https://api.hypixel.net/player"
const guildAPI = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
const head = minotar + ign;
@@ -37,7 +39,9 @@ module.exports = {
await fetch(mojang + ign);
} catch (error) {
interaction.editReply({
embeds: [{ description: "That player doesn't exist.", color: embedColor }],
embeds: [
{ description: "That player doesn't exist.", color: embedColor }
]
});
return;
}
@@ -45,17 +49,15 @@ module.exports = {
const userCheck = await fetch(mojang + ign);
const uuid = userCheck.data.id;
const player = hypixel + "?key=" + hypixelApiKey + "&uuid=" + uuid;
const player = hypixel + "?key=" + hypixelApiKey + "&uuid=" + uuid
const stats = await fetch(player);
if (!stats.data.player) {
interaction.editReply({
embeds: [
{
embeds: [{
description: "That player hasn't played Hypixel before.",
color: embedColor,
},
],
color: embedColor
}]
});
return;
}
@@ -63,19 +65,19 @@ module.exports = {
const rank2 = stats.data.player.newPackageRank;
const monthlyRank = stats.data.player.monthlyPackageRank;
if (rank2 === "VIP") {
var rank = "[VIP] ";
} else if (rank2 === "VIP_PLUS") {
var rank = "[VIP+] ";
} else if (rank2 === "MVP") {
var rank = "[MVP] ";
} else if (rank2 === "MVP_PLUS" && monthlyRank === "NONE") {
var rank = "[MVP+] ";
} else if (rank2 === "MVP_PLUS" && monthlyRank === "SUPERSTAR") {
var rank = "[MVP++] ";
if (rank2 === 'VIP') {
var rank = "[VIP] "
} else if (rank2 === 'VIP_PLUS') {
var rank = "[VIP+] "
} else if (rank2 === 'MVP') {
var rank = "[MVP] "
} else if (rank2 === 'MVP_PLUS' && monthlyRank === 'NONE') {
var rank = "[MVP+] "
} else if (rank2 === 'MVP_PLUS' && monthlyRank === 'SUPERSTAR') {
var rank = "[MVP++] "
}
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + uuid;
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + uuid
const guildCheck = await fetch(guild);
if (!guildCheck.data.guild) {
@@ -85,11 +87,11 @@ module.exports = {
}
if (!guildCheck.data.guild) {
var guildTag = "";
var guildTag = ""
} else if (!guildCheck.data.guild.tag) {
var guildTag = "";
var guildTag = ""
} else {
var guildTag = " [" + guildCheck.data.guild.tag + "]";
var guildTag = " [" + guildCheck.data.guild.tag + "]"
}
//bedwars level
@@ -111,9 +113,9 @@ module.exports = {
//skywars wins
const hsswwins = stats.data.player.stats.SkyWars.wins;
// dueks kdr
const hsduelskills = stats.data.player.stats.Duels.kills;
const hsduelsdeaths = stats.data.player.stats.Duels.deaths;
const hsduelskd = hsduelskills / hsduelsdeaths;
const hsduelskills = stats.data.player.stats.Duels.kills
const hsduelsdeaths = stats.data.player.stats.Duels.deaths
const hsduelskd = hsduelskills / hsduelsdeaths
// duels wins
const hsduelswins = stats.data.player.stats.Duels.wins;
// duels wlr
@@ -124,95 +126,79 @@ module.exports = {
const level = getExactLevel(hypixelExp);
if (hsbwstars < bwstars || hsbwfkdr < bwfkdr || 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 || hsduelswlr < duelswlr) {
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.";
}
await interaction.editReply({
embeds: [
{
embeds: [{
title: rank + stats.data.player.displayname + guildTag,
description:
"**Network Level:** `" +
level.toFixed(2).toString() +
"`\n" +
"**Current Guild:** `" +
guildName +
"`",
description: "**Network Level:** `" +
level.toFixed(2).toString() + "`\n" +
"**Current Guild:** `" + guildName + "`",
color: embedColor,
thumbnail: { url: head },
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL(),
icon_url: interaction.guild.iconURL()
},
fields: [
{
name: bwtitle,
value:
"**➺ Stars:** `" +
hsbwstars.toFixed(2).toString() +
" / " +
bwstars.toString() +
"`\n" +
value: "**➺ Stars:** `" +
hsbwstars.toFixed(2).toString() + " / " +
bwstars.toString() + "`\n" +
"**➺ FKDR:** `" +
hsbwfkdr.toFixed(2).toString() +
" / " +
bwfkdr.toString() +
"`\n" +
" / " + bwfkdr.toString() + "`\n" +
"**➺ Wins:** `" +
hsbwwins.toString() +
" / " +
bwwins.toString() +
"`",
hsbwwins.toString() + " / " +
bwwins.toString() + "`"
},
{
name: swtitle,
value:
"**➺ Stars:** `" +
hsswstars.toFixed(2).toString() +
" / " +
swstars.toString() +
"`\n" +
" / " + swstars.toString() + "`\n" +
"**➺ KDR:** `" +
hsswkd.toFixed(2).toString() +
"`\n" +
"**➺ Wins:** `" +
hsswwins.toString() +
"`",
hsswwins.toString() + "`"
},
{
name: duelstitle,
value:
"**➺ Wins:** `" +
value: "**➺ Wins:** `" +
hsduelswins.toString() +
" / " +
duelswins.toString() +
"`\n" +
" / " + duelswins.toString() + "`\n" +
"**➺ WLR:** `" +
hsduelswlr.toFixed(2).toString() +
" / " +
duelswlr.toString() +
"`\n" +
" / " + duelswlr.toString() + "`\n" +
"**➺ KDR:** `" +
hsduelskd.toFixed(2).toString() +
"`",
},
],
},
],
hsduelskd.toFixed(2).toString() + "`"
}
]
}]
});
},
}
};

View File

@@ -1,10 +1,4 @@
const {
SlashCommandBuilder,
PermissionFlagsBits,
ButtonBuilder,
ActionRowBuilder,
ButtonStyle,
} = require("discord.js");
const { SlashCommandBuilder, PermissionFlagsBits, ButtonBuilder, ActionRowBuilder, ButtonStyle, } = require("discord.js");
const { color } = require("../config/options.json");
module.exports = {
@@ -23,8 +17,7 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true),
),
.setRequired(true))
)
.addSubcommand((subcommand) =>
subcommand
@@ -34,9 +27,7 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true),
),
)
.setRequired(true)))
.addSubcommand((subcommand) =>
subcommand
.setName("sendverfiymessage")
@@ -45,9 +36,7 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the verfiy message to.")
.setRequired(true),
),
)
.setRequired(true)))
.addSubcommand((subcommand) =>
subcommand
.setName("sendwaitinglistmessage")
@@ -56,9 +45,7 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the waiting list message to.")
.setRequired(true),
),
)
.setRequired(true)))
.addSubcommand((subcommand) =>
subcommand
.setName("sendinactivityapplication")
@@ -67,9 +54,7 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true),
),
)
.setRequired(true)))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
@@ -79,6 +64,7 @@ module.exports = {
const subcommand = interaction.options.getSubcommand();
const embedColor = Number(color.replace("#", "0x"));
if (subcommand === "sendguildapplication") {
const channel = interaction.options.getChannel("channel");
@@ -90,22 +76,21 @@ module.exports = {
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
iconURL: interaction.guild.iconURL({ dynamic: true }),
iconURL: interaction.guild.iconURL({ dynamic: true })
},
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true }),
},
},
url: interaction.guild.iconURL({ dynamic: true })
}
}
],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
new ActionRowBuilder()
.addComponents(new ButtonBuilder()
.setCustomId("guildapply")
.setLabel("Apply")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
.setEmoji({ name: "✅" }))
]
});
await interaction.reply({ content: "Message sent", ephemeral: true });
}
@@ -121,22 +106,21 @@ module.exports = {
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
iconURL: interaction.guild.iconURL({ dynamic: true }),
iconURL: interaction.guild.iconURL({ dynamic: true })
},
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true }),
},
},
url: interaction.guild.iconURL({ dynamic: true })
}
}
],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
new ActionRowBuilder()
.addComponents(new ButtonBuilder()
.setCustomId("staffapply")
.setLabel("Apply")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
.setEmoji({ name: "✅" }))
]
});
await interaction.reply({ content: "Message sent", ephemeral: true });
@@ -153,22 +137,21 @@ module.exports = {
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
iconURL: interaction.guild.iconURL({ dynamic: true }),
iconURL: interaction.guild.iconURL({ dynamic: true })
},
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true }),
},
},
url: interaction.guild.iconURL({ dynamic: true })
}
}
],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
new ActionRowBuilder()
.addComponents(new ButtonBuilder()
.setCustomId("guildinactivitylog")
.setLabel("Submit")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
.setEmoji({ name: "✅" }))
]
});
await interaction.reply({ content: "Message sent", ephemeral: true });
@@ -178,62 +161,59 @@ module.exports = {
const channel = interaction.options.getChannel("channel");
await channel.send({
embeds: [
{
embeds: [{
title: "Verification",
description: "You can verify by clicking the button below.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
iconURL: interaction.guild.iconURL({ dynamic: true }),
iconURL: interaction.guild.iconURL({ dynamic: true })
},
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
url: interaction.guild.iconURL({ dynamic: true })
}
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
new ActionRowBuilder()
.addComponents(new ButtonBuilder()
.setCustomId("verifybutton")
.setLabel("Verify")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
.setEmoji({ name: "✅" }))
]
});
await interaction.reply({ content: "Message sent", ephemeral: true });
}
if (subcommand === "sendwaitinglistmessage") {
const channel = interaction.options.getChannel("channel");
await channel.send({
embeds: [
{
embeds: [{
title: "Waiting List",
description: "The people below were accepted into the guild\n" + "Try to invite them in order.",
description: "The people below were accepted into the guild\n" +
"Try to invite them in order.",
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
iconURL: interaction.guild.iconURL({ dynamic: true }),
iconURL: interaction.guild.iconURL({ dynamic: true })
},
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
url: interaction.guild.iconURL({ dynamic: true })
}
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
new ActionRowBuilder()
.addComponents(new ButtonBuilder()
.setCustomId("waitinglistupdate")
.setLabel("Update")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "🔄" }),
),
],
.setEmoji({ name: "🔄" }))
]
});
await interaction.reply({ content: "Message sent", ephemeral: true });
}
},
}
};

View File

@@ -1,60 +1,70 @@
const { SlashCommandBuilder, PermissionFlagsBits, userMention, EmbedBuilder, ChannelType } = require("discord.js");
const { hypixelGuildID, color } = require("../config/options.json");
const { muted } = require("../config/roles.json");
const verify = require("../schemas/verifySchema.js");
const env = require("dotenv").config();
const { SlashCommandBuilder, PermissionFlagsBits, userMention, EmbedBuilder, ChannelType } = require('discord.js');
const { hypixelGuildID, color } = require('../config/options.json');
const { muted } = require('../config/roles.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) => subcommand.setName("reload").setDescription("Reload the bot."))
.addSubcommand((subcommand) => subcommand.setName("listallverified").setDescription("List all verified users."))
.addSubcommand((subcommand) =>
.setName('devel')
.setDescription('Admin command.')
.addSubcommand(subcommand =>
subcommand
.setName("purgereactions")
.setDescription("Purge all reactions from a messages.")
.addIntegerOption((option) =>
option.setName("count").setDescription("Count of messages to purge reactions from."),
),
)
.setName('reload')
.setDescription('Reload the bot.'))
.addSubcommand(subcommand =>
subcommand
.setName('listallverified')
.setDescription('List all verified users.'))
.addSubcommand(subcommand =>
subcommand
.setName('purgereactions')
.setDescription('Purge all reactions from a messages.')
.addIntegerOption(option =>
option
.setName('count')
.setDescription('Count of messages to purge reactions from.')))
.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 === "reload") {
const { exec } = require("child_process");
await interaction.reply({ content: "Reloading...", ephemeral: true });
if (subcommand === 'reload') {
exec("pm2 restart 0", async (err, stdout, stderr) => {
const { exec } = require('child_process');
await interaction.reply({ content: 'Reloading...', ephemeral: true })
exec('pm2 restart 0', async (err, stdout, stderr) => {
if (err) {
await interaction.reply({ content: "Error while reloading: " + err, ephemeral: true });
await interaction.reply({ content: 'Error while reloading: ' + err, ephemeral: true })
}
});
})
}
if (subcommand === "listallverified") {
const verifiedUsers = await verify.find();
const mojang = "https://api.mojang.com/user/profile/";
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);
@@ -64,34 +74,34 @@ module.exports = {
embed.addFields({
name: "**IGN:** " + ign,
value: "**Discord:** " + mentionedUser,
});
value: "**Discord:** " + mentionedUser
})
}
await interaction.reply({
embeds: [embed],
});
embeds: [embed]
})
}
if (subcommand === "purgereactions") {
const count = interaction.options.getInteger("count");
await interaction.deferReply({});
if (subcommand === 'purgereactions') {
const count = interaction.options.getInteger('count');
await interaction.deferReply({})
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 messages = await interaction.channel.messages.fetch({ limit: count });
messages.forEach(async (message) => {
await message.reactions.removeAll();
});
})
await interaction.editReply(`Purged reactions from ${count} message(s).`)
await interaction.editReply(`Purged reactions from ${count} message(s).`);
}
},
}
};

View File

@@ -1,67 +1,55 @@
const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require("discord.js");
const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require('discord.js');
const { color } = 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 removeThese = [gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff, defaultMember];
const { gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff, defaultMember } = require("../config/roles.json");
const removeThese = [ gm, manager, moderator, beast, member, trialmember, guildRole, guildStaff, defaultMember ]
module.exports = {
name: "forceunverify",
description: "Force unverify a user",
type: "slash",
type: 'slash',
data: new SlashCommandBuilder()
.setName("forceunverify")
.setDescription("Force unverify a user")
.addUserOption((option) =>
option.setName("user").setDescription("The user to force unverify").setRequired(true),
)
.setName('forceunverify')
.setDescription('Force unverify a user')
.addUserOption(option =>
option
.setName('user')
.setDescription('The user to force unverify')
.setRequired(true))
.setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
async execute(interaction) {
const member1 = interaction.options.getUser("user");
const member = interaction.guild.members.cache.get(member1.id);
const embedColor = Number(color.replace("#", "0x"));
const verifiedUser = await verify.findOne({ userID: member1.id });
const user = interaction.user;
const member1 = interaction.options.getUser('user');
const member = interaction.guild.members.cache.get(member1.id)
const embedColor = Number(color.replace('#', '0x'))
const verifiedUser = await verify.findOne({ userID: member1.id })
const user = interaction.user
if (!verifiedUser) {
return interaction.reply({
embeds: [
{
embeds: [{
description: "This user is not verified",
color: embedColor,
},
],
});
}]
})
}
await verify.findOneAndDelete({ userID: member1.id });
await verify.findOneAndDelete({ userID: member1.id })
await member.roles.remove(removeThese);
await member.roles.remove(removeThese)
await interaction.reply({
embeds: [
{
embeds: [{
description: "Successfully unverified" + userMention(member1.id),
color: embedColor,
footer: {
text: interaction.guild.name + " | Developed by taken.lua",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
},
};
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
}

View File

@@ -1,41 +1,35 @@
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 hypixelAPIKey = process.env.HYPIXELAPIKEY;
const { hypixelGuildID, color } = require("../config/options.json");
const {
gm,
manager,
moderator,
beast,
elite,
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, elite, member, trialmember, guildRole, guildStaff];
const { hypixelGuildID, color } = require('../config/options.json');
const { gm, manager, moderator, beast, elite, 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, elite, 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) => option.setName("user").setDescription("The user to force update").setRequired(true))
.setName('forceupdate')
.setDescription('Force update the user')
.addUserOption(option =>
option
.setName('user')
.setDescription('The user to force update')
.setRequired(true))
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply();
const user = interaction.options.getUser("user");
const user = interaction.options.getUser('user');
const usermentioned = userMention(user.id);
const verifyData = await verify.findOne({ userID: user.id });
const verifyData = await verify.findOne({ userID: user.id })
const embedColor = Number(color.replace("#", "0x"));
const user1 = interaction.guild.members.cache.get(user.id);
@@ -43,25 +37,23 @@ module.exports = {
if (!verifyData) {
await interaction.editReply({
embeds: [
{
embeds: [{
description: "You are not verified. Please run `/verify` to verify yourself",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
const mojangAPI = "https://api.mojang.com/user/profile/";
const guildlAPI = "https://api.hypixel.net/guild";
const mojangAPI = "https://api.mojang.com/user/profile/"
const guildlAPI = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/";
const guild = guildlAPI + "?key=" + hypixelAPIKey + "&player=" + verifyData.uuid;
const userCheck = await fetch(mojangAPI + verifyData.uuid);
@@ -69,227 +61,228 @@ module.exports = {
const head = minotar + userCheck.data.name;
if (!guildCheck.data.guild) {
var responseGuildID = null;
var responseGuildID = null
} else {
var responseGuildID = guildCheck.data.guild._id;
var responseGuildID = guildCheck.data.guild._id
}
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: [
{
embeds: [{
description: usermentioned + " was given the the Default Member role.",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
await roleManage.add(defaultMember);
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
await roleManage.add(defaultMember)
return
}
if (responseGuildID === hypixelGuildID) {
const GuildMembers = guildCheck.data.guild.members;
const guildRank = GuildMembers.find((member) => member.uuid === verifyData.uuid).rank;
if (guildRank === "Guild Master") {
const GuildMembers = guildCheck.data.guild.members;
const guildRank = GuildMembers.find(member => member.uuid === verifyData.uuid).rank;
if (guildRank === 'Guild Master') {
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: [
{
embeds: [{
description: usermentioned + "'s rank has been updated to `Guild Master`",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
if (guildRank === "Manager") {
if (guildRank === 'Manager') {
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: [
{
embeds: [{
description: usermentioned + "'s rank has been updated to `Manager`",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
if (guildRank === "Moderator") {
if (guildRank === 'Moderator') {
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: [
{
embeds: [{
description: usermentioned + "'s rank has been updated to `Moderator`",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
if (guildRank === "Beast") {
if (guildRank === 'Beast') {
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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
if (guildRank === "Elite") {
if (guildRank === 'Elite') {
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(elite, "User was force updated.");
await roleManage.add(defaultMember, "User was force updated.");
await roleManage.add(guildRole, "User was force updated.")
await roleManage.add(elite, "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 `Elite`.",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
if (guildRank === "Member") {
if (guildRank === 'Member') {
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: [
{
embeds: [{
description: usermentioned + "'s rank has been updated to `Member`.",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
if (guildRank === "Trial Member") {
if (guildRank === 'Trial Member') {
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: [
{
embeds: [{
description: usermentioned + "'s rank has been updated to `Trial Member`.",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
}
},
};
}
}

View File

@@ -1,161 +1,153 @@
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,
elite,
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, elite, 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 ign = interaction.options.getString("ign");
const mod = interaction.user;
const ign = interaction.options.getString('ign');
const mod = interaction.user
// const slothPixel = "https://api.slothpixel.me/api/players/";
// const guildAPI = "https://api.slothpixel.me/api/guilds/"
const mojang = "https://api.mojang.com/users/profiles/minecraft/";
const hypixelApi = "https://api.hypixel.net/player";
const guildApi = "https://api.hypixel.net/guild";
const mojang = "https://api.mojang.com/users/profiles/minecraft/"
const hypixelApi = "https://api.hypixel.net/player"
const guildApi = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
if (!user) {
interaction.editReply(
"Please provide a user to force verify.\nThis can also mean the user is not in the server.",
);
return;
interaction.editReply('Please provide a user to force verify.\nThis can also mean the user is not in the server.')
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
}
if (!ign) {
interaction.editReply("Please provide a player's IGN.");
return;
interaction.editReply('Please provide a player\'s IGN.')
return
}
if (user1.discriminator == "0") {
var username = user1.username;
var username = user1.username
} else {
var username = user1.username + "#" + user1.discriminator;
var username = user1.username + "#" + user1.discriminator
}
if (mod.discriminator == "0") {
var modName = mod.username;
var modName = mod.username
} else {
var modName = mod.username + "#" + mod.discriminator;
var modName = mod.username + "#" + mod.discriminator
}
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
}
const userCheck = await fetch(mojang + ign);
const userUUID = userCheck.data.id;
const player = hypixelApi + "?key=" + hypixelApiKey + "&uuid=" + userUUID;
const guild = guildApi + "?key=" + hypixelApiKey + "&player=" + userUUID;
const player = hypixelApi + "?key=" + hypixelApiKey + "&uuid=" + userUUID
const guild = guildApi + "?key=" + hypixelApiKey + "&player=" + userUUID
const head = minotar + ign;
const hypixelCheck = await fetch(player);
if (!hypixelCheck.data.player) {
interaction.editReply({
embeds: [
{
description:
"<a:questionmark_pink:1130206038008803488> That player hasn't played Hypixel before.",
color: embedColor,
},
],
embeds: [{
description: "<a:questionmark_pink:1130206038008803488> That player hasn't played Hypixel before.",
color: embedColor
}]
});
return;
}
const guildCheck = await fetch(guild);
const guildCheck = await fetch(guild)
if (!guildCheck.data.guild) {
var responseGuildID = null;
var responseGuildID = null
} else {
var responseGuildID = guildCheck.data.guild._id;
var responseGuildID = guildCheck.data.guild._id
}
if (responseGuildID === hypixelGuildID) {
const GuildMembers = guildCheck.data.guild.members;
const guildRank = GuildMembers.find((member) => member.uuid === hypixelCheck.data.player.uuid).rank;
const guildRank = GuildMembers.find(member => member.uuid === hypixelCheck.data.player.uuid).rank;
if (guildRank === "Guild Master") {
await user.roles.add(gm, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName);
await user.roles.add(guildStaff, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName)
await user.roles.add(guildStaff, "User was force verified by " + modName)
}
if (guildRank === "Manager") {
await user.roles.add(manager, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName);
await user.roles.add(guildStaff, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName)
await user.roles.add(guildStaff, "User was force verified by " + modName)
}
if (guildRank === "Moderator") {
await user.roles.add(moderator, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName);
await user.roles.add(guildStaff, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName)
await user.roles.add(guildStaff, "User was force verified by " + modName)
}
if (guildRank === "Beast") {
await user.roles.add(beast, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName)
}
if (guildRank === "Elite") {
await user.roles.add(elite, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName)
}
if (guildRank === "Member") {
await user.roles.add(member, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName)
}
if (guildRank === "Trial Member") {
await user.roles.add(trialmember, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName);
await user.roles.add(guildRole, "User was force verified by " + modName)
}
}
@@ -164,31 +156,25 @@ module.exports = {
const newVerify = new verify({
_id: new mongoose.Types.ObjectId(),
userID: user.id,
uuid: userUUID,
});
uuid: userUUID
})
await newVerify.save();
await interaction.editReply({
embeds: [
{
embeds: [{
title: interaction.guild.name,
description:
"You have successfully force verified `" +
username +
"` with the account `" +
hypixelCheck.data.player.displayname +
"`.",
description: "You have successfully force verified `" + username + "` with the account `" + hypixelCheck.data.player.displayname + "`.",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
icon_url: interaction.guild.iconURL(),
text: interaction.guild.name + " | Developed by Taken#0002",
},
},
],
text: interaction.guild.name + " | Developed by Taken#0002"
}
}]
});
},
}
};

View File

@@ -1,51 +1,54 @@
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").setDMPermission(true),
data: new SlashCommandBuilder()
.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,
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true }),
url: interaction.guild.iconURL({ dynamic: true })
},
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,54 +1,51 @@
const { SlashCommandBuilder } = require("discord.js");
const { color } = require("../config/options.json");
const { bwfkdr, bwstars, bwwins, swstars, duelswins, duelswlr } = require("../config/reqs.json");
const { SlashCommandBuilder } = require('discord.js');
const { color } = require('../config/options.json');
const { bwfkdr, bwstars, bwwins, swstars, duelswins, duelswlr } = require('../config/reqs.json');
module.exports = {
name: "reqs",
description: "Displays the requirements for the guild.",
type: "slash",
data: new SlashCommandBuilder().setName("reqs").setDescription("Displays the requirements for the guild."),
name: 'reqs',
description: 'Displays the requirements for the guild.',
type: 'slash',
data: new SlashCommandBuilder()
.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(),
url: interaction.guild.iconURL()
},
fields: [
{
name: "**Bedwars**",
value:
"**Stars:** `" +
bwstars.toString() +
"`\n**Wins:** `" +
bwwins.toString() +
"`\n**FKDR:** `" +
bwfkdr.toString() +
"`",
name: '**Bedwars**',
value: '**Stars:** `' + bwstars.toString() +
'`\n**Wins:** `' + bwwins.toString() +
'`\n**FKDR:** `' + bwfkdr.toString() + '`'
},
{
name: "**Skywars**",
value: "**Stars:** `" + swstars.toString() + "`",
name: '**Skywars**',
value: '**Stars:** `' + swstars.toString() + '`'
},
{
name: "**Duels**",
value: "**Wins:** `" + duelswins.toString() + "`\n**WLR:** `" + duelswlr.toString() + "`",
},
name: '**Duels**',
value: '**Wins:** `' + duelswins.toString() +
'`\n**WLR:** `' + duelswlr.toString() + '`'
}
],
footer: {
text: interaction.guild.name + " | Developed by: @Taken#0002",
icon_url: interaction.guild.iconURL(),
},
},
],
});
},
};
text: interaction.guild.name + ' | Developed by: @Taken#0002',
icon_url: interaction.guild.iconURL()
}
}]
})
}
}

View File

@@ -1,34 +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) => option.setName("channel").setDescription("The channel to send the message to."))
.setName('send')
.setDescription('Send a message to a channel.')
.addStringOption(option =>
option
.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({
@@ -38,13 +45,13 @@ module.exports = {
description: message,
color: embedColor,
thumbnail: {
url: interaction.guild.iconURL({ dynamic: true }),
url: interaction.guild.iconURL({ dynamic: true })
},
footer: {
text: "Developed by @Taken#0002",
},
},
],
text: "Developed by @Taken#0002"
}
}
]
});
},
}
};

View File

@@ -1,34 +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) =>
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('setnick')
.setDescription('Set your nickname')
.addUserOption(option =>
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))
.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,57 +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) =>
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('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 =>
option
.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;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
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);
},
};
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
await channel.setRateLimitPerUser(seconds)
}
}

View File

@@ -1,289 +1,281 @@
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,
elite,
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, elite, member, trialmember, guildRole, guildStaff, defaultMember } = require('../config/roles.json');
const removeThese = [gm, manager, moderator, beast, elite, 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.").setDMPermission(false),
data: new SlashCommandBuilder()
.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;
const embedColor = Number(color.replace("#", "0x"));
if (!verifyData) {
await interaction.editReply({
embeds: [
{
embeds: [{
description: "You are not verified. Please run `/verify` to verify yourself",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
const mojangAPI = "https://api.mojang.com/user/profile/";
const guildAPI = "https://api.hypixel.net/guild";
const mojangAPI = "https://api.mojang.com/user/profile/"
const guildAPI = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/";
const userCheck = await fetch(mojangAPI + verifyData.uuid);
const head = minotar + userCheck.data.name;
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + verifyData.uuid;
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + verifyData.uuid
const guildCheck = await fetch(guild);
if (!guildCheck.data.guild) {
var guildID = null;
var guildID = null
} else {
var guildID = guildCheck.data.guild._id;
var guildID = guildCheck.data.guild._id
}
if (guildID !== 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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
if (guildID === hypixelGuildID) {
const GuildMembers = guildCheck.data.guild.members;
const guildRank = GuildMembers.find((member) => member.uuid === verifyData.uuid).rank;
if (guildRank === "Guild Master") {
const GuildMembers = guildCheck.data.guild.members;
const guildRank = GuildMembers.find(member => member.uuid === verifyData.uuid).rank;
if (guildRank === 'Guild Master') {
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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
if (guildRank === "Manager") {
if (guildRank === 'Manager') {
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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
if (guildRank === "Moderator") {
if (guildRank === 'Moderator') {
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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
if (guildRank === "Beast") {
if (guildRank === 'Beast') {
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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
if (guildRank === "Elite") {
if (guildRank === 'Elite') {
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(elite, "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(elite, "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 `Elite`.",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
if (guildRank === "Member") {
if (guildRank === 'Member') {
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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
if (guildRank === "Trial Member") {
if (guildRank === 'Trial Member') {
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: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
return;
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
return
}
}
}
},
};

View File

@@ -5,18 +5,7 @@ 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,
elite,
member,
trialmember,
guildRole,
guildStaff,
defaultMember,
} = require("../config/roles.json");
const { gm, manager, moderator, beast, elite, member, trialmember, guildRole, guildStaff, defaultMember } = require("../config/roles.json");
module.exports = {
name: "verify",
@@ -26,18 +15,21 @@ module.exports = {
data: new SlashCommandBuilder()
.setName("verify")
.setDescription("Verify yourself as a member of the server.")
.addStringOption((option) => option.setName("ign").setDescription("Your in-game name."))
.addStringOption((option) =>
option
.setName("ign")
.setDescription("Your in-game name."))
.setDMPermission(false),
async execute(interaction) {
await interaction.deferReply();
const user1 = interaction.user;
const user1 = interaction.user
const user = interaction.guild.members.cache.get(user1.id);
const ign = interaction.options.getString("ign");
const mojang = "https://api.mojang.com/users/profiles/minecraft/";
const hypixel = "https://api.hypixel.net/player";
const guildAPI = "https://api.hypixel.net/guild";
const hypixel = "https://api.hypixel.net/player"
const guildAPI = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
const head = minotar + ign;
@@ -45,19 +37,17 @@ module.exports = {
const verifyData = await verify.findOne({ userID: user.id });
if (verifyData) {
interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.");
interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.")
return;
}
if (!ign) {
interaction.editReply({
embeds: [
{
embeds: [{
description: "<a:cross_a:1087808606897983539> Please provide your in-game name.",
color: embedColor,
},
],
});
color: embedColor
}]
})
return;
}
@@ -65,12 +55,10 @@ module.exports = {
await fetch(mojang + ign);
} catch (err) {
interaction.editReply({
embeds: [
{
embeds: [{
description: "<a:questionmark_pink:1130206038008803488> That player does not exist.",
color: embedColor,
},
],
color: embedColor
}]
});
return;
}
@@ -78,79 +66,64 @@ module.exports = {
const userCheck = await fetch(mojang + ign);
const userUUID = userCheck.data.id;
const player = hypixel + "?key=" + hypixelApiKey + "&uuid=" + userUUID;
const player = hypixel + "?key=" + hypixelApiKey + "&uuid=" + userUUID
const stats = await fetch(player);
if (!stats.data.player) {
interaction.editReply({
embeds: [
{
description:
"<a:questionmark_pink:1130206038008803488> That player hasn't played Hypixel before.",
color: embedColor,
},
],
embeds: [{
description: "<a:questionmark_pink:1130206038008803488> That player hasn't played Hypixel before.",
color: embedColor
}]
});
return;
}
if (user1.discriminator === "0") {
var username = user1.username;
var username = user1.username
} else {
var username = user1.username + "#" + user1.discriminator;
var username = user1.username + "#" + user1.discriminator
}
if (!stats.data.player.socialMedia.links.DISCORD) {
interaction.editReply({
embeds: [
{
description:
"<a:cross_a:1087808606897983539> There is no Discord account linked to `" +
stats.data.player.displayname +
"`.\n\n" +
"**Please set your Discord tag on hypixel to `" +
username +
"` and try again.**",
color: embedColor,
},
],
description: "<a:cross_a:1087808606897983539> There is no Discord account linked to `" + stats.data.player.displayname + "`.\n\n" +
"**Please set your Discord tag on hypixel to `" + username + "` and try again.**",
color: embedColor
}
]
});
return;
}
const linkedDiscord = stats.data.player.socialMedia.links.DISCORD;
const linkedDiscord = stats.data.player.socialMedia.links.DISCORD
if (linkedDiscord !== username) {
interaction.editReply({
embeds: [
{
description:
"<a:cross_a:1087808606897983539> The Discord account linked to `" +
stats.data.player.displayname +
"` is currently `" +
linkedDiscord +
"`\n\n" +
"**Please set your Discord tag on hypixel to `" +
username +
"` and try again.**",
color: embedColor,
},
],
description: "<a:cross_a:1087808606897983539> The Discord account linked to `" + stats.data.player.displayname + "` is currently `" + linkedDiscord + "`\n\n" +
"**Please set your Discord tag on hypixel to `" + username + "` and try again.**",
color: embedColor
}
]
});
return;
}
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + userUUID;
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + userUUID
const guildCheck = await fetch(guild);
if (!guildCheck.data.guild) {
var guildID = null;
var guildID = null
} else {
var guildID = guildCheck.data.guild._id;
var guildID = guildCheck.data.guild._id
}
if (guildID === hypixelGuildID) {
const GuildMembers = guildCheck.data.guild.members;
const GuildMembers = guildCheck.data.guild.members
const guildRank = GuildMembers.find((member) => member.uuid === stats.data.player.uuid).rank;
if (guildRank === "Guild Master" && guildID === hypixelGuildID) {
@@ -197,7 +170,7 @@ module.exports = {
const newVerify = new verify({
_id: new mongoose.Types.ObjectId(),
userID: user.id,
uuid: userUUID,
uuid: userUUID
});
await newVerify.save();
@@ -206,22 +179,17 @@ module.exports = {
embeds: [
{
title: interaction.guild.name,
description:
"You have successfully verified `" +
username +
"` with the account `" +
stats.data.player.displayname +
"`.",
description: "You have successfully verified `" + username + "` with the account `" + stats.data.player.displayname + "`.",
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
icon_url: interaction.guild.iconURL(),
text: interaction.guild.name + " | Developed by Taken#0002",
},
},
],
text: interaction.guild.name + " | Developed by Taken#0002"
}
}
]
});
},
}
};

View File

@@ -1,35 +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) =>
option.setName("user").setDescription("The user to get the ign of.").setRequired(true),
)
.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))
.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);
@@ -37,20 +40,19 @@ module.exports = {
const head = minotar + ign;
await interaction.editReply({
embeds: [
{
embeds: [{
title: interaction.guild.name,
description: "**User:** " + userMention(user.id) + "\n**IGN:** " + ign,
color: embedColor,
thumbnail: {
url: head,
url: head
},
footer: {
text: interaction.guild.name + " | Developed by: @Taken#0002",
icon_url: interaction.guild.iconURL({ dynamic: true }),
},
},
],
});
},
icon_url: interaction.guild.iconURL({ dynamic: true })
}
}]
})
}
};

View File

@@ -1,4 +1,4 @@
version: "1.0"
version: '1.0'
services:
illegitimate:
image: "illegitimate-bot:latest"

View File

@@ -1,29 +1,30 @@
const { color } = require("../../config/options.json");
const fetch = require("axios");
const guildapp = require("../../schemas/guildAppSchema.js");
const { bwfkdr, bwstars, bwwins, swstars, duelswins, duelswlr } = require("../../config/reqs.json");
const { color } = require('../../config/options.json');
const fetch = require('axios');
const guildapp = require('../../schemas/guildAppSchema.js');
const { bwfkdr, bwstars, bwwins, swstars, duelswins, duelswlr } = require('../../config/reqs.json');
const env = require("dotenv").config();
const hypixelApiKey = process.env.HYPIXELAPIKEY;
const { getExactLevel, skywarsLevel, getLevelForExp } = require("../../utils/functions.js");
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 hypixel = "https://api.hypixel.net/player";
const guildAPI = "https://api.hypixel.net/guild";
const mojang = "https://api.mojang.com/user/profile/"
const hypixel = "https://api.hypixel.net/player"
const guildAPI = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/";
const embedColor = Number(color.replace("#", "0x"));
@@ -31,17 +32,15 @@ module.exports = {
const ign = userCheck.data.name;
const head = minotar + ign;
const player = hypixel + "?key=" + hypixelApiKey + "&uuid=" + uuid;
const player = hypixel + "?key=" + hypixelApiKey + "&uuid=" + uuid
const stats = await fetch(player);
if (!stats.data.player) {
interaction.editReply({
embeds: [
{
embeds: [{
description: "That player hasn't played Hypixel before.",
color: embedColor,
},
],
color: embedColor
}]
});
return;
}
@@ -49,19 +48,19 @@ module.exports = {
const rank2 = stats.data.player.newPackageRank;
const monthlyRank = stats.data.player.monthlyPackageRank;
if (rank2 === "VIP") {
var rank = "[VIP] ";
} else if (rank2 === "VIP_PLUS") {
var rank = "[VIP+] ";
} else if (rank2 === "MVP") {
var rank = "[MVP] ";
} else if (rank2 === "MVP_PLUS" && monthlyRank === "NONE") {
var rank = "[MVP+] ";
} else if (rank2 === "MVP_PLUS" && monthlyRank === "SUPERSTAR") {
var rank = "[MVP++] ";
if (rank2 === 'VIP') {
var rank = "[VIP] "
} else if (rank2 === 'VIP_PLUS') {
var rank = "[VIP+] "
} else if (rank2 === 'MVP') {
var rank = "[MVP] "
} else if (rank2 === 'MVP_PLUS' && monthlyRank === 'NONE') {
var rank = "[MVP+] "
} else if (rank2 === 'MVP_PLUS' && monthlyRank === 'SUPERSTAR') {
var rank = "[MVP++] "
}
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + uuid;
const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + uuid
const guildCheck = await fetch(guild);
if (!guildCheck.data.guild) {
@@ -71,11 +70,11 @@ module.exports = {
}
if (!guildCheck.data.guild) {
var guildTag = "";
var guildTag = ""
} else if (!guildCheck.data.guild.tag) {
var guildTag = "";
var guildTag = ""
} else {
var guildTag = " [" + guildCheck.data.guild.tag + "]";
var guildTag = " [" + guildCheck.data.guild.tag + "]"
}
//bedwars level
@@ -97,9 +96,9 @@ module.exports = {
//skywars wins
const hsswwins = stats.data.player.stats.SkyWars.wins;
// dueks kdr
const hsduelskills = stats.data.player.stats.Duels.kills;
const hsduelsdeaths = stats.data.player.stats.Duels.deaths;
const hsduelskd = hsduelskills / hsduelsdeaths;
const hsduelskills = stats.data.player.stats.Duels.kills
const hsduelsdeaths = stats.data.player.stats.Duels.deaths
const hsduelskd = hsduelskills / hsduelsdeaths
// duels wins
const hsduelswins = stats.data.player.stats.Duels.wins;
// duels wlr
@@ -110,95 +109,72 @@ module.exports = {
const level = getExactLevel(hypixelExp);
if (hsbwstars < bwstars || hsbwfkdr < bwfkdr || 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 || hsduelswlr < duelswlr) {
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."
}
await interaction.editReply({
embeds: [
{
embeds: [{
title: rank + stats.data.player.displayname + guildTag,
description:
"**Network Level:** `" +
level.toFixed(2).toString() +
"`\n" +
"**Current Guild:** `" +
guildName +
"`",
description: "**Network Level:** `" +
level.toFixed(2).toString() + "`\n" +
"**Current Guild:** `" + guildName + "`",
color: embedColor,
thumbnail: { url: head },
footer: {
text: interaction.guild.name + " | Developed by @Taken#0002",
icon_url: interaction.guild.iconURL(),
icon_url: interaction.guild.iconURL()
},
fields: [
{
name: bwtitle,
value:
"**➺ Stars:** `" +
hsbwstars.toFixed(2).toString() +
" / " +
bwstars.toString() +
"`\n" +
value: "**➺ Stars:** `" +
hsbwstars.toFixed(2).toString() + " / " +
bwstars.toString() + "`\n" +
"**➺ FKDR:** `" +
hsbwfkdr.toFixed(2).toString() +
" / " +
bwfkdr.toString() +
"`\n" +
" / " + bwfkdr.toString() + "`\n" +
"**➺ Wins:** `" +
hsbwwins.toString() +
" / " +
bwwins.toString() +
"`",
hsbwwins.toString() + " / " +
bwwins.toString() + "`"
},
{
name: swtitle,
value:
"**➺ Stars:** `" +
hsswstars.toFixed(2).toString() +
" / " +
swstars.toString() +
"`\n" +
" / " + swstars.toString() + "`\n" +
"**➺ KDR:** `" +
hsswkd.toFixed(2).toString() +
"`\n" +
hsswkd.toFixed(2).toString() + "`\n" +
"**➺ Wins:** `" +
hsswwins.toString() +
"`",
hsswwins.toString() + "`"
},
{
name: duelstitle,
value:
"**➺ Wins:** `" +
value: "**➺ Wins:** `" +
hsduelswins.toString() +
" / " +
duelswins.toString() +
"`\n" +
" / " + duelswins.toString() + "`\n" +
"**➺ WLR:** `" +
hsduelswlr.toFixed(2).toString() +
" / " +
duelswlr.toString() +
"`\n" +
" / " + duelswlr.toString() + "`\n" +
"**➺ KDR:** `" +
hsduelskd.toFixed(2).toString() +
"`",
},
],
},
],
hsduelskd.toFixed(2).toString() + "`"
}
]
}]
});
},
}
};

View File

@@ -1,572 +1,502 @@
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;
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);
const tooLong = new EmbedBuilder()
.setDescription("You took too long to respond.")
.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);
.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,
},
],
});
}]
})
} catch (error) {
await interaction.editReply({ content: "Please enable your DMs.", ephemeral: true });
return;
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,
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") {
await user.send({ embeds: [cancelled] });
return;
if (input.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return
}
// first question
const question1 = await user.send({
embeds: [
{
title: "**Question 1**",
description:
qu1 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
ignM +
"`",
embeds: [{
title : "**Question 1**",
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.",
},
},
],
});
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,
});
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;
color: embedColor
}]
})
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" + "Application cancelled.",
color: embedColor,
},
],
});
return;
embeds: [{
description: "That is not a valid Minecraft username.\n" +
"Application cancelled.",
color: embedColor
}]
})
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: [
{
title: "**Question 2**",
description:
qu2 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n" +
"`(8 characters max)`",
embeds: [{
title : "**Question 2**",
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.",
},
},
],
});
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,
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;
color: embedColor
}]
})
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: [
{
title: "**Question 3**",
description:
qu3 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
smallM +
"`",
embeds: [{
title : "**Question 3**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
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 +
"`",
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 + "`",
color: embedColor,
footer: {
text: "You have 15 minutes to respond to this message.",
},
},
],
});
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,
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,
},
],
});
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: [
{
title: "**Question 5**",
description:
qu5 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
smallM +
"`",
embeds: [{
title : "**Question 5**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
title: "**Question 6**",
description:
qu6 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
embeds: [{
title : "**Question 6**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
title: "**Question 7**",
description:
qu7 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
smallM +
"`",
embeds: [{
title : "**Question 7**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
title: "**Question 8**",
description:
qu8 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n" +
"`(64 characters max)`",
embeds: [{
title : "**Question 8**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
embeds: [{
description: "If you want to submit your application, type `yes` if not, type `no`",
color: embedColor,
},
],
});
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,
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") {
await user.send({ embeds: [cancelled] });
return;
if (final.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return
}
await user.send({
embeds: [
{
embeds: [{
description: "Your application has been submitted!",
color: embedColor,
},
],
});
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,
});
})
await newGuildApp.save();
await newGuildApp.save()
const channel = guild.channels.cache.get(applicationsChannel);
await channel.send({
embeds: [
{
embeds: [{
title: user.username + "#" + user.discriminator + " - Guild Application",
color: embedColor,
thumbnail: {
url: user.avatarURL(),
url: user.avatarURL()
},
fields: [
{
name: rq1,
value: "```" + answer1_1 + "```",
value: "```" + answer1_1 + "```"
},
{
name: rq2,
value: "```" + answer2_1 + "```",
value: "```" + answer2_1 + "```"
},
{
name: rq3,
value: "```" + answer3_1 + "```",
value: "```" + answer3_1 + "```"
},
{
name: rq4,
value: "```" + answer4_1 + "```",
value: "```" + answer4_1 + "```"
},
{
name: rq5,
value: "```" + answer5_1 + "```",
value: "```" + answer5_1 + "```"
},
{
name: rq6,
value: "```" + answer6_1 + "```",
value: "```" + answer6_1 + "```"
},
{
name: rq7,
value: "```" + answer7_1 + "```",
value: "```" + answer7_1 + "```"
},
{
name: rq8,
value: "```" + answer8_1 + "```",
},
value: "```" + answer8_1 + "```"
}
],
footer: {
iconURL: guild.iconURL(),
text: "ID: " + user.id,
},
},
],
text: "ID: " + user.id
}
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
@@ -580,10 +510,11 @@ module.exports = {
new ButtonBuilder()
.setCustomId("checkstats")
.setLabel("Check Stats")
.setStyle(ButtonStyle.Secondary),
),
],
.setStyle(ButtonStyle.Secondary)
)
]
});
}
},
};
}
}

View File

@@ -1,16 +1,17 @@
const { ActionRowBuilder, ButtonStyle, ButtonBuilder } = require("discord.js");
const { color } = require("../../config/options.json");
const { ActionRowBuilder, ButtonStyle, ButtonBuilder } = require('discord.js');
const { color } = require('../../config/options.json');
const mongoose = require("mongoose");
const guildapp = require("../../schemas/guildAppSchema.js");
const waitingList = require("../../schemas/waitinglistSchema.js");
const { waitingListRole } = require("../../config/roles.json");
const guildapp = require('../../schemas/guildAppSchema.js');
const waitingList = require('../../schemas/waitinglistSchema.js');
const { waitingListRole } = 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;
@@ -19,12 +20,12 @@ 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 applicantIGN1 = embed.fields[0].value;
const applicantIGN = applicantIGN1.replaceAll("`", "");
const applicant = await guild.members.fetch(applicantId);
const applicant = await guild.members.fetch(applicantId)
const applicantUsername = applicant.user.username + "#" + applicant.user.discriminator;
await message.edit({
@@ -44,21 +45,19 @@ module.exports = {
.setCustomId("checkstats")
.setLabel("Check Stats")
.setStyle(ButtonStyle.Secondary)
.setDisabled(true),
),
],
.setDisabled(true)
)
]
});
await applicant.send({
embeds: [
{
embeds: [{
description: `Your application for the Illegitimate guild has been accepted.`,
color: embedColor,
},
],
color: embedColor
}]
});
const applicantEntry = await guildapp.findOne({ userID: applicantId });
const applicantEntry = await guildapp.findOne({ userID: applicantId })
const applicantUUID = applicantEntry.uuid;
const time = Date.now();
@@ -67,7 +66,7 @@ module.exports = {
userID: applicantId,
uuid: applicantUUID,
IGN: applicantIGN,
timestamp: time,
timestamp: time
});
await waitingListAdd.save();
@@ -75,21 +74,20 @@ module.exports = {
await applicant.roles.add(waitingListRole);
await guildapp.findOneAndDelete({ userID: applicantId });
await interaction.editReply({
embeds: [
{
embeds: [{
title: applicantUsername + " - Guild Application",
description: "Application has been accepted by <@" + user.id + ">.",
color: embedColor,
thumbnail: {
url: applicant.avatarURL(),
url: applicant.avatarURL()
},
footer: {
iconURL: guild.iconURL(),
text: "ID: " + applicant.id,
},
},
],
text: "ID: " + applicant.id
}
}]
});
},
}
};

View File

@@ -1,12 +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"));
@@ -14,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")
.setRequired(false),
),
);
.setPlaceholder('Enter a reason for denying the application')
.setRequired(false)
)
)
await interaction.showModal(modal);
},
}
};

View File

@@ -1,14 +1,5 @@
const { ButtonBuilder, ActionRowBuilder, ButtonStyle, EmbedBuilder } = require("discord.js");
const {
gm,
manager,
moderator,
beast,
member,
trialmember,
guildStaff,
guildRole,
} = require("../../config/roles.json");
const { gm, manager, moderator, beast, member, trialmember, guildStaff, guildRole } = require("../../config/roles.json");
const { ignM, smallM, largeM } = require("../../config/limitmessages.json");
const { ia1, ia2, ia3, ria1, ria2, ria3 } = require("../../config/questions.json");
const { color, inactivityLogChannel } = require("../../config/options.json");
@@ -29,11 +20,13 @@ module.exports = {
if (!userRoles.some((role) => guildRoles.includes(role.id))) {
return await interaction.reply({
content: "Only guild members can use this button.",
ephemeral: true,
ephemeral: true
});
}
const tooLong = new EmbedBuilder().setDescription("You took too long to respond.").setColor(embedColor);
const tooLong = new EmbedBuilder()
.setDescription("You took too long to respond.")
.setColor(embedColor);
const cancelled = new EmbedBuilder()
.setDescription("You have cancelled your application.")
.setColor(embedColor);
@@ -46,15 +39,13 @@ module.exports = {
embeds: [
{
title: "Guild Inactivity Log",
description:
"Please answer the following questions to submit an inactivity log for the guild.\n" +
description: "Please answer the following questions to submit an inactivity log for the guild.\n" +
"If you wish to cancel your form, please press type `cancel` at any time.\n" +
"If you wish to proceed with your form, please type `yes`.\n\n" +
"**Do not upload images, videos, or GIFS.**\n" +
"If you wish to proceed with your form, 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) {
return await interaction.reply({ content: "Please enable your DMs.", ephemeral: true });
@@ -65,7 +56,7 @@ module.exports = {
const input = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
max: 1,
time: 1000 * 60,
time: 1000 * 60
});
if (input.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
@@ -84,23 +75,19 @@ module.exports = {
embeds: [
{
title: "**Question 1**",
description:
ia1 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
ignM +
"`",
description: ia1 + "\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.",
},
},
],
text: "You have 5 minutes to respond to this message."
}
}
]
});
const answer1 = await user.dmChannel.awaitMessages({
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] });
@@ -111,9 +98,9 @@ module.exports = {
embeds: [
{
description: "Max character limit is 16.",
color: embedColor,
},
],
color: embedColor
}
]
});
return;
}
@@ -124,9 +111,9 @@ module.exports = {
embeds: [
{
description: "That is not a valid Minecraft username.\n" + "Application cancelled.",
color: embedColor,
},
],
color: embedColor
}
]
});
return;
}
@@ -141,25 +128,19 @@ module.exports = {
const answer1_1 = answer1.first().content;
await user.send({
embeds: [
{
embeds: [{
title: "**Question 2**",
description:
ia2 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
smallM +
"`",
description: ia2 + "\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" + smallM + "`",
color: embedColor,
footer: {
text: "You have 5 minutes to respond to this message.",
},
},
],
text: "You have 5 minutes to respond to this message."
}
}]
});
const answer2 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 5,
time: 1000 * 60 * 5
});
if (answer2.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
@@ -170,9 +151,9 @@ module.exports = {
embeds: [
{
description: "Max character limit is 128.",
color: embedColor,
},
],
color: embedColor
}
]
});
return;
}
@@ -187,25 +168,19 @@ module.exports = {
const answer2_1 = answer1.first().content;
await user.send({
embeds: [
{
embeds: [{
title: "**Question 3**",
description:
ia3 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
description: ia3 + "\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.",
},
},
],
text: "You have 15 minutes to respond to this message."
}
}]
});
const answer3 = await user.dmChannel.awaitMessages({
filter: (m) => m.author.id === user.id,
max: 1,
time: 1000 * 60 * 15,
time: 1000 * 60 * 15
});
if (answer3.first().attachments.size > 0) {
await user.send({ embeds: [attachments] });
@@ -216,9 +191,9 @@ module.exports = {
embeds: [
{
description: "Max character limit is 256",
color: embedColor,
},
],
color: embedColor
}
]
});
return;
}
@@ -233,70 +208,64 @@ module.exports = {
const answer3_1 = answer1.first().content;
await user.send({
embeds: [
{
embeds: [{
description: "If you want to submit your application, type `yes` if not, type `no`",
color: embedColor,
},
],
});
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,
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") {
await user.send({ embeds: [cancelled] });
return;
if (final.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return
}
await user.send({
embeds: [
{
embeds: [{
description: "Your application has been submitted!",
color: embedColor,
},
],
});
color: embedColor
}]
})
const appChannel = await guild.channels.cache.get(inactivityLogChannel);
await appChannel.send({
embeds: [
{
embeds: [{
title: user.username + "#" + user.discriminator + " - Inactivity Application",
color: embedColor,
thumbnail: {
url: user.displayAvatarURL({ dynamic: true }),
url: user.displayAvatarURL({ dynamic: true })
},
fields: [
{
name: ria1,
value: "`" + answer1_1 + "`",
value: "`" + answer1_1 + "`"
},
{
name: ria2,
value: "`" + answer2_1 + "`",
value: "`" + answer2_1 + "`"
},
{
name: ria3,
value: "`" + answer3_1 + "`",
},
value: "`" + answer3_1 + "`"
}
],
footer: {
icon_url: user.displayAvatarURL({ dynamic: true }),
text: "ID: " + user.id,
},
},
],
text: "ID: " + user.id
}
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
@@ -307,8 +276,8 @@ module.exports = {
.setCustomId("inactiveapplicationdeny")
.setLabel("Deny")
.setStyle(ButtonStyle.Danger),
),
],
)
]
});
},
}
};

View File

@@ -4,6 +4,8 @@ module.exports = {
type: "button",
async execute(interaction) {
await interaction.reply({ content: "This button is currently disabled.", ephemeral: true });
},
};
}
}

View File

@@ -4,6 +4,8 @@ module.exports = {
type: "button",
async execute(interaction) {
await interaction.reply({ content: "This button is currently disabled.", ephemeral: true });
},
};
}
}

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,18 +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 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,
},
],
color: embedColor
}]
});
await message.edit({
@@ -41,28 +40,27 @@ module.exports = {
.setCustomId("staffapplicationdeny")
.setLabel("Deny")
.setStyle(ButtonStyle.Danger)
.setDisabled(true),
),
],
.setDisabled(true)
)
]
});
await staffapp.findOneAndDelete({ userId: applicantId });
await interaction.reply({
embeds: [
{
embeds: [{
title: applicantUsername + " - Staff Application.",
description: "Application accepted by <@" + user.id + ">.",
color: embedColor,
thumbnail: {
url: applicant.avatarURL(),
url: applicant.avatarURL()
},
footer: {
iconurl: guild.iconURL(),
text: "ID: " + applicantId,
},
},
],
text: "ID: " + applicantId
}
}]
});
},
};
}
}

View File

@@ -1,24 +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")
.setRequired(false),
),
);
.setPlaceholder('Enter a reason for denying the application')
.setRequired(false)
)
)
await interaction.showModal(modal);
},
}
};

View File

@@ -1,481 +1,423 @@
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);
const tooLong = new EmbedBuilder()
.setDescription("You took too long to respond.")
.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);
.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,
},
],
});
}]
})
} catch (error) {
await interaction.editReply({ content: "Please enable your DMs.", ephemeral: true });
return;
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,
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") {
await user.send({ embeds: [cancelled] });
return;
if (input.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return
}
// first question
const question1 = await user.send({
embeds: [
{
title: "**Question 1**",
description:
sq1 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
ignM +
"`",
embeds: [{
title : "**Question 1**",
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.",
},
},
],
});
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,
});
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;
color: embedColor
}]
})
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" + "Application cancelled.",
color: embedColor,
},
],
});
return;
embeds: [{
description: "That is not a valid Minecraft username.\n" +
"Application cancelled.",
color: embedColor
}]
})
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: [
{
title: "**Question 2**",
description:
sq2 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n" +
"`(64 characters max)`",
embeds: [{
title : "**Question 2**",
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.",
},
},
],
});
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,
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;
color: embedColor
}]
})
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: [
{
title: "**Question 3**",
description:
sq3 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
embeds: [{
title : "**Question 3**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
title: "**Question 4**",
description:
sq4 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
embeds: [{
title : "**Question 4**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
title: "**Question 5**",
description:
sq5 +
"\n\nPlease type your answer below or type `cancel` to cancel your application.\n`" +
largeM +
"`",
embeds: [{
title : "**Question 5**",
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.",
},
},
],
});
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,
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,
},
],
});
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: [
{
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 +
"`",
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 + "`",
color: embedColor,
footer: {
text: "You have 15 minutes to respond to this message.",
},
},
],
});
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,
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,
},
],
});
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: [
{
embeds: [{
description: "If you want to submit your application, type `yes` if not, type `no`",
color: embedColor,
},
],
});
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,
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") {
await user.send({ embeds: [cancelled] });
return;
if (final.first().content.toLowerCase() !== 'yes') {
await user.send({ embeds: [cancelled]} );
return
}
await user.send({
embeds: [
{
embeds: [{
description: "Your application has been submitted!",
color: embedColor,
},
],
});
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,
});
})
await newStaffApp.save();
await newStaffApp.save()
await user.deleteDM();
const channel = guild.channels.cache.get(staffApplicationsChannel);
await channel.send({
embeds: [
{
embeds: [{
title: user.username + "#" + user.discriminator + " - Staff Application",
color: embedColor,
thumbnail: {
url: user.avatarURL(),
url: user.avatarURL()
},
fields: [
{
name: rsq1,
value: "```" + answer1_1 + "```",
value: "```" + answer1_1 + "```"
},
{
name: rsq2,
value: "```" + answer2_1 + "```",
value: "```" + answer2_1 + "```"
},
{
name: rsq3,
value: "```" + answer3_1 + "```",
value: "```" + answer3_1 + "```"
},
{
name: rsq4,
value: "```" + answer4_1 + "```",
value: "```" + answer4_1 + "```"
},
{
name: rsq5,
value: "```" + answer5_1 + "```",
value: "```" + answer5_1 + "```"
},
{
name: rsq6,
value: "```" + answer6_1 + "```",
},
value: "```" + answer6_1 + "```"
}
],
footer: {
iconURL: guild.iconURL(),
text: "ID: " + user.id,
},
},
],
text: "ID: " + user.id
}
}],
components: [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
@@ -485,10 +427,11 @@ module.exports = {
new ButtonBuilder()
.setCustomId("staffapplicationdeny")
.setLabel("Deny")
.setStyle(ButtonStyle.Danger),
),
],
});
.setStyle(ButtonStyle.Danger)
)
]
}
},
};
);
}
}
}

View File

@@ -1,12 +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: "verify",
description: "Configure the bot.",
type: "button",
name: 'verify',
description: 'Configure the bot.',
type: 'button',
async execute(interaction) {
const modal = new ModalBuilder()
.setTitle("Verification")
.setCustomId("verifybox")
@@ -19,9 +20,9 @@ module.exports = {
.setPlaceholder("Enter your ign.")
.setRequired(true)
.setMinLength(3)
.setMaxLength(16),
),
);
await interaction.showModal(modal);
},
};
.setMaxLength(16)
)
)
await interaction.showModal(modal)
}
}

View File

@@ -1,50 +1,53 @@
const mongoose = require("mongoose");
const waitinglist = require("../../schemas/waitinglistSchema.js");
const env = require("dotenv").config();
const mongoose = require('mongoose');
const waitinglist = require('../../schemas/waitinglistSchema.js');
const env = require('dotenv').config();
const key = process.env.HYPIXELAPIKEY;
const { hypixelGuildID } = require("../../config/options.json");
const { hypixelGuildID } = require("../../config/options.json")
const fetch = require("axios");
module.exports = {
name: "waitinglistupdate",
description: "Update the waiting list.",
type: "button",
name: 'waitinglistupdate',
description: 'Update the waiting list.',
type: 'button',
async execute(interaction) {
await interaction.deferReply({ ephemeral: true });
const user = interaction.user;
const message = interaction.message;
const embed = message.embeds[0];
const accepted = await waitinglist.find();
const guildAPI = "https://api.hypixel.net/guild";
const guild = guildAPI + "?key=" + key + "&player=";
const accepted = await waitinglist.find()
const guildAPI = "https://api.hypixel.net/guild"
const guild = guildAPI + "?key=" + key + "&player="
for (let i = 0; i < accepted.length; i++) {
const uuid = accepted[i].uuid;
const check = await fetch(guild + uuid);
const uuid = accepted[i].uuid
const check = await fetch(guild + uuid)
if (check.data.guild._id === hypixelGuildID) {
await waitinglist.findOneAndDelete({ uuid: uuid });
continue;
await waitinglist.findOneAndDelete({ uuid: uuid })
continue
}
}
let fields = [];
for (let i = 0; i < accepted.length; i++) {
const timestamp1 = accepted[i].timestamp / 1000;
const timestamp = Math.floor(timestamp1);
const timestamp1 = accepted[i].timestamp / 1000
const timestamp = Math.floor(timestamp1)
fields.push({
name: `${i + 1}. ${accepted[i].IGN}`,
value: `TS: <t:${timestamp}:R>`,
value: `TS: <t:${timestamp}:R>`
});
}
await message.edit({
embeds: [
{
embeds: [{
title: embed.title,
description: embed.description,
color: embed.color,
@@ -55,10 +58,9 @@ module.exports = {
thumbnail: embed.thumbnail,
fields: fields,
timestamp: new Date(),
},
],
}],
});
await interaction.editReply({ content: "Updated the waiting list", ephemeral: true });
},
};
await interaction.editReply({ content: 'Updated the waiting list', ephemeral: true });
}
}

View File

@@ -1,16 +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;
@@ -23,7 +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}`);
@@ -44,15 +45,14 @@ module.exports = {
.setCustomId("checkstats")
.setLabel("Check Stats")
.setStyle(ButtonStyle.Secondary)
.setDisabled(true),
),
],
.setDisabled(true)
)
]
});
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] });
@@ -60,26 +60,19 @@ 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(),
url: applicant.avatarURL()
},
footer: {
iconURL: guild.iconURL(),
text: "ID: " + applicant.id,
},
},
],
text: "ID: " + applicant.id
}
}],
});
},
};
}
}

View File

@@ -1,16 +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;
@@ -18,13 +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: [
@@ -39,14 +40,13 @@ module.exports = {
.setLabel("Deny")
.setStyle(ButtonStyle.Danger)
.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] });
@@ -54,26 +54,19 @@ 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(),
url: applicant.avatarURL()
},
footer: {
iconURL: guild.iconURL(),
text: "ID: " + applicant.id,
},
},
],
});
},
};
text: "ID: " + applicant.id
}
}],
});;
}
}

133
index.js
View File

@@ -1,21 +1,21 @@
const { Client, GatewayIntentBits, Partials, ActivityType, Events, Collection } = require("discord.js");
const { botLogChannel, color } = require("./config/options.json");
const env = require("dotenv").config();
const { Client, GatewayIntentBits, Partials, ActivityType, Events, Collection } = require('discord.js');
const { botLogChannel, color } = require('./config/options.json');
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: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.MessageContent,
GatewayIntentBits.DirectMessages,
GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages,
GatewayIntentBits.GuildMembers, GatewayIntentBits.MessageContent,
GatewayIntentBits.DirectMessages
],
partials: [Partials.GuildMember, Partials.User, Partials.Message, Partials.Channel],
partials: [
Partials.GuildMember, Partials.User, Partials.Message, Partials.Channel
]
});
client.commands = new Collection();
@@ -23,14 +23,15 @@ 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.`);
@@ -38,14 +39,16 @@ for (const file of cmdFiles) {
}
//! 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.`);
@@ -53,8 +56,9 @@ for (const file of cmdTestFiles) {
}
//! command handler
client.on(Events.InteractionCreate, async (interaction) => {
if (!interaction.isChatInputCommand()) return;
client.on(Events.InteractionCreate, async interaction => {
if (!interaction.isChatInputCommand())
return;
const command = interaction.client.commands.get(interaction.commandName);
@@ -68,21 +72,23 @@ client.on(Events.InteractionCreate, async (interaction) => {
} catch (error) {
console.error(error);
await interaction.reply({
content: "There was an error while executing this command!",
ephemeral: true,
});
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.`);
@@ -90,8 +96,9 @@ for (const file of contextMenuFiles) {
}
//! context menu command handler
client.on(Events.InteractionCreate, async (interaction) => {
if (!interaction.isContextMenuCommand()) return;
client.on(Events.InteractionCreate, async interaction => {
if (!interaction.isContextMenuCommand())
return;
const command = interaction.client.commands.get(interaction.commandName);
@@ -105,21 +112,22 @@ client.on(Events.InteractionCreate, async (interaction) => {
} catch (error) {
console.error(error);
await interaction.reply({
content: "There was an error while executing this command!",
ephemeral: true,
});
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.`);
@@ -127,8 +135,9 @@ for (const file of btnFiles) {
}
//! button event handler
client.on(Events.InteractionCreate, async (event) => {
if (!event.isButton()) return;
client.on(Events.InteractionCreate, async event => {
if (!event.isButton())
return;
const event2 = event.client.events.get(event.customId);
@@ -142,53 +151,57 @@ client.on(Events.InteractionCreate, async (event) => {
} catch (error) {
console.error(error);
await event.reply({
content: "There was an error while executing this event!",
ephemeral: true,
});
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.`);
}
}
client.on(Events.InteractionCreate, async (interaction) => {
client.on(Events.InteractionCreate, async interaction => {
if (interaction.isCommand()) {
console.log(
interaction.user.username + "#" + interaction.user.discriminator + " ran " + interaction.commandName,
);
console.log(interaction.user.username + "#" +
interaction.user.discriminator + " ran " +
interaction.commandName);
} else if (interaction.isButton()) {
console.log(
interaction.user.username + "#" + interaction.user.discriminator + " clicked " + interaction.customId,
);
console.log(interaction.user.username + "#" +
interaction.user.discriminator + " clicked " +
interaction.customId);
}
});
client.on(Events.ClientReady, () => {
console.log("Logged in as " + client.user.tag + "!");
const channel = client.channels.cache.get(botLogChannel);
const embedColor = Number(color.replace("#", "0x"));
const embedColor = Number(color.replace('#', '0x'))
if (!channel) {
return;
}
channel.send({ embeds: [{ description: `Bot is online!`, color: embedColor }] });
channel.send(
{ embeds: [{ description: `Bot is online!`, color: embedColor }] });
});
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 = [
{ name: "for Martina's return", type: ActivityType.Watching },
@@ -197,17 +210,17 @@ client.on(Events.ClientReady, () => {
{ name: "with Perlcence the AI", type: ActivityType.Playing },
{ name: "with ur mom in my bed", type: ActivityType.Playing },
{ name: "with Jone the idiot", type: ActivityType.Playing },
{ name: "over the Illegitimate Server", type: ActivityType.Watching },
{ name: "over the Illegitimate Server", type: ActivityType.Watching }
];
let i = 0;
setInterval(() => client.user.setActivity(activities[i++ % activities.length]), 1000 * 60 * 30);
});
client.on(Events.ClientReady, () => {
client.user.setStatus("dnd");
setInterval(() =>
client.user.setActivity(activities[i++ % activities.length]),
1000 * 60 * 30)
});
client.on(Events.ClientReady, () => { client.user.setStatus('dnd'); });
client.login(token);
connect(mongoURI, {}).then(() => {
console.log("Connected to MongoDB");
});
console.log('Connected to MongoDB');
})

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,19 +1,20 @@
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.PRODTOKEN;
const clientId = process.env.CLIENTID;
const guildId = process.env.GUILDID;
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) {
@@ -27,7 +28,8 @@ 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 () => {
@@ -35,7 +37,10 @@ if (!arg) {
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 });
const data = await rest.put(
Routes.applicationCommands(clientId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
@@ -43,10 +48,11 @@ if (!arg) {
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-testing").filter((file) => file.endsWith(".js"));
const commandFiles = fs.readdirSync('./commands-testing').filter(file => file.endsWith('.js'));
// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
for (const file of commandFiles) {
@@ -55,7 +61,8 @@ 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 () => {
@@ -63,7 +70,10 @@ if (!arg) {
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.applicationGuildCommands(clientId, guildId), { body: commands });
const data = await rest.put(
Routes.applicationGuildCommands(clientId, guildId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
@@ -71,6 +81,7 @@ if (!arg) {
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,5 +1,5 @@
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.DEVID;
const guildId = process.env.GUILDID;
@@ -8,7 +8,9 @@ const commands = [];
// Grab all the command files from the commands directory you created earlier
// const commandFiles = fs.readdirSync('./commands-testing').filter(file => file.endsWith('.js'));
const commandFiles = ["./commands/config.js"];
const commandFiles = [
'./commands/config.js',
]
// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
for (const file of commandFiles) {
@@ -17,19 +19,23 @@ for (const file of commandFiles) {
}
// 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 () => {
(async () => {
try {
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.applicationGuildCommands(clientId, guildId), { body: commands });
const data = await rest.put(
Routes.applicationGuildCommands(clientId, guildId),
{ 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);
}
})();
})();

View File

@@ -1,13 +1,13 @@
/* ---------- bedwars level ---------- */
function getExpForLevel(level) {
if (level == 0) return 0;
function getExpForLevel(level){
if(level == 0) return 0;
var respectedLevel = getLevelRespectingPrestige(level);
if (respectedLevel > EASY_LEVELS) {
if(respectedLevel > EASY_LEVELS){
return 5000;
}
switch (respectedLevel) {
switch(respectedLevel){
case 1:
return 500;
case 2:
@@ -20,10 +20,11 @@ function getExpForLevel(level) {
return 5000;
}
function getLevelRespectingPrestige(level) {
if (level > HIGHEST_PRESTIGE * LEVELS_PER_PRESTIGE) {
function getLevelRespectingPrestige(level){
if(level > HIGHEST_PRESTIGE * LEVELS_PER_PRESTIGE){
return level - HIGHEST_PRESTIGE * LEVELS_PER_PRESTIGE;
} else {
}
else {
return level % LEVELS_PER_PRESTIGE;
}
}
@@ -32,20 +33,20 @@ const EASY_LEVELS_XP = 7000;
const XP_PER_PRESTIGE = 96 * 5000 + EASY_LEVELS_XP;
const LEVELS_PER_PRESTIGE = 100;
const HIGHEST_PRESTIGE = 50;
function getLevelForExp(exp) {
function getLevelForExp(exp){
var prestiges = Math.floor(exp / XP_PER_PRESTIGE);
var level = prestiges * LEVELS_PER_PRESTIGE;
var expWithoutPrestiges = exp - prestiges * XP_PER_PRESTIGE;
var expWithoutPrestiges = exp - (prestiges * XP_PER_PRESTIGE);
for (let i = 1; i <= EASY_LEVELS; ++i) {
for(let i = 1; i <= EASY_LEVELS; ++i){
var expForEasyLevel = getExpForLevel(i);
if (expWithoutPrestiges < expForEasyLevel) {
if(expWithoutPrestiges < expForEasyLevel){
break;
}
level++;
expWithoutPrestiges -= expForEasyLevel;
}
return level + expWithoutPrestiges / 5000;
return level + expWithoutPrestiges / 5000
}
// hypixel
const BASE = 10000;
@@ -69,8 +70,8 @@ function getExpFromLevelToNext(level) {
}
function getTotalExpToLevel(level) {
const lv = Math.floor(level);
const x0 = getTotalExpToFullLevel(lv);
const lv = Math.floor(level); const
x0 = getTotalExpToFullLevel(lv);
if (level === lv) return x0;
return (getTotalExpToFullLevel(lv + 1) - x0) * (level % 1) + x0;
}
@@ -87,14 +88,14 @@ function getPercentageToNextLevel(exp) {
/* ---------- skywars level ---------- */
function skywarsLevel(xp) {
var xps = [0, 20, 70, 150, 250, 500, 1000, 2000, 3500, 6000, 10000, 15000];
let exactLevel = 0;
let exactLevel = 0
if (xp >= 15000) {
exactLevel = (xp - 15000) / 10000 + 12;
return exactLevel;
} else {
for (i = 0; i < xps.length; i++) {
if (xp < xps[i]) {
exactLevel = i + (xp - xps[i - 1]) / (xps[i] - xps[i - 1]);
exactLevel = i + (xp - xps[i-1]) / (xps[i] - xps[i-1]);
return exactLevel;
}
}
@@ -104,5 +105,5 @@ function skywarsLevel(xp) {
module.exports = {
getExactLevel,
skywarsLevel,
getLevelForExp,
};
getLevelForExp
}