import { Command, CommandoMessage } from 'discord.js-commando'; import { MessageEmbed } from 'discord.js'; import emoji from 'emoji-random' import gamedig from 'gamedig' import gameDigHelper from '../../utils/gameDigHelper.js' module.exports = class CSGOServerStatusUtility extends Command { constructor(client) { super(client, { name: 'csgoserverstatus', aliases: [ 'counterstrikeserverstatus', 'counter-strike-server-status', 'counterstrikeglobaloffensiveserverstatus', 'counter-strike-global-offensive-server-status', 'csgoss' ], group: 'utility', memberName: 'csgoserverstatus', description: 'Grabs you the server status of a CS:GO server.', examples: [ 'uwu!csgoserverstatus', 'uwu!csgoss' ], userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], throttling: { usages: 5, duration: 30 }, args: [ { key: 'host', prompt: 'What is the IP or host of the server?', type: 'string' }, { key: 'port', prompt: 'What is the port of the server?', type: 'integer', default: '27015', max: 65535, min: 1 } ] }); } async run(msg: CommandoMessage, { host, port }) { try { const options = { host, type: 'csgo' } if (port) { options.port = port } gamedig .query(options) .then(data => { let emb = gameDigHelper(data) emb.setColor(0xFFCC4D) emb.setThumbnail('https://steamcdn-a.akamaihd.net/steam/apps/730/header.jpg') return msg.replyEmbed(emb) }) .catch(err => { if (err === 'UDP Watchdog Timeout') return msg.reply('Server timed out, it\'s probably offline. ' + emoji.random()) console.error(err) return msg.reply('Woops, an unknown error has occured. ' + emoji.random()) }) } finally { msg.channel.stopTyping() } } };