Making all files use prettier

Signed-off-by: Taken <taken@mairimashita.org>
This commit is contained in:
2023-08-31 13:22:52 +02:00
parent 593f5544f7
commit 5aa85986cd
49 changed files with 4020 additions and 3779 deletions

1
.gitignore vendored
View File

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

View File

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

View File

@@ -1,34 +1,35 @@
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,34 +1,36 @@
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,34 +1,24 @@
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];
@@ -37,6 +27,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,88 +1,87 @@
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 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 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 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 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)) {
@@ -102,25 +101,27 @@ 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;
@@ -129,18 +130,25 @@ 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);
@@ -148,15 +156,17 @@ 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,9 +14,7 @@ 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) {
@@ -24,8 +22,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;
@@ -39,9 +37,7 @@ 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;
}
@@ -49,15 +45,17 @@ 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;
}
@@ -65,19 +63,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) {
@@ -87,11 +85,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
@@ -113,9 +111,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
@@ -126,79 +124,95 @@ 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,4 +1,10 @@
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 = {
@@ -17,7 +23,8 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true))
.setRequired(true),
),
)
.addSubcommand((subcommand) =>
subcommand
@@ -27,7 +34,9 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true)))
.setRequired(true),
),
)
.addSubcommand((subcommand) =>
subcommand
.setName("sendverfiymessage")
@@ -36,7 +45,9 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the verfiy message to.")
.setRequired(true)))
.setRequired(true),
),
)
.addSubcommand((subcommand) =>
subcommand
.setName("sendwaitinglistmessage")
@@ -45,7 +56,9 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the waiting list message to.")
.setRequired(true)))
.setRequired(true),
),
)
.addSubcommand((subcommand) =>
subcommand
.setName("sendinactivityapplication")
@@ -54,7 +67,9 @@ module.exports = {
option
.setName("channel")
.setDescription("The channel to send the application to.")
.setRequired(true)))
.setRequired(true),
),
)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.setDMPermission(false),
@@ -64,7 +79,6 @@ module.exports = {
const subcommand = interaction.options.getSubcommand();
const embedColor = Number(color.replace("#", "0x"));
if (subcommand === "sendguildapplication") {
const channel = interaction.options.getChannel("channel");
@@ -76,21 +90,22 @@ 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 });
}
@@ -106,21 +121,22 @@ 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 });
@@ -137,21 +153,22 @@ 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 });
@@ -161,59 +178,62 @@ 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,70 +1,60 @@
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 =>
.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) =>
subcommand
.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.')))
.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') {
if (subcommand === "reload") {
const { exec } = require("child_process");
await interaction.reply({ content: "Reloading...", ephemeral: true });
const { exec } = require('child_process');
await interaction.reply({ content: 'Reloading...', ephemeral: true })
exec('pm2 restart 0', async (err, stdout, stderr) => {
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);
@@ -74,34 +64,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,55 +1,67 @@
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,35 +1,41 @@
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);
@@ -37,23 +43,25 @@ 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);
@@ -61,228 +69,227 @@ 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 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,153 +1,161 @@
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);
}
}
@@ -156,25 +164,31 @@ 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,54 +1,51 @@
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,51 +1,54 @@
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,41 +1,34 @@
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({
@@ -45,13 +38,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,39 +1,34 @@
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,59 +1,57 @@
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,281 +1,289 @@
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 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,7 +5,18 @@ 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",
@@ -15,21 +26,18 @@ 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;
@@ -37,17 +45,19 @@ 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;
}
@@ -55,10 +65,12 @@ 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;
}
@@ -66,64 +78,79 @@ 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) {
@@ -170,7 +197,7 @@ module.exports = {
const newVerify = new verify({
_id: new mongoose.Types.ObjectId(),
userID: user.id,
uuid: userUUID
uuid: userUUID,
});
await newVerify.save();
@@ -179,17 +206,22 @@ 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,38 +1,35 @@
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);
@@ -40,19 +37,20 @@ 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,30 +1,29 @@
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"));
@@ -32,15 +31,17 @@ 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;
}
@@ -48,19 +49,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) {
@@ -70,11 +71,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
@@ -96,9 +97,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
@@ -109,72 +110,95 @@ 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,502 +1,572 @@
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);
if (interaction.customId === 'guildapply') {
const userRoles = guild.members.cache.get(user.id).roles.cache.map((role) => role.id);
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()
@@ -510,11 +580,10 @@ module.exports = {
new ButtonBuilder()
.setCustomId("checkstats")
.setLabel("Check Stats")
.setStyle(ButtonStyle.Secondary)
)
]
.setStyle(ButtonStyle.Secondary),
),
],
});
}
}
}
},
};

View File

