nyx/command/CODM/build.js
2023-10-31 01:39:28 +00:00

746 lines
18 KiB
JavaScript

const { Client, CommandInteraction, EmbedBuilder } = require("discord.js");
const axios = require("axios");
module.exports = {
name: "build",
description: "Get gunsmith builds",
usage: "[Weapon Name] [Author] [Tag]",
category: "CODM",
options: [
{
type: 1,
name: "assault_rifle",
description: "Get a gunsmith build for a Assault Rifle",
options: [
{
type: 3,
name: "name",
description: "Name of the Gun",
required: true,
choices: [
{
name: "Type 25",
value: "A01",
},
{
name: "M16",
value: "A02",
},
{
name: "AK117",
value: "A03",
},
{
name: "AK-47",
value: "A04",
},
{
name: "ASM10",
value: "A05",
},
{
name: "M4",
value: "A06",
},
{
name: "BK57",
value: "A07",
},
{
name: "LK24",
value: "A08",
},
{
name: "ICR-1",
value: "A09",
},
{
name: "Man-o-War",
value: "A10",
},
{
name: "KN-44",
value: "A11",
},
{
name: "HBRa3",
value: "A12",
},
{
name: "HVK-30",
value: "A13",
},
{
name: "DR-H",
value: "A14",
},
{
name: "Peacekeeper MK2",
value: "A15",
},
{
name: "FR .556",
value: "A16",
},
{
name: "AS VAL",
value: "A17",
},
{
name: "CR-56 AMAX",
value: "A18",
},
{
name: "M13",
value: "A19",
},
{
name: "Swordfish",
value: "A20",
},
{
name: "Kilo 141",
value: "A21",
},
],
},
{
type: 3,
name: "author",
description: "Select a Content Creator",
required: true,
choices: [
{
name: "path.exe",
value: "path.exe",
},
{
name: "Jokesta",
value: "Jokesta",
},
// {
// name: "Stats On Duty",
// value: "Stats On Duty",
// },
],
},
{
type: 3,
name: "tag",
description: "Playstyle/game mode of the build",
required: true,
choices: [
{
name: "Aggressive",
value: "Aggressive",
},
{
name: "Passive",
value: "Passive",
},
{
name: "Search And Destroy",
value: "Search And Destroy",
},
{
name: "Respawn",
value: "Respawn",
},
],
},
],
},
{
type: 1,
name: "sub_machine_gun",
description: "Get a gunsmith build for a Sub Machine Gun",
options: [
{
type: 3,
name: "name",
description: "Name of the Gun",
required: true,
choices: [
{
name: "RUS-79U",
value: "D01",
},
{
name: "Chicom",
value: "D02",
},
{
name: "PDW-57",
value: "D03",
},
{
name: "Razorback",
value: "D04",
},
{
name: "MSMC",
value: "D05",
},
{
name: "HG40",
value: "D06",
},
{
name: "Pharo",
value: "D07",
},
{
name: "GKS",
value: "D08",
},
{
name: "Cordite",
value: "D09",
},
{
name: "QQ9",
value: "D10",
},
{
name: "Fennec",
value: "D11",
},
{
name: "AGR 556",
value: "D12",
},
{
name: "QXR",
value: "D13",
},
{
name: "PP19 Bizon",
value: "D14",
},
{
name: "MX9",
value: "D15",
},
{
name: "CBR4",
value: "D16",
},
{
name: "PPSh 41",
value: "D17",
},
],
},
{
type: 3,
name: "author",
description: "Select a Content Creator",
required: true,
choices: [
{
name: "path.exe",
value: "path.exe",
},
{
name: "Jokesta",
value: "Jokesta",
},
],
},
{
type: 3,
name: "tag",
description: "Playstyle/game mode of the build",
required: true,
choices: [
{
name: "Aggressive",
value: "Aggressive",
},
{
name: "Passive",
value: "Passive",
},
{
name: "Search And Destroy",
value: "Search And Destroy",
},
{
name: "Respawn",
value: "Respawn",
},
],
},
],
},
{
type: 1,
name: "sniper_rifle",
description: "Get a gunsmith build for a Sniper Rifle",
options: [
{
type: 3,
name: "name",
description: "Name of the Gun",
required: true,
choices: [
// {
// name: "XPR-50",
// value: "B01",
// },
{
name: "Arctic .50",
value: "B02",
},
{
name: "M21 EBR",
value: "B03",
},
{
name: "DL Q33",
value: "B04",
},
{
name: "Locus",
value: "B05",
},
// {
// name: "NA-45",
// value: "B06",
// },
{
name: "Outlaw",
value: "B07",
},
{
name: "Rytec AMR",
value: "B08",
},
{
name: "SVD",
value: "B09",
},
],
},
{
type: 3,
name: "author",
description: "Select a Content Creator",
required: true,
choices: [
{
name: "path.exe",
value: "path.exe",
},
],
},
{
type: 3,
name: "tag",
description: "Playstyle/game mode of the build",
required: true,
choices: [
{
name: "Aggressive",
value: "Aggressive",
},
{
name: "Passive",
value: "Passive",
},
{
name: "Search And Destroy",
value: "Search And Destroy",
},
{
name: "Respawn",
value: "Respawn",
},
],
},
],
},
{
type: 1,
name: "light_machine_gun",
description: "Get a gunsmith build for a Light Machine Gun",
options: [
{
type: 3,
name: "name",
description: "Name of the Gun",
required: true,
choices: [
{
name: "S36",
value: "C01",
},
{
name: "UL736",
value: "C02",
},
{
name: "RPD",
value: "C03",
},
{
name: "M4 LMG",
value: "C04",
},
{
name: "Chopper",
value: "C05",
},
{
name: "Holger 26",
value: "C06",
},
{
name: "Hades",
value: "C07",
},
{
name: "PKM",
value: "C08",
},
],
},
{
type: 3,
name: "author",
description: "Select a Content Creator",
required: true,
choices: [
{
name: "path.exe",
value: "path.exe",
},
],
},
{
type: 3,
name: "tag",
description: "Playstyle/game mode of the build",
required: true,
choices: [
{
name: "Aggressive",
value: "Aggressive",
},
{
name: "Passive",
value: "Passive",
},
{
name: "Search And Destroy",
value: "Search And Destroy",
},
{
name: "Respawn",
value: "Respawn",
},
],
},
],
},
{
type: 1,
name: "shotgun",
description: "Get a gunsmith build for a Shotgun",
options: [
{
type: 3,
name: "name",
description: "Name of the Gun",
required: true,
choices: [
{
name: "HS2126",
value: "E01",
},
{
name: "BY15",
value: "E02",
},
{
name: "HS0405",
value: "E03",
},
{
name: "Striker",
value: "E04",
},
{
name: "KRM 262",
value: "E05",
},
{
name: "Echo",
value: "E06",
},
{
name: "R9-0",
value: "E07",
},
{
name: "JAK-12",
value: "E08",
},
],
},
{
type: 3,
name: "author",
description: "Select a Content Creator",
required: true,
choices: [
{
name: "path.exe",
value: "path.exe",
},
{
name: "dHitman",
value: "dhitman",
},
],
},
{
type: 3,
name: "tag",
description: "Playstyle/game mode of the build",
required: true,
choices: [
{
name: "ADS",
value: "ADS",
},
{
name: "Hipfire",
value: "Hipfire",
},
],
},
],
},
{
type: 1,
name: "marksman_rifle",
description: "Get a gunsmith build for a Marksman Rifle",
options: [
{
type: 3,
name: "name",
description: "Name of the Gun",
required: true,
choices: [
{
name: "Kilo Bolt-Action",
value: "F01",
},
{
name: "SKS",
value: "F02",
},
{
name: "SP-R 208",
value: "F03",
},
{
name: "MK2",
value: "F04",
},
],
},
{
type: 3,
name: "author",
description: "Select a Content Creator",
required: true,
choices: [
{
name: "path.exe",
value: "path.exe",
},
{
name: "Stats On Duty",
value: "Stats On Duty",
},
],
},
{
type: 3,
name: "tag",
description: "Playstyle/game mode of the build",
required: true,
choices: [
{
name: "Aggressive",
value: "Aggressive",
},
{
name: "Passive",
value: "Passive",
},
{
name: "Respawn",
value: "Respawn",
},
],
},
],
},
{
type: 1,
name: "pistol",
description: "Get a gunsmith build for a Pistol",
options: [
{
type: 3,
name: "name",
description: "Name of the Gun",
required: true,
choices: [
{
name: "J358",
value: "G01",
},
{
name: "MW11",
value: "G02",
},
{
name: ".50 GS",
value: "G03",
},
{
name: "Renetti",
value: "G04",
},
{
name: "Shorty",
value: "G05",
},
{
name: "Crossbow",
value: "G06",
},
],
},
{
type: 3,
name: "author",
description: "Select a Content Creator",
required: true,
choices: [
{
name: "path.exe",
value: "path.exe",
},
// {
// name: "Stats On Duty",
// value: "Stats On Duty",
// },
],
},
{
type: 3,
name: "tag",
description: "Playstyle/game mode of the build",
required: true,
choices: [
{
name: "Respawn",
value: "Respawn",
},
],
},
],
},
],
/**
*
* @param {Client} client
* @param {CommandInteraction} interaction
* @param {String[]} args
*/
run: async (client, interaction, args, utils) => {
const cwts = args[1];
const cc = args[2];
const tag = args[3];
const data = await axios
.get(
`${process.env.api}/api/v1/codm/build?cwts=${cwts}&cc=${cc}&tag=${tag}`,
{
headers: {
Authorization: process.env.CODM_API_KEY,
},
}
)
.then(res => res.data)
.catch(e => null);
console.log(data);
if (!data?.cwts) {
const embed = new EmbedBuilder()
.setDescription(
`<:nyx_not_available:897378400031879188> We don't have a **${tag}** gunsmith build for the gun with **CWTS 🆔 ${cwts}** by **${cc}**, Please try another tag or a differnt content creator`
)
.setColor(client.color);
try {
interaction.followUp({ embeds: [embed] });
} catch (e) {
interaction.editReply({ embeds: [embed] });
}
} else {
const arr = [];
data.attachments.map((e, i) => {
return arr.push(`**${i + 1}:** ${e}`);
});
const embed = new EmbedBuilder()
.setTitle(`${tag} build for ${data.weaponName} from ${data.author}`)
.setDescription(
`<:nyx_description:897379659665264650> **Description** \`\`\`\n${data.notes}\n \`\`\``
)
.setColor(16580400)
.setImage(data.imageUrl ? data.imageUrl : null)
.setFooter({
text: `Builds Aggregated by ${client.author}`,
iconURL: client.user.displayAvatarURL({ dynamic: true }),
})
.setTimestamp()
.addFields(
{
name: "<:nyx_author:897379080549314601> Author:",
value: `\`\`\`\n${data.author}\n\`\`\``,
inline: true,
},
{
name: "<a:lastupdate:897381474330873887> Last Updated:",
value: `\`\`\`\n${utils.parseShortDate(
new Date(data.lastUpdate)
)}\n\`\`\``,
inline: true,
},
{
name: ":id: CWTS:",
value: `\`\`\`\n${data.cwts}\n\`\`\``,
inline: true,
},
{
name: ":paperclip: Attachments:",
value: arr.join("\n"),
},
{
name: "<a:tags:897034924140404776> Tags",
value: data.tags.join(", "),
}
)
.setURL(client.web);
try {
interaction.followUp({
embeds: [embed],
});
} catch (e) {
interaction.editReply({ embeds: [embed] });
}
}
},
};