const Command = require("../../base/Command.js"), Discord = require("discord.js"), fetch = require("node-fetch"), gamedig = require("gamedig"), Sentry = require("@sentry/node"); class Minecraft extends Command { constructor (client) { super(client, { name: "minecraft", dirname: __dirname, enabled: true, guildOnly: false, aliases: [ "mc" ], memberPermissions: [], botPermissions: [ "SEND_MESSAGES", "EMBED_LINKS" ], nsfw: false, ownerOnly: false, cooldown: 3000 }); } async run (message, args, data) { const ip = args[0]; if (!ip) return message.error("general/minecraft:MISSING_IP"); const favicon = `https://eu.mc-api.net/v3/server/favicon/${ip}`; let options = { type: "minecraft", host: ip }; if (ip.split(":").length > 1) { const ip = ip.split(":") options = { type: "minecraft", host: ip[0], port: ip[1] }; }; const m = await message.sendT("misc:PLEASE_WAIT", null, { prefixEmoji: "loading" }); let json = null; await gamedig.query(options).then((res) => { json = res; }).catch((err) => { Sentry.captureException(err); }); if (!json) { options.type = "minecraftpe"; await gamedig.query(options).then((res) => { json = res; }).catch((err) => { Sentry.captureException(err); }); }; if (!json) return m.error("general/minecraft:FAILED", null, { edit: true }); const imgRes = await fetch("https://www.minecraftskinstealer.com/achievement/a.php?i=2&h=Success&t="+ip); const imgAttachment = new Discord.MessageAttachment(await imgRes.buffer(), "success.png"); const mcEmbed = new Discord.MessageEmbed() .setAuthor(message.translate("general/minecraft:FIELD_NAME", { ip: json.name })) .addField(message.translate("general/minecraft:FIELD_VERSION"), json.raw.vanilla.raw.version.name) .addField(message.translate("general/minecraft:FIELD_CONNECTED"), message.translate("general/minecraft:PLAYERS", { count: (json.raw.players ? json.raw.players.online : json.players.length) })) .addField(message.translate("general/minecraft:FIELD_MAX"), message.translate("general/minecraft:PLAYERS", { count: (json.raw.players ? json.raw.players.max : json.maxplayers) })) .addField(message.translate("general/minecraft:FIELD_STATUS"), message.translate("general/minecraft:ONLINE")) .addField(message.translate("general/minecraft:FIELD_IP"), json.connect) .setColor(data.config.embed.color) .setThumbnail(favicon) .setFooter(data.config.embed.footer); m.edit(null, [ mcEmbed, imgAttachment ]); } }; module.exports = Minecraft;