@@ -1,17 +1,16 @@
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;
@@ -20,12 +19,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({
@@ -45,19 +44,21 @@ 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();
@@ -66,7 +67,7 @@ module.exports = {
userID: applicantId,
uuid: applicantUUID,
IGN: applicantIGN,
timestamp: time
timestamp: time,
});
await waitingListAdd.save();
@@ -74,20 +75,21 @@ 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,13 +1,12 @@
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"));
@@ -15,18 +14,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,5 +1,14 @@
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");
@@ -20,13 +29,11 @@ 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);
@@ -39,13 +46,15 @@ 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 });
@@ -56,7 +65,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] });
@@ -75,19 +84,23 @@ 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] });
@@ -98,9 +111,9 @@ module.exports = {
embeds: [
{
description: "Max character limit is 16.",
color: embedColor
}
]
color: embedColor,
},
],
});
return;
}
@@ -111,9 +124,9 @@ module.exports = {
embeds: [
{
description: "That is not a valid Minecraft username.\n" + "Application cancelled.",
color: embedColor
}
]
color: embedColor,
},
],
});
return;
}
@@ -128,19 +141,25 @@ 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] });
@@ -151,9 +170,9 @@ module.exports = {
embeds: [
{
description: "Max character limit is 128.",
color: embedColor
}
]
color: embedColor,
},
],
});
return;
}
@@ -168,19 +187,25 @@ 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] });
@@ -191,9 +216,9 @@ module.exports = {
embeds: [
{
description: "Max character limit is 256",
color: embedColor
}
]
color: embedColor,
},
],
});
return;
}
@@ -208,64 +233,70 @@ 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()
@@ -276,8 +307,8 @@ module.exports = {
.setCustomId("inactiveapplicationdeny")
.setLabel("Deny")
.setStyle(ButtonStyle.Danger),
)
]
),
],
});
}
},
};

View File

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

View File

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

View File

@@ -1,14 +1,13 @@
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;
@@ -16,16 +15,18 @@ 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({
@@ -40,27 +41,28 @@ 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,25 +1,24 @@
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,423 +1,481 @@
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()
@@ -427,11 +485,10 @@ module.exports = {
new ButtonBuilder()
.setCustomId("staffapplicationdeny")
.setLabel("Deny")
.setStyle(ButtonStyle.Danger)
)
]
.setStyle(ButtonStyle.Danger),
),
],
});
}
);
}
}
}
},
};

View File

@@ -1,13 +1,12 @@
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")
@@ -20,9 +19,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,53 +1,50 @@
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,
@@ -58,9 +55,10 @@ 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,17 +1,16 @@
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;
@@ -24,7 +23,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}`);
@@ -45,14 +44,15 @@ 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,19 +60,26 @@ 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,17 +1,16 @@
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;
@@ -19,13 +18,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: [
@@ -40,13 +39,14 @@ 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,19 +54,26 @@ 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,15 +23,14 @@ 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.`);
@@ -39,16 +38,14 @@ 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.`);
@@ -56,9 +53,8 @@ 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);
@@ -72,23 +68,21 @@ 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.`);
@@ -96,9 +90,8 @@ 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);
@@ -112,22 +105,21 @@ 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.`);
@@ -135,9 +127,8 @@ 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);
@@ -151,57 +142,53 @@ 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 },
@@ -210,17 +197,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)
setInterval(() => client.user.setActivity(activities[i++ % activities.length]), 1000 * 60 * 30);
});
client.on(Events.ClientReady, () => {
client.user.setStatus("dnd");
});
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,20 +1,19 @@
const { REST, Routes } = require('discord.js');
const env = require('dotenv').config();
const { REST, Routes } = require("discord.js");
const env = require("dotenv").config();
const token = process.env.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) {
@@ -28,8 +27,7 @@ else if (arg === '--prod') {
}
// 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 () => {
@@ -37,10 +35,7 @@ else if (arg === '--prod') {
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) {
@@ -48,11 +43,10 @@ else if (arg === '--prod') {
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) {
@@ -61,8 +55,7 @@ else if (arg === '--dev') {
}
// 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 () => {
@@ -70,10 +63,7 @@ else if (arg === '--dev') {
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) {
@@ -81,7 +71,6 @@ else if (arg === '--dev') {
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,9 +8,7 @@ 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) {
@@ -19,23 +17,19 @@ 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,11 +20,10 @@ 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;
}
}
@@ -33,20 +32,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;
@@ -70,8 +69,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;
}
@@ -88,14 +87,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;
}
}
@@ -105,5 +104,5 @@ function skywarsLevel(xp) {
module.exports = {
getExactLevel,
skywarsLevel,
getLevelForExp
}
getLevelForExp,
};