diff --git a/commands/check.js b/commands/check.js index 40722ff..4e2db64 100644 --- a/commands/check.js +++ b/commands/check.js @@ -26,8 +26,6 @@ module.exports = { const ign = interaction.options.getString("ign"); const mojang = "https://api.mojang.com/users/profiles/minecraft/"; - // const slothPixel = "https://api.slothpixel.me/api/players/"; - // const guildAPI = "https://api.slothpixel.me/api/guilds/"; const hypixel = "https://api.hypixel.net/player" const guildAPI = "https://api.hypixel.net/guild" const minotar = "https://minotar.net/helm/"; @@ -69,18 +67,17 @@ 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') { - 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 guildCheck = await fetch(guild); diff --git a/events/buttons/checkstats.js b/events/buttons/checkstats.js index a0f0427..3b59e93 100644 --- a/events/buttons/checkstats.js +++ b/events/buttons/checkstats.js @@ -2,6 +2,9 @@ const { color } = require('../../config/options.json'); const fetch = require('axios'); const guildapp = require('../../schemas/guildAppSchema.js'); const { bwfdkr, bwstars, bwwins, duelswins, swstars } = require('../../config/reqs.json'); +const env = require("dotenv").config(); +const hypixelApiKey = process.env.HYPIXELAPIKEY; +const { getExactLevel, skywarsLevel, getLevelForExp } = require("../../utils/functions.js"); module.exports = { name: 'checkstats', @@ -20,50 +23,90 @@ module.exports = { const uuid = guildappdata.uuid; const mojang = "https://api.mojang.com/user/profile/" - const slothPixel = "https://api.slothpixel.me/api/players/"; - const guildAPI = "https://api.slothpixel.me/api/guilds/" + const 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 userCheck = await fetch(mojang + uuid); const ign = userCheck.data.name; + const head = minotar + ign; - try { - await fetch(slothPixel + uuid); - } catch (error) { + const player = hypixel + "?key=" + hypixelApiKey + "&uuid=" + uuid + const stats = await fetch(player); + + if (!stats.data.player) { interaction.editReply({ embeds: [{ description: "That player hasn't played Hypixel before.", color: embedColor }] - }) - return + }); + return; } - const stats = await fetch(slothPixel + uuid); - const head = minotar + ign; + const rank2 = stats.data.player.newPackageRank; + const monthlyRank = stats.data.player.monthlyPackageRank; - const rank_formatted = stats.data.rank_formatted - const rank2 = rank_formatted.replace(/&[0-9a-fk-or]/g, "") + 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 === "") { - var rank = "" + const guild = guildAPI + "?key=" + hypixelApiKey + "&player=" + uuid + const guildCheck = await fetch(guild); + + if (!guildCheck.data.guild) { + var guildName = "None"; } else { - var rank = rank2 + " " + var guildName = guildCheck.data.guild.name; } - try { - const guildCheck = await fetch(guildAPI + uuid) - var guildName = guildCheck.data.name - } catch (error) { - var guildName = "None" + if (!guildCheck.data.guild) { + var guildTag = "" + } else if (!guildCheck.data.guild.tag) { + var guildTag = "" + } else { + var guildTag = " [" + guildCheck.data.guild.tag + "]" } - const hsbwstars = stats.data.stats.BedWars.level - const hsbwfkdr = stats.data.stats.BedWars.final_k_d - const hsbwwins = stats.data.stats.BedWars.wins - const hsswstars = stats.data.stats.SkyWars.level - const hsduelswins = stats.data.stats.Duels.general.wins + //bedwars level + const hsbwexp = stats.data.player.stats.Bedwars.Experience; + const hsbwstars = getLevelForExp(hsbwexp); + // bedwars fkdr + const hsbwfk = stats.data.player.stats.Bedwars.final_kills_bedwars; + const hsbwfd = stats.data.player.stats.Bedwars.final_deaths_bedwars; + const hsbwfkdr = hsbwfk / hsbwfd; + // bedwars wins + const hsbwwins = stats.data.player.stats.Bedwars.wins_bedwars; + // skywars level + const hsswexp = stats.data.player.stats.SkyWars.skywars_experience; + const hsswstars = skywarsLevel(hsswexp); + // skywars kdr + const hsswkills = stats.data.player.stats.SkyWars.kills; + const hsswdeaths = stats.data.player.stats.SkyWars.deaths; + const hsswkd = hsswkills / hsswdeaths; + //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 + // duels wins + const hsduelswins = stats.data.player.stats.Duels.wins; + // duels wlr + const hsduelslosses = stats.data.player.stats.Duels.losses; + const hsduelswlr = hsduelswins / hsduelslosses; + // network level + const hypixelExp = stats.data.player.networkExp; + const level = getExactLevel(hypixelExp); if (hsbwstars < bwstars || hsbwfkdr < bwfdkr || hsbwwins < bwwins) { var bwtitle = " This player does not meet the BedWars requirements." @@ -83,24 +126,14 @@ module.exports = { var duelstitle = " This player meets the Duels requirements." } - try { - const guildCheck = await fetch(guildAPI + uuid) - const tag_formatted = guildCheck.data.tag_formatted - const guildTag2 = tag_formatted.replace(/&[0-9a-fk-or]/g, "") - var guildTag = " " + guildTag2 - } catch (error) { - var guildTag = "" - } - await interaction.editReply({ embeds: [{ - title: rank + stats.data.username + guildTag, - description: "**Network Level:** `" + stats.data.level.toString() + "`\n" + - "**Current Guild:** `" + guildName + "`", + title: rank + stats.data.player.displayname + guildTag, + description: "**Network Level:** `" + + level.toFixed(2).toString() + "`\n" + + "**Current Guild:** `" + guildName + "`", color: embedColor, - thumbnail: { - url: head - }, + thumbnail: { url: head }, footer: { text: interaction.guild.name + " | Developed by @Taken#0002", icon_url: interaction.guild.iconURL() @@ -108,25 +141,42 @@ module.exports = { fields: [ { name: bwtitle, - value: "**➺ Stars:** `" + stats.data.stats.BedWars.level.toString() + "`\n" + - "**➺ FKDR:** `" + stats.data.stats.BedWars.final_k_d.toString() + "`\n" + - "**➺ Wins:** `" + stats.data.stats.BedWars.wins.toString() + "`" + value: "**➺ Stars:** `" + + hsbwstars.toFixed(2).toString() + " / " + + bwstars.toString() + "`\n" + + "**➺ FKDR:** `" + + hsbwfkdr.toFixed(2).toString() + + " / " + bwfdkr.toString() + "`\n" + + "**➺ Wins:** `" + + hsbwwins.toString() + " / " + + bwwins.toString() + "`" }, { name: swtitle, - value: "**➺ Stars:** `" + stats.data.stats.SkyWars.level.toFixed(2).toString() + "`\n" + - "**➺ KDR:** `" + stats.data.stats.SkyWars.kill_death_ratio.toString() + "`\n" + - "**➺ Wins:** `" + stats.data.stats.SkyWars.wins.toString() + "`" + value: + "**➺ Stars:** `" + + hsswstars.toFixed(2).toString() + + " / " + swstars.toString() + "`\n" + + "**➺ KDR:** `" + + hsswkd.toFixed(2).toString() + + "`\n" + + "**➺ Wins:** `" + + hsswwins.toString() + "`" }, { name: duelstitle, - value: "**➺ Wins:** `" + stats.data.stats.Duels.general.wins.toString() + "`\n" + - "**➺ KDR:** `" + stats.data.stats.Duels.general.kd_ratio.toFixed(2).toString() + "`\n" + - "**➺ WLR:** `" + stats.data.stats.Duels.general.win_loss_ratio.toFixed(2).toString() + "`" + value: "**➺ Wins:** `" + + hsduelswins.toString() + + " / " + duelswins.toString() + "`\n" + + "**➺ KDR:** `" + + hsduelskd.toFixed(2).toString() + + "`\n" + + "**➺ WLR:** `" + + hsduelswlr.toFixed(2).toString() + + "`" } ] }] - - }) + }); } -}; \ No newline at end of file +};