Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
|
33d5b3e19d |
75 changed files with 8908 additions and 1861 deletions
|
@ -6,5 +6,5 @@ SPOTIFY_ID =
|
|||
SPOTIFY_SECRET =
|
||||
host = lavalink.darrennathanael.com
|
||||
port = 2095
|
||||
password = whatwasthelastthingyousaid
|
||||
password = whatwasthelastingyousaid
|
||||
api = http://api.cath.gq
|
50
.github/README.md
vendored
50
.github/README.md
vendored
|
@ -1,4 +1,4 @@
|
|||
<h1 align="center"> NYX [Cath.exe] </h1>
|
||||
<h1 align="center"> NYX </h1>
|
||||
<!-- header -->
|
||||
<p align="center">
|
||||
<a href="https://rebrand.ly/cathSupport" target="_blank"><img alt="NYX_banner" src = "https://media.discordapp.net/attachments/896078559293104128/896091759157858394/nyx_banner_3d.png?width=1341&height=447"></a>
|
||||
|
@ -18,20 +18,18 @@
|
|||
<a href="https://rebrand.ly/cathSupport"><img src="https://discordapp.com/api/guilds/718762019586572341/widget.png?style=banner2" alt="Support Server" /></a>
|
||||
</p>
|
||||
|
||||
|
||||
<!-- description -->
|
||||
|
||||
**NYX** _(previously known as Cath)_ is a first and only **COD Mobile Statistics & Gunsmith** Bot which also doubles as a multipurpose discord bot with many features that include but are not limited to Moderation, Music and Economy. <br>
|
||||
The Call of Duty Stats are courtesy of **Stats on Duty** & **Round Table**<br>
|
||||
🔺 **Apex Legends Commands** will be added soon, the player stats command will be added after the global launch when the API supports it.
|
||||
<br><br>
|
||||
**NYX** *(previously known as Cath)* is a first and only **COD Mobile Statistics & Gunsmith** Bot which also doubles as a multipurpose discord bot with many features that include but are not limited to Moderation, Music and Economy. <br>
|
||||
The Call of Duty Stats are courtesy of **Round Table** by Cygnoux Familia.<br><br>
|
||||
If you like this bot, feel free to :star: **Star** this repository.<br>
|
||||
|
||||
> ⚠ The Verifed bot instance is current called Cath.exe, we are working on getting it changed
|
||||
> <br>
|
||||
<br>
|
||||
|
||||
# Features
|
||||
|
||||
> _This is a Non-Exhaustive list for commands. To access the full list of commands, check out our [Documentation](https://thunder75.gitbook.io/cath-bot/core/commands)._
|
||||
# Features
|
||||
> *This is a Non-Exhaustive list for commands. To access the full list of commands, check out our [Documentation](https://thunder75.gitbook.io/cath-bot/core/commands).*
|
||||
|
||||
<a href="https://thunder75.gitbook.io/cath-bot/core/commands" ><img src="https://img.shields.io/static/v1?label=List %20OF&message=Commands&color=5865F2&logo=gitbook&logoColor=white&style=for-the-badge&scale=1.4"></a>
|
||||
|
||||
|
@ -45,23 +43,13 @@ If you like this bot, feel free to :star: **Star** this repository.<br>
|
|||
|
||||
## <img height="18px" src="../util/assets/images/cod_logo.svg"> **Call of Duty Mobile**
|
||||
|
||||
- **Weapon Statistics** courtesy of **Round Table** & **Stats On Duty**
|
||||
- **Currated Gunsmith Builds** by various content creators like Jokesta, dHitman, Path.exe, Stats On Duty and more comming soon.
|
||||
- **Weapon Statistics** courtesy of **Round Table** by Cygnoux Familia.
|
||||
- **Currated Gunsmith Builds** by various content creators like Jokesta, dHitman, Path.exe and more comming soon.
|
||||
- **Perks** detailed info about the perks.
|
||||
- **Scorestreak** detailed info about scorestreak with preview videos.
|
||||
- **Randomly Generated Class** Wanna try something challenging? try our Randomly Generated Gunsmith builds.
|
||||
|
||||
> We also provide access to our database that includes In-depth Weapon statistics & Gunsmith Builds from various Content Creators, & other Call of duty related info, please [contact us](https://rebrand.ly/cathSupport) for more info.
|
||||
|
||||
## <img height="16px" src="../util/assets/images/apex/apex-legends-logo-white.svg"> **Apex Legends Mobile**
|
||||
> ⚠ *Coming Soon™*
|
||||
|
||||
- **Player Stats** view your in-game stats. <!-- if they support mobile for the stats api -->
|
||||
- **Legends** detailed info about legends & their abilities.
|
||||
- **Guns** detailed info about guns.
|
||||
- **Random Combos** Wanna try something challenging? try to win a game with a random selected legend & Gun combination
|
||||
- *& many more, coming soon!*
|
||||
|
||||
## More Info
|
||||
|
||||
[![Top language](https://img.shields.io/github/languages/top/night0721/cath.exe?labelColor=F7DF1E&color=555555&style=for-the-badge&scale=1.4)](https://github.com/night0721/cath.exe)
|
||||
|
@ -70,7 +58,8 @@ If you like this bot, feel free to :star: **Star** this repository.<br>
|
|||
|
||||
A detailed Deployment guide can be found [here](https://thunder75.gitbook.io/cath-bot/deployment).
|
||||
|
||||
<!-- <details>
|
||||
|
||||
<details>
|
||||
<summary>Made With</summary>
|
||||
|
||||
[![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black)](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
|
||||
|
@ -80,6 +69,15 @@ A detailed Deployment guide can be found [here](https://thunder75.gitbook.io/cat
|
|||
<img src ="https://forthebadge.com/images/badges/built-with-love.svg" width = "122"><br>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Issues & PRs</summary>
|
||||
|
||||
[![Open issues](https://img.shields.io/github/issues-raw/night0721/cath.exe?style=for-the-badge)](https://github.com/night0721/cath.exe/issues)
|
||||
[![Closed issues](https://img.shields.io/github/issues-closed-raw/night0721/cath.exe?style=for-the-badge)](https://github.com/night0721/cath.exe/issues)
|
||||
[![Open PRs](https://img.shields.io/github/issues-pr-raw/night0721/cath.exe?style=for-the-badge)](https://github.com/night0721/cath.exe/pulls)
|
||||
[![Closed PRs](https://img.shields.io/github/issues-pr-closed-raw/night0721/cath.exe?style=for-the-badge)](https://github.com/night0721/cath.exe/pulls)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Github Stats</summary>
|
||||
|
||||
|
@ -87,9 +85,9 @@ A detailed Deployment guide can be found [here](https://thunder75.gitbook.io/cat
|
|||
![GitHub Discussions](https://img.shields.io/github/discussions/night0721/cath.exe?color=5865F2&logo=github&logoColor=ffffff&style=for-the-badge)
|
||||
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/night0721/cath.exe?color=5865F2&logo=github&logoColor=ffffff&style=for-the-badge)
|
||||
[![Last commit](https://img.shields.io/github/last-commit/night0721/cath.exe?icon=discord&color=5865F2&style=for-the-badge&scale=1.4)](https://github.com/night0721/cath.exe)
|
||||
<!-- [![Files](https://tokei.rs/b1/github/night0721/cath.exe?category=files&style=for-the-badge)](https://github.com/night0721/cath.exe)
|
||||
<!-- [![Files](https://tokei.rs/b1/github/night0721/cath.exe?category=files&style=for-the-badge)](https://github.com/night0721/cath.exe) -->
|
||||
|
||||
</details> -->
|
||||
</details>
|
||||
|
||||
<h1 align = "center"> Support, Feature Request & Bug Reports </h1>
|
||||
|
||||
|
@ -106,7 +104,7 @@ You can report bugs or issues by opening a issue in this repository. Alternateve
|
|||
<a href="https://rebrand.ly/cathSupport" target="_blank"><img src="https://discordapp.com/api/guilds/718762019586572341/widget.png?style=banner1"></a>
|
||||
</p>
|
||||
|
||||
<h1 align="center"> Contributors </h1>
|
||||
<h1 align="center"> Contributors </h1>
|
||||
|
||||
Contributions are always welcomed, but make sure to read [Contributing.md](/CONTRIBUTING.md) first.
|
||||
|
||||
|
@ -117,7 +115,5 @@ Contributions are always welcomed, but make sure to read [Contributing.md](/CONT
|
|||
<p align = "center">
|
||||
<a href="https://discord.gg/mjVwkCsWY7" target="_blank"><img src="https://discordapp.com/api/guilds/756525751594909797/widget.png?style=banner1"></a>
|
||||
</p> -->
|
||||
|
||||
⠀
|
||||
|
||||
<!-- <img src="https://socialify.git.ci/night0721/cath.exe/image?description=1&descriptionEditable=A%20Discord.js%20v13%20Template%20based%20on%20cath.exe&font=Raleway&forks=1&issues=1&language=1&owner=1&pattern=Circuit%20Board&pulls=1&stargazers=1&theme=Dark"> -->
|
||||
|
|
110
CODM/builds.js
Normal file
110
CODM/builds.js
Normal file
|
@ -0,0 +1,110 @@
|
|||
const builds = require("../util/Data/builds.json");
|
||||
const guns = builds.Main;
|
||||
const Discord = require("discord.js");
|
||||
const nmDt = require("../util/Data/aliases.json");
|
||||
const weaponActualName = nmDt.weaponActualName;
|
||||
const weaponAlliasName = nmDt.weaponAlliasName;
|
||||
module.exports = {
|
||||
name: "build",
|
||||
description: "Check gun builds",
|
||||
usage: "(Gun)",
|
||||
category: "CODM",
|
||||
status: false,
|
||||
Owner: true,
|
||||
run: async (client, message, args) => {
|
||||
const currGun = weaponIdentifier(args.join(" ").replace("\n", " "));
|
||||
if (!currGun) message.reply({ content: "Please specify a gun" });
|
||||
if (typeof currGun == "string") {
|
||||
message.reply({ embeds: [currGun] });
|
||||
} else {
|
||||
const attachNames = currGun.Attachments.map(
|
||||
x => `**${x.Name}** [${builds.AttachmentTypes[x.Type]}]`
|
||||
);
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setTitle(
|
||||
`Build for ${currGun.Name} (${builds.WeaponTypes[currGun.Type]})`
|
||||
)
|
||||
.setColor(16580400)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp()
|
||||
.setURL(client.web)
|
||||
.setDescription(
|
||||
attachNames.reduce(
|
||||
(t, x, i, a) => t + (i < a.length - 1 ? "\n" : " \n") + x
|
||||
)
|
||||
)
|
||||
.setImage(currGun.URL);
|
||||
return message.reply({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
};
|
||||
function weaponIdentifier(inpWeaponName) {
|
||||
if (inpWeaponName.length < 2) {
|
||||
return "The name `" + inpWeaponName + "` is too short.";
|
||||
}
|
||||
let probableWeapons = [];
|
||||
for (let i = 0; i < guns.length; i++) {
|
||||
if (inpWeaponName.Simplify() == guns[i].Name.Simplify()) {
|
||||
return guns[i];
|
||||
} else if (guns[i].Name.Simplify().includes(inpWeaponName.Simplify())) {
|
||||
probableWeapons.push(i);
|
||||
}
|
||||
}
|
||||
|
||||
if (probableWeapons.length == 1) {
|
||||
return guns[probableWeapons[0]];
|
||||
}
|
||||
|
||||
for (let i = 0; i < weaponAlliasName.length; i++) {
|
||||
for (let j = 0; j < weaponAlliasName[i].length; j++) {
|
||||
if (weaponAlliasName[i][j].Simplify() == inpWeaponName.Simplify()) {
|
||||
for (let i2 = 0; i2 < guns.length; i2++) {
|
||||
if (weaponActualName[i].Simplify() == guns[i2].Name.Simplify()) {
|
||||
return guns[i2];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
probableWeapons = [...new Set(probableWeapons)];
|
||||
if (probableWeapons.length == 1) {
|
||||
return guns[probableWeapons[0]];
|
||||
}
|
||||
if (probableWeapons.length > 1) {
|
||||
return (
|
||||
"Did you mean `" +
|
||||
probableWeapons
|
||||
.map(x => guns[x].Name)
|
||||
.reduce((out, x, i) =>
|
||||
[out, x].join(i === probableWeapons.length - 1 ? "` or `" : "`, `")
|
||||
) +
|
||||
"`?"
|
||||
);
|
||||
}
|
||||
return "Couldn't identify the weapon: `" + '"' + inpWeaponName + '"`';
|
||||
}
|
||||
// ENABLE AFTER Holloween
|
||||
|
||||
// run: async (client, interaction, args) => {
|
||||
// const embed = new MessageEmbed()
|
||||
// .setTitle(`Prefix commands are now disabled`)
|
||||
// .setDescription(`Please enable **Application commands** in the channel settings to get access to slash commands, we have discontinued prefix commands.`)
|
||||
// .setColor(client.color)
|
||||
// .setThumbnail(interaction.guild.iconURL({ dynamic: true }))
|
||||
// .addFields(
|
||||
// {
|
||||
// name: "Need help ?",
|
||||
// value: `Join our **[Support Server](https://discord.gg/SR7TeNJG67)**`,
|
||||
// inline: true,
|
||||
// },
|
||||
// {
|
||||
// name: "Support us <a:donate:896985486260846614>",
|
||||
// value: `[KoFi](https://ko-fi.com/cathteam)`,
|
||||
// inline: true,
|
||||
// }
|
||||
// )
|
||||
// .setThumbnail("https://github.com/night0721/cath.js/blob/master/util/assets/images/nyx_logo_transparent.webp")
|
||||
// .setTimestamp();
|
||||
// interaction.followUp({ embeds: [embed] });
|
||||
// },
|
||||
// };
|
55
CODM/class.js
Normal file
55
CODM/class.js
Normal file
|
@ -0,0 +1,55 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const model = require("../../models/weapons");
|
||||
const Attachments = require("../../util/Data/attachments.json");
|
||||
module.exports = {
|
||||
name: "class",
|
||||
description: "Generate random class in CODM",
|
||||
category: "CODM",
|
||||
run: async (client, message, args) => {
|
||||
const data = async () => {
|
||||
const d = await model.findOne({});
|
||||
const types = d.Categories;
|
||||
const names = d.Primary;
|
||||
const category = types[Math.floor(Math.random() * types.length)];
|
||||
const weapons = names[0][category];
|
||||
return `${weapons[Math.floor(Math.random() * weapons.length)]}`;
|
||||
};
|
||||
const primary_weapon = await data();
|
||||
const primary = primary_weapon.replace(/[ -]/g, "_").replace(/\./g, "");
|
||||
const slots = shuffle(Object.keys(Attachments[primary][0]));
|
||||
const slot_1 = slots.next().value,
|
||||
slot_2 = slots.next().value,
|
||||
slot_3 = slots.next().value,
|
||||
slot_4 = slots.next().value,
|
||||
slot_5 = slots.next().value;
|
||||
const result = new MessageEmbed()
|
||||
.setColor(client.color)
|
||||
.setTitle(`🎲Random Class of ${primary_weapon}🎲`)
|
||||
.setDescription(
|
||||
`**Attachments**\n**${getAttachment(
|
||||
primary,
|
||||
slot_1,
|
||||
)}**\n**${getAttachment(primary, slot_2)}**\n**${getAttachment(
|
||||
primary,
|
||||
slot_3,
|
||||
)}**\n**${getAttachment(primary, slot_4)}**\n**${getAttachment(
|
||||
primary,
|
||||
slot_5,
|
||||
)}**`,
|
||||
)
|
||||
.setURL(client.web)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
message.reply({ embeds: [result] });
|
||||
function* shuffle(array) {
|
||||
let i = array.length;
|
||||
while (i--) {
|
||||
yield array.splice(Math.floor(Math.random() * (i + 1)), 1)[0];
|
||||
}
|
||||
}
|
||||
function getAttachment(gun, slot) {
|
||||
const ca = Attachments[gun][0][slot];
|
||||
return ca[Math.floor(Math.random() * ca.length)];
|
||||
}
|
||||
},
|
||||
};
|
118
CODM/damage.js
Normal file
118
CODM/damage.js
Normal file
|
@ -0,0 +1,118 @@
|
|||
const common = require("../../util/functions/common");
|
||||
let currGun = {},
|
||||
currStats = [],
|
||||
currAttachments = {},
|
||||
currDRM = {},
|
||||
totalEffects = [],
|
||||
interpretion = "",
|
||||
hasError = false;
|
||||
const errMsg = "*Generic placeholder error message*";
|
||||
|
||||
module.exports = {
|
||||
name: "damage",
|
||||
description: "Check gun damage",
|
||||
usage: "(Gun)",
|
||||
category: "CODM",
|
||||
run: async (client, message, args) => {
|
||||
const repEmb = dmg(args.join(" ").replace("\n", " "));
|
||||
if (hasError) {
|
||||
message.reply({ embeds: [repEmb] });
|
||||
}
|
||||
else {
|
||||
message.channel.send({ embeds: [repEmb] });
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
function dmg(inpmsg) {
|
||||
currGun = common.weaponIdentifier(inpmsg);
|
||||
if (typeof currGun == "string") {
|
||||
hasError = true;
|
||||
return currGun;
|
||||
}
|
||||
currDRM = currGun.drm[0];
|
||||
currStats = currGun.stats;
|
||||
currAttachments = common.attachmentsIdentifier(
|
||||
inpmsg,
|
||||
currGun.aments,
|
||||
currStats,
|
||||
);
|
||||
if (typeof currAttachments == "string") {
|
||||
hasError = true;
|
||||
return currAttachments;
|
||||
}
|
||||
if (currAttachments.length) {
|
||||
totalEffects = common.totaler(currAttachments);
|
||||
currDRM = currGun.drm[totalEffects[37]];
|
||||
currDRM.range = currDRM.range.map(
|
||||
x => (x * (totalEffects[13] + 100)) / 100,
|
||||
);
|
||||
currStats = common.updateStatswithEffects(totalEffects, currStats);
|
||||
}
|
||||
const mn = [
|
||||
"Head",
|
||||
"Neck",
|
||||
"Upper Chest",
|
||||
"Lower Chest",
|
||||
"Shoulders",
|
||||
"Upper Arms",
|
||||
"Lower Arms",
|
||||
"Stomach",
|
||||
"Belly Button",
|
||||
"Crotch",
|
||||
"Thighs",
|
||||
"Calf Muscles",
|
||||
"Feet",
|
||||
],
|
||||
m1 = currDRM.bodymultiplier,
|
||||
m2 = [...new Set(m1)], // [1.2, 1, 0.9]
|
||||
m3 = m1.map(x => m2.indexOf(x)), // [0, 1, 1, 1, 1, 1, 2, 2, 2]
|
||||
m4 = m2
|
||||
.map(x =>
|
||||
m3
|
||||
.map((y, i) => {
|
||||
if (x === m2[y]) {
|
||||
return mn[i];
|
||||
}
|
||||
})
|
||||
.filter(y => y),
|
||||
)
|
||||
.map(x =>
|
||||
x.length === m1.length
|
||||
? ["All"]
|
||||
: x.length === m1.length - 1
|
||||
? ["Others"]
|
||||
: x,
|
||||
);
|
||||
interpretion = currGun.gunname + common.interpretioner(currAttachments);
|
||||
return {
|
||||
title: "**" + interpretion + "**",
|
||||
color: 4849497,
|
||||
fields: m4.map((x, i) => {
|
||||
return {
|
||||
name: x.join(", ") + ":",
|
||||
value: common.damageHandler(
|
||||
currDRM.damage,
|
||||
currDRM.range,
|
||||
m2[i],
|
||||
100,
|
||||
60000 / currStats[5],
|
||||
currStats[7],
|
||||
currStats[6],
|
||||
currStats[0],
|
||||
),
|
||||
};
|
||||
}),
|
||||
footer: {
|
||||
text: "All the stats courtesy of Project Lighthouse",
|
||||
icon_url:
|
||||
"https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png?width=638&height=638",
|
||||
},
|
||||
};
|
||||
}
|
||||
// console.log(dmg("47 + mono"));
|
||||
/* console.log(dmg("47"));
|
||||
console.log(dmg("striker + choke"));
|
||||
console.log(dmg("striker + choke"));
|
||||
console.log(dmg("striker"));
|
||||
common.makeError();*/
|
168
CODM/effects.js
vendored
Normal file
168
CODM/effects.js
vendored
Normal file
|
@ -0,0 +1,168 @@
|
|||
const common = require("../util/functions/common");
|
||||
const data = require("../util/Data/data.json");
|
||||
|
||||
let currGun, currAttachments, interpretion, hasError;
|
||||
const errMsg = "*Generic placeholder error message*";
|
||||
|
||||
module.exports = {
|
||||
name: "effects",
|
||||
description: "Check gun effects",
|
||||
usage: "(Gun)",
|
||||
category: "CODM",
|
||||
aliases: ["attachements"],
|
||||
/**
|
||||
* @param {Client} client
|
||||
* @param {Message} message
|
||||
* @param {String[]} args
|
||||
*/
|
||||
run: async (client, message, args) => {
|
||||
const repEmb = attachments(args.join(" ").replace("\n", " "));
|
||||
if (hasError) {
|
||||
message.reply({ embeds: [repEmb] });
|
||||
} else {
|
||||
message.channel.send({ embeds: [repEmb] });
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
function attachments(inpmsg) {
|
||||
const out = "",
|
||||
at = data.attachmentTypes.map(x => (x.slice(-1) === "s" ? x : x + "s"));
|
||||
if (inpmsg.includes("+") && inpmsg.includes(":")) {
|
||||
hasError = true;
|
||||
return "Bro, can u liek, not do that?";
|
||||
}
|
||||
if (inpmsg.includes(":")) {
|
||||
const inpAll = inpmsg
|
||||
.split(":")
|
||||
.map(x => x.trim())
|
||||
.filter(x => x),
|
||||
inpType = inpAll.length === 2 ? inpAll[1] : null;
|
||||
if (!inpType) {
|
||||
hasError = true;
|
||||
return inpAll.length < 2
|
||||
? "Empty " + (inpAll[0] ? "" : "weapon name and ") + "attachment type"
|
||||
: "Multiple `:`s detected";
|
||||
}
|
||||
currGun = common.weaponIdentifier(inpAll[0]);
|
||||
if (typeof currGun == "string") {
|
||||
hasError = true;
|
||||
return currGun;
|
||||
}
|
||||
let currAttachmentsType = at.filter(x => simplify(x) == simplify(inpType));
|
||||
currAttachmentsType = currAttachmentsType.length
|
||||
? currAttachmentsType
|
||||
: at.filter(
|
||||
x => simplify(x.substring(0, x.length - 1)) == simplify(inpType)
|
||||
);
|
||||
currAttachmentsType = currAttachmentsType.length
|
||||
? currAttachmentsType
|
||||
: at.filter(x => simplify(x).includes(simplify(inpType)));
|
||||
if (currAttachmentsType.length === 0) {
|
||||
hasError = true;
|
||||
return "Couldn't identify `" + inpType + "`";
|
||||
} else if (currAttachmentsType.length === 1) {
|
||||
currAttachmentsType = at.indexOf(currAttachmentsType[0]);
|
||||
} else {
|
||||
hasError = true;
|
||||
return (
|
||||
"Did you mean `" +
|
||||
currAttachmentsType.reduce((out, x, i) =>
|
||||
[out, x].join(
|
||||
i === currAttachmentsType.length - 1 ? "` or `" : "`, `"
|
||||
)
|
||||
) +
|
||||
"`"
|
||||
);
|
||||
}
|
||||
return {
|
||||
title: currGun.gunname,
|
||||
color: 11348938,
|
||||
fields: [
|
||||
{
|
||||
name:
|
||||
"**" +
|
||||
currGun.gunname +
|
||||
"** has the following " +
|
||||
at[currAttachmentsType],
|
||||
value:
|
||||
"```\n" +
|
||||
currGun.aments
|
||||
.filter(x => x.type - 1 === currAttachmentsType)
|
||||
.map(x => x.name)
|
||||
.join("\n") +
|
||||
"```",
|
||||
},
|
||||
],
|
||||
footer: {
|
||||
text: "All the stats courtesy of Project Lighthouse",
|
||||
icon_url:
|
||||
"https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png?width=638&height=638",
|
||||
},
|
||||
};
|
||||
function simplify(v) {
|
||||
return v.toLowerCase().replace(/[^0-9a-z]/g, "");
|
||||
}
|
||||
}
|
||||
currGun = common.weaponIdentifier(inpmsg);
|
||||
if (typeof currGun == "string") {
|
||||
hasError = true;
|
||||
return currGun;
|
||||
}
|
||||
hasAttachments = common.hasAttachments(inpmsg);
|
||||
currAttachments = [];
|
||||
if (hasAttachments) {
|
||||
currAttachments = common.attachmentsIdentifier(
|
||||
inpmsg,
|
||||
currGun.aments,
|
||||
currGun.stats
|
||||
);
|
||||
if (typeof currAttachments == "string") {
|
||||
hasError = true;
|
||||
return currAttachments;
|
||||
}
|
||||
return {
|
||||
title: currGun.gunname + common.interpretioner(currAttachments),
|
||||
color: 11348938,
|
||||
fields: common.attachmentHandler(
|
||||
common.totaler(currAttachments),
|
||||
currGun.stats
|
||||
),
|
||||
footer: {
|
||||
text: "All the stats courtesy of Project Lighthouse",
|
||||
icon_url:
|
||||
"https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png?width=638&height=638",
|
||||
},
|
||||
};
|
||||
} else {
|
||||
const availableAttachmentTypes = [
|
||||
...new Set(currGun.aments.map(x => x.type)),
|
||||
];
|
||||
return {
|
||||
title: currGun.gunname,
|
||||
color: 11348938,
|
||||
fields: [
|
||||
{
|
||||
name:
|
||||
"**" + currGun.gunname + "** has the following attachment types:",
|
||||
value:
|
||||
"```\n" +
|
||||
availableAttachmentTypes.map(x => at[x - 1]).join(",\n") +
|
||||
"```",
|
||||
},
|
||||
],
|
||||
footer: {
|
||||
text: "All the stats courtesy of Project Lighthouse",
|
||||
icon_url:
|
||||
"https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png?width=638&height=638",
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
// console.log(attachments("Peacekeeper:muzzle")); //common.makeError();
|
||||
/* console.log(attachments(":")); //common.makeError();
|
||||
console.log(attachments("47:optics")); //common.makeError();
|
||||
console.log(attachments("47")); //common.makeError();
|
||||
console.log(attachments("47 + ")); //common.makeError();
|
||||
console.log(attachments("47 + :")); //common.makeError();
|
||||
console.log(attachments("47 + red dot")); common.makeError();*/
|
111
CODM/sgrelo.js
Normal file
111
CODM/sgrelo.js
Normal file
|
@ -0,0 +1,111 @@
|
|||
module.exports = {
|
||||
name: "sgrelo",
|
||||
descriptiom: "Calculate reload time for shotgun",
|
||||
run: async (client, message, args) => {
|
||||
let err = "",
|
||||
wrn = "",
|
||||
interpretedAs = [];
|
||||
function mather(inp) {
|
||||
const inpArr = interpreter(inp),
|
||||
outArr = [];
|
||||
inpArr.map((x, i, a) => {
|
||||
for (let j = i + 1; j < a.length; j++) {
|
||||
outArr.push(worker(x, a[j]));
|
||||
}
|
||||
});
|
||||
const aArr = outArr.map(x => x.a),
|
||||
iArr = outArr.map(x => x.i);
|
||||
return (
|
||||
"Input: `" +
|
||||
interpretedAs.join("`, `") +
|
||||
"`" +
|
||||
(aArr.length == 1
|
||||
? "\nOpening and Closing Animation Time: " +
|
||||
beautifier(aArr[0]) +
|
||||
"\nReload Time: " +
|
||||
beautifier(iArr[0])
|
||||
: "\nAll Opening and Closing Animation Time: " +
|
||||
aArr.map(x => beautifier(x)).join(", ") +
|
||||
"\nAll Reload Time: " +
|
||||
iArr.map(x => beautifier(x)).join(", ") +
|
||||
"\nAverage Opening and Closing Animation Time: " +
|
||||
beautifier(aArr.reduce((t, x) => t + x, 0) / aArr.length) +
|
||||
"\nAverage Reload Time: " +
|
||||
beautifier(iArr.reduce((t, x) => t + x, 0) / iArr.length))
|
||||
);
|
||||
}
|
||||
|
||||
function interpreter(inp) {
|
||||
let out = [
|
||||
...new Set(
|
||||
inp
|
||||
.split(/\n|, |,/g)
|
||||
.filter(x => x)
|
||||
.map(x => x.toLowerCase().replace(/[^0-9a-z]/g, ""))
|
||||
),
|
||||
];
|
||||
out = out
|
||||
.map(x => {
|
||||
interpretedAs.push(x);
|
||||
const obj = {
|
||||
b: 0,
|
||||
f: 0,
|
||||
};
|
||||
if (
|
||||
x.split(/b/g).length > 2 ||
|
||||
x.split(/f/g).length > 2 ||
|
||||
x.split(/[a-z]/g).length > 3
|
||||
) {
|
||||
err += "Unknown identifier `" + x + "`\n";
|
||||
} else if (x.indexOf("b") === -1 || x.indexOf("f") === -1) {
|
||||
err += "Missing identifier `" + x + "`\n";
|
||||
} else if (x.indexOf("b") === x.length - 1) {
|
||||
obj.b = parseFloat(x.split("f")[1].trim());
|
||||
obj.f = parseFloat(x.split("f")[0].trim());
|
||||
} else if (x.indexOf("f") === x.length - 1) {
|
||||
obj.b = parseFloat(x.split("b")[0].trim());
|
||||
obj.f = parseFloat(x.split("b")[1].trim());
|
||||
} else {
|
||||
err += "Unknown identifier `" + x + "`\n";
|
||||
}
|
||||
if (!obj.b && obj.f) {
|
||||
err += "Couldn't interpret `" + x + "`\n";
|
||||
} else if (!Number.isInteger(obj.b)) {
|
||||
err += "Decimal bullet count found `" + x + "`\n";
|
||||
} else if (!Number.isInteger(obj.f)) {
|
||||
wrn += "Decimal value found `" + x + "`\n";
|
||||
}
|
||||
return obj;
|
||||
})
|
||||
.filter(x => JSON.stringify(x).length && x);
|
||||
if (out.length === 1) {
|
||||
err += "Single equation found\n";
|
||||
}
|
||||
return err || !out.length ? [] : out;
|
||||
}
|
||||
|
||||
function worker(o1, o2) {
|
||||
const out = {
|
||||
i: 0,
|
||||
a: 0,
|
||||
};
|
||||
out.i = (o1.f - o2.f) / (o1.b - o2.b);
|
||||
out.a = o1.f - out.i * o1.b;
|
||||
return out;
|
||||
}
|
||||
|
||||
function beautifier(num) {
|
||||
return parseFloat(num.toFixed(2)).toString() + "s";
|
||||
}
|
||||
|
||||
const msg = mather(args.join(" "));
|
||||
|
||||
if (err !== "") {
|
||||
message.reply(err);
|
||||
} else if (wrn !== "") {
|
||||
message.reply({ content: wrn + "\n" + msg });
|
||||
} else {
|
||||
message.channel.send({ content: msg });
|
||||
}
|
||||
},
|
||||
};
|
274
CODM/stats.js
Normal file
274
CODM/stats.js
Normal file
|
@ -0,0 +1,274 @@
|
|||
const common = require("../util/functions/common");
|
||||
const data = require("../util/Data/data.json");
|
||||
const Discord = require("discord.js");
|
||||
|
||||
let currGun,
|
||||
currStats,
|
||||
currAttachments,
|
||||
currRecoilArr,
|
||||
currDRM,
|
||||
interpretion,
|
||||
recoilAvailable,
|
||||
chart,
|
||||
hasError;
|
||||
const errMsg = "*Generic placeholder error message*";
|
||||
module.exports = {
|
||||
name: "stats",
|
||||
description: "Check gun stats",
|
||||
usage: "(Gun)",
|
||||
category: "CODM",
|
||||
/**
|
||||
* @param {Client} client
|
||||
* @param {Message} message
|
||||
* @param {String[]} args
|
||||
*/
|
||||
run: async (client, message, args) => {
|
||||
recoilAvailable = false;
|
||||
hasError = false;
|
||||
const repEmb = statsHandler(args.join(" ").replace("\n", " "));
|
||||
|
||||
if (hasError) {
|
||||
message.reply({ embeds: [repEmb] });
|
||||
}
|
||||
if (recoilAvailable) {
|
||||
repEmb.fields.push({
|
||||
name: "**Recoil Graph**",
|
||||
value:
|
||||
"```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
|
||||
});
|
||||
const recoilImageLink = await chart.getShortUrl();
|
||||
repEmb.image = { url: recoilImageLink };
|
||||
}
|
||||
message.reply({ embeds: [repEmb] });
|
||||
},
|
||||
};
|
||||
|
||||
function inpHandler(inpmsg) {
|
||||
statsHandler(inpmsg.split("+")[0]);
|
||||
}
|
||||
|
||||
function statsHandler(inpmsg) {
|
||||
let statsNames = [
|
||||
"Pellets",
|
||||
"Detonation Range",
|
||||
"Explosion Radius",
|
||||
"Explosion Damage",
|
||||
"Firing Mode",
|
||||
"Rate of Fire",
|
||||
"Bullet in Burst",
|
||||
"Time Between Burst",
|
||||
"Bullet Speed",
|
||||
"Penetration Level",
|
||||
"Bullet Spread",
|
||||
"Idle Sway",
|
||||
"Hipfire Pellet Spread",
|
||||
"ADS Pellet Spread",
|
||||
"ADS Time",
|
||||
"Sprint-to-Fire Time",
|
||||
"ADS Zoom",
|
||||
"Magazine",
|
||||
"Reserve",
|
||||
"Reload Type",
|
||||
"Cancel Reload Time",
|
||||
"Reload Time",
|
||||
"Full Reload Time",
|
||||
"Drop Time",
|
||||
"Raise Time",
|
||||
"Sprinting Speed",
|
||||
"Walking Speed",
|
||||
"Straifing Speed",
|
||||
"Damage per Tick",
|
||||
"Number of Ticks",
|
||||
"Time Between Ticks",
|
||||
"Breath Hold Time",
|
||||
"shouldNeverHappen0",
|
||||
"shouldNeverHappen1",
|
||||
"shouldNeverHappen2",
|
||||
"shouldNeverHappen3",
|
||||
"shouldNeverHappen4",
|
||||
],
|
||||
out = [];
|
||||
|
||||
currGun = common.weaponIdentifier(inpmsg);
|
||||
if (typeof currGun == "string") {
|
||||
hasError = true;
|
||||
return currGun;
|
||||
}
|
||||
currStats = currGun.stats;
|
||||
currDRM = currGun.drm[0];
|
||||
currAttachments = [];
|
||||
currAttachments = common.attachmentsIdentifier(
|
||||
inpmsg,
|
||||
currGun.aments,
|
||||
currStats
|
||||
);
|
||||
if (typeof currAttachments == "string") {
|
||||
hasError = true;
|
||||
return currAttachments;
|
||||
}
|
||||
currRecoilArr = [1, 1, currGun.stats[17]];
|
||||
if (currAttachments.length != 0) {
|
||||
const totalEffects = common.totaler(currAttachments);
|
||||
|
||||
currStats = common.updateStatswithEffects(totalEffects, currStats);
|
||||
currRecoilArr = [totalEffects[2], totalEffects[3], currGun.stats[17]]; // must happen after currStats update
|
||||
currDRM = currGun.drm[totalEffects[37]];
|
||||
currDRM.range = currDRM.range.map(x =>
|
||||
Math.round(x * (1 + totalEffects[13] / 100))
|
||||
);
|
||||
out = common.attachmentHandler(totalEffects, currStats);
|
||||
}
|
||||
function statsWorker() {
|
||||
if (currStats[19] === 2) {
|
||||
currStats[21] =
|
||||
currStats[20] + currStats[21] * currStats[17] + currStats[22];
|
||||
currStats[20] = 0;
|
||||
currStats[22] = 0;
|
||||
}
|
||||
currStats[25] = (currStats[25] * currStats[26]) / 100;
|
||||
|
||||
const outReady = currStats.map((x, i) =>
|
||||
x ? statsNames[i].padEnd(24) + ":".padEnd(3) + beautifier(i) : ""
|
||||
);
|
||||
out = [
|
||||
...[
|
||||
"Basic Stats",
|
||||
"ADS Stats",
|
||||
"Bullet Stats",
|
||||
"Magazine",
|
||||
"Handling Stats",
|
||||
"Mobility Stats",
|
||||
"Miscellaneous Stats",
|
||||
].map((x, i) =>
|
||||
fieldMaker(
|
||||
x,
|
||||
[
|
||||
[04, 05, 09],
|
||||
[14, 16, 11, 31],
|
||||
[00, 06, 07, 08, 10, 12, 13],
|
||||
[17, 18, 19, 20, 21, 22],
|
||||
[23, 24],
|
||||
[25, 26, 27, 15],
|
||||
[28, 29, 30, 01, 02, 03],
|
||||
][i]
|
||||
)
|
||||
),
|
||||
...out,
|
||||
];
|
||||
function fieldMaker(inpName, inpIndx) {
|
||||
inpIndx = inpIndx.filter(x => outReady[x]);
|
||||
return inpIndx.length
|
||||
? {
|
||||
name: "**" + inpName + "**",
|
||||
value: "```\n" + inpIndx.map(x => outReady[x]).join("\n") + "```",
|
||||
}
|
||||
: "";
|
||||
}
|
||||
}
|
||||
statsWorker();
|
||||
|
||||
function beautifier(j) {
|
||||
switch (j) {
|
||||
case 04:
|
||||
return data.firingModes[currStats[j] - 1];
|
||||
case 09:
|
||||
return data.penetrationLevels[currStats[j] - 1];
|
||||
case 19:
|
||||
return data.reloadTypes[currStats[j] - 1];
|
||||
case 08:
|
||||
if (currStats[j] == -1) {
|
||||
return "Infinity";
|
||||
} else {
|
||||
return parseFloat(currStats[j].toFixed(2)).toString() + " m/s";
|
||||
}
|
||||
case 03:
|
||||
return parseFloat(currStats[j].toFixed(2))
|
||||
.toString()
|
||||
.replace(".", " ~ ");
|
||||
default:
|
||||
return parseFloat(currStats[j].toFixed(2)).toString() + addUnit(j);
|
||||
}
|
||||
|
||||
function addUnit(j) {
|
||||
switch (j) {
|
||||
case 07:
|
||||
case 14:
|
||||
case 15:
|
||||
case 23:
|
||||
case 24:
|
||||
case 31:
|
||||
return " ms";
|
||||
case 27:
|
||||
case 28:
|
||||
case 25:
|
||||
case 26:
|
||||
return " m/s";
|
||||
case 20:
|
||||
case 21:
|
||||
case 22:
|
||||
return " s";
|
||||
case 16:
|
||||
return "%";
|
||||
case 06:
|
||||
return " Rounds";
|
||||
case 05:
|
||||
return " RPM";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
interpretion = currGun.gunname + common.interpretioner(currAttachments);
|
||||
if (currGun.recoil.hr.length > 2) {
|
||||
chart = common.recoilHandler(
|
||||
currGun.recoil.hr,
|
||||
currGun.recoil.vr,
|
||||
currRecoilArr[0],
|
||||
currRecoilArr[1],
|
||||
currRecoilArr[2]
|
||||
);
|
||||
recoilAvailable = true;
|
||||
} else {
|
||||
recoilAvailable = false;
|
||||
}
|
||||
if (chart == "none") {
|
||||
recoilAvailable = false;
|
||||
}
|
||||
if (chart == "err" || currAttachments == "err") {
|
||||
hasError = true;
|
||||
return "Cocaineeee";
|
||||
}
|
||||
const dmg =
|
||||
common.damageHandler(
|
||||
currDRM.damage,
|
||||
currDRM.range,
|
||||
1,
|
||||
100,
|
||||
60000 / currStats[5],
|
||||
currStats[7],
|
||||
currStats[6],
|
||||
currStats[0]
|
||||
) || "```This should never happen```";
|
||||
out = [
|
||||
currGun.description
|
||||
? {
|
||||
name: "**Description:**",
|
||||
value: "```\n" + currGun.description + "```",
|
||||
}
|
||||
: {},
|
||||
{ name: "**Damage Profile:**", value: dmg },
|
||||
...out,
|
||||
];
|
||||
out = out.filter(x => x.value);
|
||||
return {
|
||||
title: interpretion,
|
||||
color: 5814783,
|
||||
fields: out,
|
||||
footer: {
|
||||
text: "All data courtesy of Project Lighthouse and CoDM Research Crew",
|
||||
icon_url:
|
||||
"https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png?width=638&height=638",
|
||||
},
|
||||
};
|
||||
}
|
||||
// console.log(statsHandler("Holger").fields);
|
|
@ -1,2 +1,2 @@
|
|||
const { CODMClient } = require("cath");
|
||||
module.exports = new CODMClient(process.env.CODM_API_KEY);
|
||||
module.exports = new CODMClient("Gae");
|
||||
|
|
|
@ -14,7 +14,7 @@ class NYX extends Client {
|
|||
presence: {
|
||||
activities: [
|
||||
{
|
||||
name: `/help`,
|
||||
name: `v${require("../package.json").version} | /help`,
|
||||
type: "STREAMING",
|
||||
url: "https://www.youtube.com/watch?v=YSKDu1gKntY",
|
||||
},
|
||||
|
@ -22,7 +22,6 @@ class NYX extends Client {
|
|||
},
|
||||
shard: "auto",
|
||||
restTimeOffset: 0,
|
||||
restRequestTimeout: 99999,
|
||||
partials: ["MESSAGE", "CHANNEL", "REACTION", "GUILD_MEMBER"],
|
||||
intents: 24207,
|
||||
}
|
||||
|
@ -46,12 +45,13 @@ class NYX extends Client {
|
|||
"556808365574193194", // chunchunmaru
|
||||
"746753527338238115", // mightyful
|
||||
];
|
||||
this.currency = "<:nyx_currency:918584872333893703>";
|
||||
this.currency = "<:cp:840231933933387797>"; // <a:pumpkin:898975476863877170>
|
||||
this.xp = "<:nyx_xp:900309007472926720>";
|
||||
this.path = [
|
||||
"614423108388126731", // Camper on Duty
|
||||
"767173194943168542", // Dark Bonker
|
||||
"718762019586572341", // NYX Nation
|
||||
"869583978108157972", // Lighthouse Community
|
||||
"840225563193114624", // Command Test
|
||||
];
|
||||
const client = this;
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const moment = require("moment");
|
||||
const axios = require("axios");
|
||||
const moment = require("moment");
|
||||
module.exports = {
|
||||
name: "build",
|
||||
description: "Get gunsmith builds",
|
||||
usage: "[Weapon Name] [Author] [Tag]",
|
||||
type: "CHAT_INPUT",
|
||||
category: "CODM",
|
||||
options: [
|
||||
|
@ -20,109 +19,101 @@ module.exports = {
|
|||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "Type 25",
|
||||
value: "A01",
|
||||
name: "AK117",
|
||||
value: "ak117",
|
||||
},
|
||||
{
|
||||
name: "M16",
|
||||
value: "A02",
|
||||
value: "m16",
|
||||
},
|
||||
{
|
||||
name: "AK117",
|
||||
value: "A03",
|
||||
name: "Type 25",
|
||||
value: "type25",
|
||||
},
|
||||
{
|
||||
name: "AK-47",
|
||||
value: "A04",
|
||||
value: "ak47",
|
||||
},
|
||||
{
|
||||
name: "ASM10",
|
||||
value: "A05",
|
||||
value: "asm10",
|
||||
},
|
||||
{
|
||||
name: "M4",
|
||||
value: "A06",
|
||||
value: "m4",
|
||||
},
|
||||
{
|
||||
name: "BK57",
|
||||
value: "A07",
|
||||
value: "bk57",
|
||||
},
|
||||
{
|
||||
name: "LK24",
|
||||
value: "A08",
|
||||
},
|
||||
{
|
||||
name: "ICR-1",
|
||||
value: "A09",
|
||||
value: "lk24",
|
||||
},
|
||||
{
|
||||
name: "Man-o-War",
|
||||
value: "A10",
|
||||
value: "manowar",
|
||||
},
|
||||
{
|
||||
name: "ICR-1",
|
||||
value: "icr1",
|
||||
},
|
||||
{
|
||||
name: "KN-44",
|
||||
value: "A11",
|
||||
value: "kn44",
|
||||
},
|
||||
{
|
||||
name: "HBRa3",
|
||||
value: "A12",
|
||||
value: "hbra3",
|
||||
},
|
||||
{
|
||||
name: "HVK-30",
|
||||
value: "A13",
|
||||
value: "hvk30",
|
||||
},
|
||||
{
|
||||
name: "DR-H",
|
||||
value: "A14",
|
||||
value: "drh",
|
||||
},
|
||||
{
|
||||
name: "Peacekeeper MK2",
|
||||
value: "A15",
|
||||
value: "peacekeepermk2",
|
||||
},
|
||||
{
|
||||
name: "FR .556",
|
||||
value: "A16",
|
||||
value: "fr556",
|
||||
},
|
||||
{
|
||||
name: "AS VAL",
|
||||
value: "A17",
|
||||
value: "asval",
|
||||
},
|
||||
{
|
||||
name: "CR-56 AMAX",
|
||||
value: "A18",
|
||||
value: "cr56amax",
|
||||
},
|
||||
{
|
||||
name: "M13",
|
||||
value: "A19",
|
||||
value: "m13",
|
||||
},
|
||||
{
|
||||
name: "Swordfish",
|
||||
value: "A20",
|
||||
},
|
||||
{
|
||||
name: "Kilo 141",
|
||||
value: "A21",
|
||||
value: "swordfish",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "author",
|
||||
name: "youtuber",
|
||||
description: "Select a Content Creator",
|
||||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "path.exe",
|
||||
value: "path.exe",
|
||||
name: "Path.exe",
|
||||
value: "path",
|
||||
},
|
||||
{
|
||||
name: "Jokesta",
|
||||
value: "Jokesta",
|
||||
value: "jokesta",
|
||||
},
|
||||
// {
|
||||
// name: "Stats On Duty",
|
||||
// value: "Stats On Duty",
|
||||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -133,19 +124,19 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "Aggressive",
|
||||
value: "Aggressive",
|
||||
value: "aggressive",
|
||||
},
|
||||
{
|
||||
name: "Passive",
|
||||
value: "Passive",
|
||||
value: "passive",
|
||||
},
|
||||
{
|
||||
name: "Search And Destroy",
|
||||
value: "Search And Destroy",
|
||||
name: "Search & Destroy",
|
||||
value: "snd",
|
||||
},
|
||||
{
|
||||
name: "Respawn",
|
||||
value: "Respawn",
|
||||
value: "respawn",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -163,88 +154,80 @@ module.exports = {
|
|||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "RUS-79U",
|
||||
value: "D01",
|
||||
},
|
||||
{
|
||||
name: "Chicom",
|
||||
value: "D02",
|
||||
name: "RUS-79u",
|
||||
value: "rus79u",
|
||||
},
|
||||
{
|
||||
name: "PDW-57",
|
||||
value: "D03",
|
||||
value: "pdw57",
|
||||
},
|
||||
{
|
||||
name: "Razorback",
|
||||
value: "D04",
|
||||
value: "razorback",
|
||||
},
|
||||
{
|
||||
name: "MSMC",
|
||||
value: "D05",
|
||||
value: "msmc",
|
||||
},
|
||||
{
|
||||
name: "HG40",
|
||||
value: "D06",
|
||||
value: "hg40",
|
||||
},
|
||||
{
|
||||
name: "Pharo",
|
||||
value: "D07",
|
||||
value: "pharo",
|
||||
},
|
||||
{
|
||||
name: "GKS",
|
||||
value: "D08",
|
||||
value: "gks",
|
||||
},
|
||||
{
|
||||
name: "Cordite",
|
||||
value: "D09",
|
||||
value: "cordite",
|
||||
},
|
||||
{
|
||||
name: "QQ9",
|
||||
value: "D10",
|
||||
value: "qq9",
|
||||
},
|
||||
{
|
||||
name: "Fennec",
|
||||
value: "D11",
|
||||
value: "fennec",
|
||||
},
|
||||
{
|
||||
name: "Chicom",
|
||||
value: "chicom",
|
||||
},
|
||||
{
|
||||
name: "AGR 556",
|
||||
value: "D12",
|
||||
value: "agr556",
|
||||
},
|
||||
{
|
||||
name: "QXR",
|
||||
value: "D13",
|
||||
value: "qxr",
|
||||
},
|
||||
{
|
||||
name: "PP19 Bizon",
|
||||
value: "D14",
|
||||
value: "pp19bizon",
|
||||
},
|
||||
{
|
||||
name: "MX9",
|
||||
value: "D15",
|
||||
},
|
||||
{
|
||||
name: "CBR4",
|
||||
value: "D16",
|
||||
},
|
||||
{
|
||||
name: "PPSh 41",
|
||||
value: "D17",
|
||||
value: "mx9",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "author",
|
||||
name: "youtuber",
|
||||
description: "Select a Content Creator",
|
||||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "path.exe",
|
||||
value: "path.exe",
|
||||
name: "Path.exe",
|
||||
value: "path",
|
||||
},
|
||||
{
|
||||
name: "Jokesta",
|
||||
value: "Jokesta",
|
||||
value: "jokesta",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -256,19 +239,19 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "Aggressive",
|
||||
value: "Aggressive",
|
||||
value: "aggressive",
|
||||
},
|
||||
{
|
||||
name: "Passive",
|
||||
value: "Passive",
|
||||
value: "passive",
|
||||
},
|
||||
{
|
||||
name: "Search And Destroy",
|
||||
value: "Search And Destroy",
|
||||
name: "Search & Destroy",
|
||||
value: "snd",
|
||||
},
|
||||
{
|
||||
name: "Respawn",
|
||||
value: "Respawn",
|
||||
value: "respawn",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -285,54 +268,54 @@ module.exports = {
|
|||
description: "Name of the Gun",
|
||||
required: true,
|
||||
choices: [
|
||||
// {
|
||||
// name: "XPR-50",
|
||||
// value: "B01",
|
||||
// },
|
||||
{
|
||||
name: "Arctic .50",
|
||||
value: "B02",
|
||||
value: "arctic50",
|
||||
},
|
||||
{
|
||||
name: "M21 EBR",
|
||||
value: "B03",
|
||||
value: "m21ebr",
|
||||
},
|
||||
{
|
||||
name: "DL Q33",
|
||||
value: "B04",
|
||||
value: "dlq33",
|
||||
},
|
||||
{
|
||||
name: "Locus",
|
||||
value: "B05",
|
||||
value: "locus",
|
||||
},
|
||||
// {
|
||||
// name: "XPR-50",
|
||||
// value: "xpr50",
|
||||
// },
|
||||
// {
|
||||
// name: "NA-45",
|
||||
// value: "B06",
|
||||
// value: "na45",
|
||||
// },
|
||||
{
|
||||
name: "Outlaw",
|
||||
value: "B07",
|
||||
value: "outlaw",
|
||||
},
|
||||
{
|
||||
name: "Rytec AMR",
|
||||
value: "B08",
|
||||
},
|
||||
{
|
||||
name: "SVD",
|
||||
value: "B09",
|
||||
value: "rytecamr",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "author",
|
||||
name: "youtuber",
|
||||
description: "Select a Content Creator",
|
||||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "path.exe",
|
||||
value: "path.exe",
|
||||
name: "Path.exe",
|
||||
value: "path",
|
||||
},
|
||||
// {
|
||||
// name: "little_b",
|
||||
// value: "littleb",
|
||||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -343,19 +326,19 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "Aggressive",
|
||||
value: "Aggressive",
|
||||
value: "aggressive",
|
||||
},
|
||||
{
|
||||
name: "Passive",
|
||||
value: "Passive",
|
||||
value: "passive",
|
||||
},
|
||||
{
|
||||
name: "Search And Destroy",
|
||||
value: "Search And Destroy",
|
||||
name: "Search & Destroy",
|
||||
value: "snd",
|
||||
},
|
||||
{
|
||||
name: "Respawn",
|
||||
value: "Respawn",
|
||||
value: "respawn",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -374,47 +357,43 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "S36",
|
||||
value: "C01",
|
||||
value: "s36",
|
||||
},
|
||||
{
|
||||
name: "UL736",
|
||||
value: "C02",
|
||||
value: "ul736",
|
||||
},
|
||||
{
|
||||
name: "RPD",
|
||||
value: "C03",
|
||||
value: "rpd",
|
||||
},
|
||||
{
|
||||
name: "M4 LMG",
|
||||
value: "C04",
|
||||
value: "m4lmg",
|
||||
},
|
||||
{
|
||||
name: "Chopper",
|
||||
value: "C05",
|
||||
value: "chopper",
|
||||
},
|
||||
{
|
||||
name: "Holger 26",
|
||||
value: "C06",
|
||||
value: "holger26",
|
||||
},
|
||||
{
|
||||
name: "Hades",
|
||||
value: "C07",
|
||||
},
|
||||
{
|
||||
name: "PKM",
|
||||
value: "C08",
|
||||
value: "hades",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "author",
|
||||
name: "youtuber",
|
||||
description: "Select a Content Creator",
|
||||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "path.exe",
|
||||
value: "path.exe",
|
||||
name: "Path.exe",
|
||||
value: "path",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -426,19 +405,19 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "Aggressive",
|
||||
value: "Aggressive",
|
||||
value: "aggressive",
|
||||
},
|
||||
{
|
||||
name: "Passive",
|
||||
value: "Passive",
|
||||
value: "passive",
|
||||
},
|
||||
{
|
||||
name: "Search And Destroy",
|
||||
value: "Search And Destroy",
|
||||
name: "Search & Destroy",
|
||||
value: "snd",
|
||||
},
|
||||
{
|
||||
name: "Respawn",
|
||||
value: "Respawn",
|
||||
value: "respawn",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -457,47 +436,43 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "HS2126",
|
||||
value: "E01",
|
||||
value: "hs2126",
|
||||
},
|
||||
{
|
||||
name: "BY15",
|
||||
value: "E02",
|
||||
},
|
||||
{
|
||||
name: "HS0405",
|
||||
value: "E03",
|
||||
value: "by15",
|
||||
},
|
||||
{
|
||||
name: "Striker",
|
||||
value: "E04",
|
||||
value: "striker",
|
||||
},
|
||||
{
|
||||
name: "KRM 262",
|
||||
value: "E05",
|
||||
name: "KRM_262",
|
||||
value: "krm262",
|
||||
},
|
||||
{
|
||||
name: "Echo",
|
||||
value: "E06",
|
||||
value: "echo",
|
||||
},
|
||||
{
|
||||
name: "HS0405",
|
||||
value: "hs0405",
|
||||
},
|
||||
{
|
||||
name: "R9-0",
|
||||
value: "E07",
|
||||
},
|
||||
{
|
||||
name: "JAK-12",
|
||||
value: "E08",
|
||||
value: "r90",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "author",
|
||||
name: "youtuber",
|
||||
description: "Select a Content Creator",
|
||||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "path.exe",
|
||||
value: "path.exe",
|
||||
name: "Path.exe",
|
||||
value: "path",
|
||||
},
|
||||
{
|
||||
name: "dHitman",
|
||||
|
@ -513,11 +488,11 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "ADS",
|
||||
value: "ADS",
|
||||
value: "ads",
|
||||
},
|
||||
{
|
||||
name: "Hipfire",
|
||||
value: "Hipfire",
|
||||
value: "hipfire",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -536,36 +511,36 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "Kilo Bolt-Action",
|
||||
value: "F01",
|
||||
value: "kiloboltaction",
|
||||
},
|
||||
{
|
||||
name: "SKS",
|
||||
value: "F02",
|
||||
value: "sks",
|
||||
},
|
||||
{
|
||||
name: "SP-R 208",
|
||||
value: "F03",
|
||||
value: "spr208",
|
||||
},
|
||||
{
|
||||
name: "MK2",
|
||||
value: "F04",
|
||||
value: "mk2",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "author",
|
||||
name: "youtuber",
|
||||
description: "Select a Content Creator",
|
||||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "path.exe",
|
||||
value: "path.exe",
|
||||
},
|
||||
{
|
||||
name: "Stats On Duty",
|
||||
value: "Stats On Duty",
|
||||
name: "Path.exe",
|
||||
value: "path",
|
||||
},
|
||||
// {
|
||||
// name: "Little_b",
|
||||
// value: "littleb",
|
||||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -576,15 +551,15 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "Aggressive",
|
||||
value: "Aggressive",
|
||||
value: "aggressive",
|
||||
},
|
||||
{
|
||||
name: "Passive",
|
||||
value: "Passive",
|
||||
value: "passive",
|
||||
},
|
||||
{
|
||||
name: "Respawn",
|
||||
value: "Respawn",
|
||||
value: "respawn",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -603,44 +578,40 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "J358",
|
||||
value: "G01",
|
||||
value: "j358",
|
||||
},
|
||||
{
|
||||
name: "MW11",
|
||||
value: "G02",
|
||||
value: "mw11",
|
||||
},
|
||||
{
|
||||
name: ".50 GS",
|
||||
value: "G03",
|
||||
value: "gs50",
|
||||
},
|
||||
{
|
||||
name: "Renetti",
|
||||
value: "G04",
|
||||
value: "renetti",
|
||||
},
|
||||
{
|
||||
name: "Shorty",
|
||||
value: "G05",
|
||||
value: "shorty",
|
||||
},
|
||||
{
|
||||
name: "Crossbow",
|
||||
value: "G06",
|
||||
value: "crossbow",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "author",
|
||||
name: "youtuber",
|
||||
description: "Select a Content Creator",
|
||||
required: true,
|
||||
choices: [
|
||||
{
|
||||
name: "path.exe",
|
||||
value: "path.exe",
|
||||
name: "Path.exe",
|
||||
value: "path",
|
||||
},
|
||||
// {
|
||||
// name: "Stats On Duty",
|
||||
// value: "Stats On Duty",
|
||||
// },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -651,7 +622,7 @@ module.exports = {
|
|||
choices: [
|
||||
{
|
||||
name: "Respawn",
|
||||
value: "Respawn",
|
||||
value: "respawn",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@ -659,43 +630,141 @@ module.exports = {
|
|||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
const cwts = args[1];
|
||||
const allguns = {
|
||||
ak117: "AK117",
|
||||
m16: "M16",
|
||||
type25: "Type 25",
|
||||
ak47: "AK-47",
|
||||
asm10: "ASM10",
|
||||
m4: "M4",
|
||||
bk57: "BK57",
|
||||
lk24: "LK24",
|
||||
manowar: "Man-O-War",
|
||||
icr1: "ICR-1",
|
||||
kn44: "KN-44",
|
||||
hbra3: "HBRa3",
|
||||
hvk30: "HVK-30",
|
||||
drh: "DR-H",
|
||||
peacekeepermk2: "Peacekeeper MK2",
|
||||
fr556: "FR .556",
|
||||
asval: "AS VAL",
|
||||
cr56amax: "CR-56 AMAX",
|
||||
m13: "M13",
|
||||
swordfish: "Swordfish",
|
||||
|
||||
j358: "J358",
|
||||
gs50: ".50 GS",
|
||||
mw11: "MW11",
|
||||
renetti: "Renetti",
|
||||
shorty: "Shorty",
|
||||
crossbow: "Crossbow",
|
||||
|
||||
kiloboltaction: "Kilo Bolt-Action",
|
||||
sks: "SKS",
|
||||
spr208: "SP-R 208",
|
||||
mk2: "mk2",
|
||||
|
||||
s36: "S36",
|
||||
ul736: "UL736",
|
||||
rpd: "RPD",
|
||||
m4lmg: "M4LMG",
|
||||
chopper: "Chopper",
|
||||
holger26: "Holger 26",
|
||||
hades: "Hades",
|
||||
|
||||
arctic50: "Arctic .50",
|
||||
m21ebr: "M21 EBR",
|
||||
dlq33: "DL Q33",
|
||||
locus: "Locus",
|
||||
// na45: "NA 45",
|
||||
// xpr50: "XPR-50",
|
||||
locus: "Locus",
|
||||
outlaw: "Outlaw",
|
||||
rytecamr: "Rytec AMR",
|
||||
|
||||
hs2126: "HS2126",
|
||||
by15: "BY15",
|
||||
striker: "Striker",
|
||||
krm262: "KRM 262",
|
||||
echo: "Echo",
|
||||
hs0405: "HS0405",
|
||||
r90: "R9-0",
|
||||
|
||||
rus79u: "RUS-79U",
|
||||
hg40: "HG-40",
|
||||
pdw57: "PDW-57",
|
||||
chicom: "Chicom",
|
||||
razorback: "Razorback",
|
||||
msmc: "MSMC",
|
||||
pharo: "Pharo",
|
||||
gks: "GKS",
|
||||
cordite: "Cordite",
|
||||
qq9: "QQ9",
|
||||
fennec: "Fennec",
|
||||
agr556: "AGR 556",
|
||||
qxr: "QXR",
|
||||
pp19bizon: "PP19 Bizon",
|
||||
mx9: "MX9",
|
||||
};
|
||||
const all = {
|
||||
assault_rifle: "Assault Rifle",
|
||||
sniper_rifle: "Sniper Rifle",
|
||||
marksman_rifle: "Marksman Rifle",
|
||||
shotgun: "Shotgun",
|
||||
light_machine_gun: "Light Machine Gun",
|
||||
sub_machine_gun: "Sub Machine Gun",
|
||||
|
||||
path: "Path.exe",
|
||||
dhitman: "dHitman",
|
||||
jokesta: "Jokesta",
|
||||
// littleb:"Little B",
|
||||
|
||||
aggressive: "Aggressive",
|
||||
passive: "Passive",
|
||||
snd: "Search And Destroy",
|
||||
respawn: "Respawn",
|
||||
ads: "ADS",
|
||||
hipfire: "Hipfire",
|
||||
};
|
||||
const gun = 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}`,
|
||||
`${process.env.api}/api/v1/codm/builds?name=${gun}&cc=${cc}&tag=${tag}`,
|
||||
{
|
||||
headers: {
|
||||
Authorization: process.env.CODM_API_KEY,
|
||||
Authorization: "Gae",
|
||||
},
|
||||
}
|
||||
)
|
||||
.then(res => res.data)
|
||||
.catch(e => null);
|
||||
if (!data?.cwts) {
|
||||
const embed = new MessageEmbed()
|
||||
.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);
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
.catch();
|
||||
const unavaliable = new MessageEmbed()
|
||||
.setDescription(
|
||||
`<:nyx_not_available:897378400031879188> We don't have a ${all[tag]} **${allguns[gun]}** gunsmith build by **${all[cc]}**, Please try another tag or a differnt content creator`
|
||||
)
|
||||
.setColor(client.color);
|
||||
if (!data) {
|
||||
interaction.followUp({ embeds: [unavaliable] });
|
||||
} else {
|
||||
const arr = [];
|
||||
data.attachments.map((e, i) => {
|
||||
return arr.push(`**${i + 1}:** ${e}`);
|
||||
return arr.push(`**${i + 1}: ${e}**`);
|
||||
});
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`${tag} build for ${data.weaponName} from ${data.author}`)
|
||||
.setTitle(
|
||||
`${data.weaponName}(${data.weaponType})'s ${all[tag]} build from ${data.author}`
|
||||
)
|
||||
.setDescription(
|
||||
`<:nyx_description:897379659665264650> **Description** \`\`\`\n${data.notes}\n \`\`\``
|
||||
`<:nyx_description:897379659665264650> Description \`\`\`\n${data.notes}\n\`\`\``
|
||||
)
|
||||
.setColor(16580400)
|
||||
.setImage(data.imageUrl)
|
||||
.setFooter({
|
||||
text: `Builds Aggregated by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(
|
||||
`Builds Aggregated by ${client.author}`,
|
||||
client.user.displayAvatarURL()
|
||||
)
|
||||
.setTimestamp()
|
||||
.addFields(
|
||||
{
|
||||
|
@ -731,3 +800,29 @@ module.exports = {
|
|||
}
|
||||
},
|
||||
};
|
||||
|
||||
// ENABLE AFTER Holloween
|
||||
|
||||
// run: async (client, interaction, args) => {
|
||||
// const embed = new MessageEmbed()
|
||||
// .setTitle(`Prefix commands are now disabled`)
|
||||
// .setDescription(`Please enable **Application commands** in the channel settings to get access to slash commands, we have discontinued prefix commands.`)
|
||||
// .setColor(client.color)
|
||||
// .setThumbnail(interaction.guild.iconURL({ dynamic: true }))
|
||||
// .addFields(
|
||||
// {
|
||||
// name: "Need help ?",
|
||||
// value: `Join our **[Support Server](https://discord.gg/SR7TeNJG67)**`,
|
||||
// inline: true,
|
||||
// },
|
||||
// {
|
||||
// name: "Support us <a:donate:896985486260846614>",
|
||||
// value: `[KoFi](https://ko-fi.com/cathteam)`,
|
||||
// inline: true,
|
||||
// }
|
||||
// )
|
||||
// .setThumbnail("../../util/assets/images/nyx_logo_transparent.webp")
|
||||
// .setTimestamp();
|
||||
// interaction.followUp({ embeds: [embed] });
|
||||
// },
|
||||
// };
|
||||
|
|
|
@ -8,10 +8,10 @@ module.exports = {
|
|||
run: async (client, interaction) => {
|
||||
const data = async () => {
|
||||
const d = await model.findOne({});
|
||||
const weapons =
|
||||
d.Primary[0][
|
||||
d.Categories[Math.floor(Math.random() * d.Categories.length)]
|
||||
];
|
||||
const types = d.Categories;
|
||||
const names = d.Primary;
|
||||
const category = types[Math.floor(Math.random() * types.length)];
|
||||
const weapons = names[0][category];
|
||||
return `${weapons[Math.floor(Math.random() * weapons.length)]}`;
|
||||
};
|
||||
const primary_weapon = await data();
|
||||
|
|
|
@ -15,7 +15,7 @@ module.exports = {
|
|||
category: "CODM",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
type: 7,
|
||||
name: "gun",
|
||||
description: "Gun name",
|
||||
required: true,
|
||||
|
@ -39,7 +39,11 @@ function dmg(inpmsg) {
|
|||
}
|
||||
currDRM = currGun.drm[0];
|
||||
currStats = currGun.stats;
|
||||
currAttachments = common.attachmentsIdentifier(inpmsg, currGun);
|
||||
currAttachments = common.attachmentsIdentifier(
|
||||
inpmsg,
|
||||
currGun.aments,
|
||||
currStats
|
||||
);
|
||||
if (typeof currAttachments == "string") {
|
||||
hasError = true;
|
||||
return currAttachments;
|
||||
|
|
6
command/CODM/effects.js
vendored
6
command/CODM/effects.js
vendored
|
@ -114,7 +114,11 @@ function attachments(inpmsg) {
|
|||
hasAttachments = common.hasAttachments(inpmsg);
|
||||
currAttachments = [];
|
||||
if (hasAttachments) {
|
||||
currAttachments = common.attachmentsIdentifier(inpmsg, currGun);
|
||||
currAttachments = common.attachmentsIdentifier(
|
||||
inpmsg,
|
||||
currGun.aments,
|
||||
currGun.stats
|
||||
);
|
||||
if (typeof currAttachments == "string") {
|
||||
hasError = true;
|
||||
return currAttachments;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const c = require("../../client/CODMClient");
|
||||
const { CODMClient } = require("cath");
|
||||
const c = new CODMClient("Gae");
|
||||
module.exports = {
|
||||
name: "perk",
|
||||
description: "Get perk stats",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const common = require("../../util/functions/common");
|
||||
const data = require("../../util/Data/data.json");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
const Discord = require("discord.js");
|
||||
|
||||
let currGun,
|
||||
currStats,
|
||||
|
@ -11,6 +11,7 @@ let currGun,
|
|||
recoilAvailable,
|
||||
chart,
|
||||
hasError;
|
||||
const errMsg = "*Generic placeholder error message*";
|
||||
module.exports = {
|
||||
name: "stats",
|
||||
description: "Check gun stats",
|
||||
|
@ -51,28 +52,23 @@ module.exports = {
|
|||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
repEmb = null;
|
||||
recoilAvailable = false;
|
||||
hasError = false;
|
||||
if (args.length == 1)
|
||||
repEmb = statsHandler(args.join(" ").replace("\n", " "));
|
||||
else repEmb = statsHandler(args.join(" + ").replace("\n", " "));
|
||||
console.log(args);
|
||||
const repEmb = statsHandler(args.join(" ").replace("\n", " "));
|
||||
if (hasError) {
|
||||
interaction.followUp({
|
||||
content: `**${repEmb || "An error has occured"}**`,
|
||||
});
|
||||
} else {
|
||||
if (recoilAvailable) {
|
||||
repEmb.fields.push({
|
||||
name: "**Recoil Graph**",
|
||||
value:
|
||||
"```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
|
||||
});
|
||||
const recoilImageLink = await chart.getShortUrl();
|
||||
repEmb.image = { url: recoilImageLink };
|
||||
}
|
||||
interaction.followUp({ embeds: [new MessageEmbed(repEmb)] });
|
||||
interaction.followUp({ embeds: [repEmb] });
|
||||
}
|
||||
if (recoilAvailable) {
|
||||
repEmb.fields.push({
|
||||
name: "**Recoil Graph**",
|
||||
value:
|
||||
"```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
|
||||
});
|
||||
const recoilImageLink = await chart.getShortUrl();
|
||||
repEmb.image = { url: recoilImageLink };
|
||||
}
|
||||
interaction.followUp({ embeds: [repEmb] });
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -82,38 +78,38 @@ function inpHandler(inpmsg) {
|
|||
|
||||
function statsHandler(inpmsg) {
|
||||
let statsNames = [
|
||||
"Pellets", //0
|
||||
"Detonation Range", //1
|
||||
"Explosion Radius", //2
|
||||
"Explosion Damage", //3
|
||||
"Firing Mode", //4
|
||||
"Rate of Fire", //5
|
||||
"Bullet in Burst", //6
|
||||
"Time Between Burst", //7
|
||||
"Bullet Speed", //8
|
||||
"Penetration Level", //9
|
||||
"Bullet Spread", //10
|
||||
"Idle Sway", //11
|
||||
"Hipfire Pellet Spread", //12
|
||||
"ADS Pellet Spread", //13
|
||||
"ADS Time", //14
|
||||
"Sprint-to-Fire Time", //15
|
||||
"ADS Zoom", //16
|
||||
"Magazine", //17
|
||||
"Reserve", //18
|
||||
"Reload Type", //19
|
||||
"Cancel Reload Time", //20
|
||||
"Reload Time", //21
|
||||
"Full Reload Time", //22
|
||||
"Drop Time", //23
|
||||
"Raise Time", //24
|
||||
"Sprinting Speed", //25
|
||||
"Walking Speed", //26
|
||||
"Straifing Speed", //27
|
||||
"Damage per Tick", //28
|
||||
"Number of Ticks", //29
|
||||
"Time Between Ticks", //30
|
||||
"Breath Hold Time", //31
|
||||
"Pellets",
|
||||
"Detonation Range",
|
||||
"Explosion Radius",
|
||||
"Explosion Damage",
|
||||
"Firing Mode",
|
||||
"Rate of Fire",
|
||||
"Bullet in Burst",
|
||||
"Time Between Burst",
|
||||
"Bullet Speed",
|
||||
"Penetration Level",
|
||||
"Bullet Spread",
|
||||
"Idle Sway",
|
||||
"Hipfire Pellet Spread",
|
||||
"ADS Pellet Spread",
|
||||
"ADS Time",
|
||||
"Sprint-to-Fire Time",
|
||||
"ADS Zoom",
|
||||
"Magazine",
|
||||
"Reserve",
|
||||
"Reload Type",
|
||||
"Cancel Reload Time",
|
||||
"Reload Time",
|
||||
"Full Reload Time",
|
||||
"Drop Time",
|
||||
"Raise Time",
|
||||
"Sprinting Speed",
|
||||
"Walking Speed",
|
||||
"Straifing Speed",
|
||||
"Damage per Tick",
|
||||
"Number of Ticks",
|
||||
"Time Between Ticks",
|
||||
"Breath Hold Time",
|
||||
"shouldNeverHappen0",
|
||||
"shouldNeverHappen1",
|
||||
"shouldNeverHappen2",
|
||||
|
@ -130,7 +126,11 @@ function statsHandler(inpmsg) {
|
|||
currStats = currGun.stats;
|
||||
currDRM = currGun.drm[0];
|
||||
currAttachments = [];
|
||||
currAttachments = common.attachmentsIdentifier(inpmsg, currGun);
|
||||
currAttachments = common.attachmentsIdentifier(
|
||||
inpmsg,
|
||||
currGun.aments,
|
||||
currStats
|
||||
);
|
||||
if (typeof currAttachments == "string") {
|
||||
hasError = true;
|
||||
return currAttachments;
|
||||
|
@ -188,8 +188,8 @@ function statsHandler(inpmsg) {
|
|||
inpIndx = inpIndx.filter(x => outReady[x]);
|
||||
return inpIndx.length
|
||||
? {
|
||||
name: `**${inpName}**`,
|
||||
value: `\`\`\`\n${inpIndx.map(x => outReady[x]).join("\n")}\`\`\``,
|
||||
name: "**" + inpName + "**",
|
||||
value: "```\n" + inpIndx.map(x => outReady[x]).join("\n") + "```",
|
||||
}
|
||||
: "";
|
||||
}
|
||||
|
@ -220,17 +220,17 @@ function statsHandler(inpmsg) {
|
|||
|
||||
function addUnit(j) {
|
||||
switch (j) {
|
||||
case 7:
|
||||
case 07:
|
||||
case 14:
|
||||
case 15:
|
||||
case 23:
|
||||
case 24:
|
||||
case 31:
|
||||
return " ms";
|
||||
case 25:
|
||||
case 26:
|
||||
case 27:
|
||||
case 28:
|
||||
case 25:
|
||||
case 26:
|
||||
return " m/s";
|
||||
case 20:
|
||||
case 21:
|
||||
|
@ -238,9 +238,9 @@ function statsHandler(inpmsg) {
|
|||
return " s";
|
||||
case 16:
|
||||
return "%";
|
||||
case 6:
|
||||
case 06:
|
||||
return " Rounds";
|
||||
case 5:
|
||||
case 05:
|
||||
return " RPM";
|
||||
default:
|
||||
return "";
|
||||
|
@ -257,11 +257,16 @@ function statsHandler(inpmsg) {
|
|||
currRecoilArr[2]
|
||||
);
|
||||
recoilAvailable = true;
|
||||
} else recoilAvailable = false;
|
||||
|
||||
if (chart == "none") recoilAvailable = false;
|
||||
if (chart == "err") hasError = true;
|
||||
|
||||
} else {
|
||||
recoilAvailable = false;
|
||||
}
|
||||
if (chart == "none") {
|
||||
recoilAvailable = false;
|
||||
}
|
||||
if (chart == "err" || currAttachments == "err") {
|
||||
hasError = true;
|
||||
return "Cocaineeee";
|
||||
}
|
||||
const dmg =
|
||||
common.damageHandler(
|
||||
currDRM.damage,
|
||||
|
@ -277,7 +282,7 @@ function statsHandler(inpmsg) {
|
|||
currGun.description
|
||||
? {
|
||||
name: "**Description:**",
|
||||
value: `\`\`\`\n${currGun.description}\`\`\``,
|
||||
value: "```\n" + currGun.description + "```",
|
||||
}
|
||||
: {},
|
||||
{ name: "**Damage Profile:**", value: dmg },
|
||||
|
@ -291,7 +296,7 @@ function statsHandler(inpmsg) {
|
|||
footer: {
|
||||
text: "[OUTDATED] All data courtesy of Project Lighthouse 2.0 and CoDM Research Crew",
|
||||
icon_url:
|
||||
"https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png",
|
||||
"https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png?width=638&height=638",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ module.exports = {
|
|||
category: "Config",
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "muterole",
|
||||
description: "Configure mute role settings for the server",
|
||||
options: [
|
||||
|
@ -21,7 +21,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "prefix",
|
||||
description: "Configure prefix settings for the server",
|
||||
options: [
|
||||
|
@ -35,7 +35,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "welcome",
|
||||
description: "Configure welcome channel settings for the server",
|
||||
options: [
|
||||
|
@ -49,7 +49,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "goodbye",
|
||||
description: "Configure goodbye channel settings for the server",
|
||||
options: [
|
||||
|
@ -63,7 +63,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "starboard",
|
||||
description: "Configure starboard channel settings for the server",
|
||||
options: [
|
||||
|
@ -83,7 +83,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "chatbot",
|
||||
description: "Configure chatbot channel settings for the server",
|
||||
options: [
|
||||
|
@ -97,7 +97,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "log",
|
||||
description: "Configure log channel settings for the server",
|
||||
options: [
|
||||
|
@ -116,7 +116,7 @@ module.exports = {
|
|||
description: "Enable commands/category for the server",
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "command",
|
||||
description: "To enable commands",
|
||||
options: [
|
||||
|
@ -129,7 +129,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "category",
|
||||
description: "To enable categories",
|
||||
options: [
|
||||
|
@ -179,7 +179,7 @@ module.exports = {
|
|||
description: "Disable commands/category for the server",
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "command",
|
||||
description: "To disable commands",
|
||||
options: [
|
||||
|
@ -192,7 +192,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "category",
|
||||
description: "To disable categories",
|
||||
options: [
|
||||
|
@ -237,7 +237,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "level",
|
||||
description: "Configure level settings for the server",
|
||||
options: [
|
||||
|
@ -250,7 +250,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "nsfw",
|
||||
description: "Configure nsfw settings for the server",
|
||||
options: [
|
||||
|
@ -263,7 +263,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "tips",
|
||||
description: "Configure tips settings for the server",
|
||||
options: [
|
||||
|
@ -276,7 +276,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "overall",
|
||||
description: "See overall settings for the server",
|
||||
options: [],
|
||||
|
|
|
@ -6,7 +6,7 @@ module.exports = {
|
|||
description: "Configure Weapon Master System settings",
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "select",
|
||||
description: "Select the gun for the game",
|
||||
options: [
|
||||
|
@ -29,13 +29,13 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "list",
|
||||
description: "See the information for the guns",
|
||||
options: [],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "info",
|
||||
description: "See the stats of your gun",
|
||||
},
|
||||
|
|
73
command/Fun/choose.js
Normal file
73
command/Fun/choose.js
Normal file
|
@ -0,0 +1,73 @@
|
|||
module.exports = {
|
||||
name: "choose",
|
||||
description: "Choose random things",
|
||||
usage: "(Choices)",
|
||||
category: "Fun",
|
||||
type: "CHAT_INPUT",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "first",
|
||||
description: "The first choice",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "second",
|
||||
description: "The second choice",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "third",
|
||||
description: "The third choice",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "forth",
|
||||
description: "The forth choice",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "fifth",
|
||||
description: "The fifth choice",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "sixth",
|
||||
description: "The sixth choice",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "seventh",
|
||||
description: "The seventh choice",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "eighth",
|
||||
description: "The eighth choice",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "ninth",
|
||||
description: "The ninth choice",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "tenth",
|
||||
description: "The tenth choice",
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
const choices = args[Math.floor(Math.random() * args.length)];
|
||||
interaction.followUp(`I will choose - \`${choices}\``);
|
||||
},
|
||||
};
|
|
@ -1,20 +1,18 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const tnd = require("../../util/Data/tnd.json");
|
||||
const dares = require("../../util/Data/dares.json");
|
||||
|
||||
module.exports = {
|
||||
name: "dare",
|
||||
description: "The maturity level of the topics the question can relate to",
|
||||
run: async (client, interaction) => {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor({
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dyamic: true }),
|
||||
})
|
||||
.setTitle(tnd.dare[Math.round(Math.random() * tnd.dare.length - 1)])
|
||||
.setAuthor(
|
||||
interaction.user.tag,
|
||||
interaction.user.displayAvatarURL({ dyamic: true })
|
||||
)
|
||||
.setTitle(dares[Math.round(Math.random() * (dares.length - 1))])
|
||||
.setColor(client.color)
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
},
|
||||
|
|
130
command/Fun/fun.js
Normal file
130
command/Fun/fun.js
Normal file
|
@ -0,0 +1,130 @@
|
|||
const { MessageEmbed, MessageAttachment } = require("discord.js");
|
||||
const { random8ball } = require("cath");
|
||||
module.exports = {
|
||||
name: "fun",
|
||||
description: "Fun commands",
|
||||
options: [
|
||||
{
|
||||
type: 1,
|
||||
name: "8ball",
|
||||
description: "8ball an answer",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "question",
|
||||
description: "The question you want to ask",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
name: "rickroll",
|
||||
description: "Rickroll?",
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
name: "emojify",
|
||||
description: "Emojify a sentence",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "text",
|
||||
description: "The text you want to convert",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
name: "pp",
|
||||
description: "Check how long is the user",
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to see",
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
if (args[0] == "8ball") {
|
||||
const data = await random8ball();
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(
|
||||
`🎱 ${interaction.user.tag} asks`,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setDescription(
|
||||
`**🎱Question:** \n${args[1]} \n**🎱Answer:** \n ${data}`
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setURL(client.web)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL());
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else if (args[0] === "rickroll") {
|
||||
const roll = [
|
||||
"Never gonna give you up",
|
||||
"Never gonna let you down",
|
||||
"Never gonna run around and desert you",
|
||||
"Never gonna make you cry",
|
||||
"Never gonna say goodbye",
|
||||
"Never gonna tell a lie and hurt you",
|
||||
];
|
||||
const rick = roll[Math.floor(Math.random() * roll.length)];
|
||||
interaction.followUp({
|
||||
content: `**${rick}**`,
|
||||
files: [
|
||||
new MessageAttachment(
|
||||
"https://i.pinimg.com/originals/88/82/bc/8882bcf327896ab79fb97e85ae63a002.gif"
|
||||
),
|
||||
],
|
||||
});
|
||||
} else if (args[0] === "emojify") {
|
||||
const mapping = {
|
||||
" ": " ",
|
||||
0: ":zero:",
|
||||
1: ":one:",
|
||||
2: ":two:",
|
||||
3: ":three:",
|
||||
4: ":four:",
|
||||
5: ":five:",
|
||||
6: ":six:",
|
||||
7: ":seven:",
|
||||
8: ":eight:",
|
||||
9: ":nine:",
|
||||
"!": ":grey_exclamation:",
|
||||
"?": ":grey_question:",
|
||||
"#": ":hash:",
|
||||
"*": ":asterisk:",
|
||||
};
|
||||
"abcdefghijklmnopqrstuvwxyz".split("").forEach(c => {
|
||||
mapping[c] = mapping[c.toUpperCase()] = ` :regional_indicator_${c}:`;
|
||||
});
|
||||
interaction.followUp(
|
||||
args[1]
|
||||
.split("")
|
||||
.map(c => mapping[c] || c)
|
||||
.join("")
|
||||
);
|
||||
} else if (args[0] === "pp") {
|
||||
const { user } =
|
||||
interaction.guild.members.cache.get(args[1]) || interaction.member;
|
||||
const embed = new MessageEmbed()
|
||||
.addField(
|
||||
`${user.username}'s peepee`,
|
||||
`8${"=".repeat(Math.floor(Math.random() * 20))}D`
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setTitle("Peepee size machine")
|
||||
.setTimestamp()
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL());
|
||||
interaction.followUp({
|
||||
embeds: [embed],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
138
command/Fun/hack.js
Normal file
138
command/Fun/hack.js
Normal file
|
@ -0,0 +1,138 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "hack",
|
||||
description: "Hack a user",
|
||||
usage: "(User)",
|
||||
category: "Fun",
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to hack",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
type: "CHAT_INPUT",
|
||||
run: async (client, interaction, args, utils) => {
|
||||
const answers = [
|
||||
"@yousuck.noob",
|
||||
"@hesnoob.haha",
|
||||
"@thisguy.suck",
|
||||
"@paypal.removed",
|
||||
"@noob.haha",
|
||||
"@hacked.xyz",
|
||||
"@susmate.com",
|
||||
"@gmail.sus",
|
||||
"@why-im.withyou",
|
||||
"@someone-end.me",
|
||||
"@isnoob.io",
|
||||
"@username-is.noob",
|
||||
"@hahaget.lost",
|
||||
"@yahoo.sus",
|
||||
"@botmail.zip",
|
||||
"@gmail.com",
|
||||
"@yahoo.com",
|
||||
];
|
||||
const passwords = [
|
||||
"Disb****",
|
||||
"disc******",
|
||||
"pass**********",
|
||||
"get****",
|
||||
"mails***",
|
||||
"endm****",
|
||||
"gamer***********",
|
||||
"asegeio*********",
|
||||
"whys*******",
|
||||
"Brot******",
|
||||
"imwith*******",
|
||||
"luckyyougotthispasswordlolnocencor",
|
||||
"starb*******",
|
||||
"egghunt2***",
|
||||
"secr*****",
|
||||
];
|
||||
const ips = [
|
||||
"10.313.523.502.00.1",
|
||||
"25.537.753.462.29.2",
|
||||
"21.175.866.974.07.08",
|
||||
"32.653.587.825.35.5",
|
||||
"12.172.764.781.22.8",
|
||||
"91.723.242.452.09.3",
|
||||
"92.743.116.896.85.6",
|
||||
"84.091.000.853.54.7",
|
||||
"51.071.124.129.12.0",
|
||||
];
|
||||
const answer = answers[Math.floor(Math.random() * answers.length)];
|
||||
const passwrd = passwords[Math.floor(Math.random() * passwords.length)];
|
||||
const ip = ips[Math.floor(Math.random() * ips.length)];
|
||||
const taggedUser = interaction.guild.members.cache.get(args[0]);
|
||||
await interaction.deleteReply();
|
||||
interaction.channel
|
||||
.send(`Hacking ${taggedUser.user.username}...`)
|
||||
.then(async msg => {
|
||||
utils.sleep(100);
|
||||
msg.edit("Status: ■□□□□□□□□□□ 0%");
|
||||
utils.sleep(100);
|
||||
msg.edit("Status: ■■□□□□□□□□□ 7%: Hacking Email...");
|
||||
utils.sleep(600);
|
||||
msg.edit(
|
||||
`Status: ■■■□□□□□□□□ 8%:\n \`Email: ${taggedUser.user.username}@yousuck.noob\`\n \`Password: ${passwrd}\` `
|
||||
);
|
||||
utils.sleep(600);
|
||||
msg.edit("Status: ■■□□□□□□□□□ 9%: Logging in to the Email...");
|
||||
utils.sleep(2000);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 12%: Turning off the antivirus");
|
||||
utils.sleep(1000);
|
||||
msg.edit("Status: ■■■■□□□□□□ 14%: Downloading SYNAPSE X");
|
||||
utils.sleep(100);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 17%: Deleting Captcha...");
|
||||
utils.sleep(100);
|
||||
msg.edit("Status: ■■□□□□□□□□□ 20%: Deleting Paypal account...");
|
||||
utils.sleep(10);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 21%");
|
||||
utils.sleep(12);
|
||||
msg.edit("Status: ■■■■□□□□□□□ 22%");
|
||||
utils.sleep(100);
|
||||
msg.edit("Status: ■■■■■□□□□□□ 24%: Paypal account deleted");
|
||||
utils.sleep(1000);
|
||||
msg.edit("Status: ■■■■□□□□□□ 29%: Hacking is almost ready...");
|
||||
utils.sleep(80);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 31%");
|
||||
utils.sleep(80);
|
||||
msg.edit("Status: ■■■■□□□□□□□ 36%");
|
||||
utils.sleep(40);
|
||||
msg.edit("Status: ■■■■■□□□□□□ 41%");
|
||||
utils.sleep(60);
|
||||
msg.edit("Status: ■■■■□□□□□□□ 47%");
|
||||
utils.sleep(50);
|
||||
msg.edit("Status: ■■■■■■□□□□□ 53%");
|
||||
utils.sleep(3000);
|
||||
msg.edit(
|
||||
`Status: ■■■■■■■□□□□ 58%: Email password changed so ${taggedUser.user.username} can not login`
|
||||
);
|
||||
utils.sleep(500);
|
||||
msg.edit("Status: ■■■■■■□□□□□ 66%");
|
||||
utils.sleep(60);
|
||||
msg.edit("Status: ■■■■■□□□□□□ 74%");
|
||||
utils.sleep(20);
|
||||
msg.edit(`Status: ■■■■■□□□□□□ 79%: IP address found: ${ip}`);
|
||||
utils.sleep(83);
|
||||
msg.edit("Status: ■■■■■■□□□□ 80%");
|
||||
utils.sleep(50);
|
||||
msg.edit("Status: ■■■■■■■□□□ 85%");
|
||||
utils.sleep(14);
|
||||
msg.edit("Status: ■■■■■■■■■□□ 93%");
|
||||
utils.sleep(70);
|
||||
msg.edit("Status: ■■■■■■■■■■□ 97%");
|
||||
utils.sleep(90);
|
||||
msg.edit("Status: ■■■■■■■■■■■ 100%");
|
||||
const embed = new MessageEmbed()
|
||||
.setDescription(`${taggedUser} has been hacked!`)
|
||||
.addField("Email", `${taggedUser.user.username}${answer}`)
|
||||
.addField("Password", `${passwrd}`)
|
||||
.addField("IP address", `${ip}`)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setColor(client.color);
|
||||
await msg.edit({ embeds: [embed] });
|
||||
});
|
||||
},
|
||||
};
|
63
command/Fun/image.js
Normal file
63
command/Fun/image.js
Normal file
|
@ -0,0 +1,63 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
module.exports = {
|
||||
name: "image",
|
||||
description: "Generate images",
|
||||
options: [
|
||||
{
|
||||
type: 1,
|
||||
name: "meme",
|
||||
description: "Get a meme from reddit",
|
||||
},
|
||||
{
|
||||
type: 1,
|
||||
name: "cat",
|
||||
description: "Get a cat from reddit",
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
if (args[0] == "meme") {
|
||||
const subreddits = ["comedyheaven", "dank", "meme", "memes"];
|
||||
const subreddit =
|
||||
subreddits[Math.floor(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(subreddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
} else if (args[0] === "cat") {
|
||||
const subreddits = ["cat", "cats"];
|
||||
const subreddit =
|
||||
subreddits[Math.floor(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(subreddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
43
command/Fun/kiss.js
Normal file
43
command/Fun/kiss.js
Normal file
|
@ -0,0 +1,43 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "kiss",
|
||||
description: "Kiss someone",
|
||||
category: "Fun",
|
||||
usage: "(User)",
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to kiss",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "words",
|
||||
description: "The words you want to say",
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
type: "CHAT_INPUT",
|
||||
run: async (client, interaction, args) => {
|
||||
const user = interaction.guild.members.cache.get(args[0]);
|
||||
words = args[1];
|
||||
if (user.id === interaction.user.id) {
|
||||
return interaction.followUp("You can't kiss yourself");
|
||||
}
|
||||
const embed = new MessageEmbed()
|
||||
.setDescription(`${interaction.user} **kisses** ${user}`)
|
||||
.setImage(
|
||||
`https://media.discordapp.net/attachments/814310468906123274/817656819416825896/image0.gif`
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL());
|
||||
if (words) {
|
||||
embed.addField("Words:", words);
|
||||
}
|
||||
await interaction
|
||||
.followUp({ embeds: [embed] })
|
||||
.then(msg => msg.react("💕"));
|
||||
},
|
||||
};
|
223
command/Fun/rps.js
Normal file
223
command/Fun/rps.js
Normal file
|
@ -0,0 +1,223 @@
|
|||
const Discord = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: "rockpaperscissors",
|
||||
description: "Play RPS with someone",
|
||||
usage: "(User)",
|
||||
category: "Fun",
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to play with",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
type: "CHAT_INPUT",
|
||||
run: async (client, interaction, args, utils) => {
|
||||
const user = interaction.guild.members.cache.get(args[0]);
|
||||
if (user.user.id == interaction.user.id) {
|
||||
return interaction.followUp("You can't play with yourself");
|
||||
}
|
||||
if (user.user.bot) return interaction.followUp("You can't play with bots");
|
||||
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setDescription(`Wait for **${user.user.username}** to accept your game`)
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL());
|
||||
|
||||
const confirm = new Discord.MessageActionRow().addComponents(
|
||||
new Discord.MessageButton()
|
||||
.setLabel("Accept")
|
||||
.setStyle("SUCCESS")
|
||||
.setCustomId("accept")
|
||||
.setEmoji("808683134786863124"),
|
||||
new Discord.MessageButton()
|
||||
.setLabel("Decline")
|
||||
.setStyle("DANGER")
|
||||
.setCustomId("decline")
|
||||
.setEmoji("808683573544353792")
|
||||
);
|
||||
await interaction
|
||||
.followUp({
|
||||
content: `<@!${user.user.id}>`,
|
||||
embeds: [embed],
|
||||
components: [confirm],
|
||||
})
|
||||
.then(async m => {
|
||||
const filter = button => button.user.id == user.user.id;
|
||||
const collector = m.createMessageComponentCollector({
|
||||
filter,
|
||||
type: "BUTTON",
|
||||
time: 60000,
|
||||
});
|
||||
collector.on("collect", button => {
|
||||
if (button.customId == "decline") {
|
||||
button.deferUpdate();
|
||||
return collector.stop("decline");
|
||||
}
|
||||
button.deferUpdate();
|
||||
const pick = new Discord.MessageEmbed()
|
||||
.setTitle(`${interaction.user.username} VS ${user.user.username}`)
|
||||
.setColor(client.color)
|
||||
.setDescription("Choose either 🪨, 📄, or ✂️")
|
||||
.setTimestamp();
|
||||
const choices = new Discord.MessageActionRow().addComponents(
|
||||
new Discord.MessageButton()
|
||||
.setCustomId("rock")
|
||||
.setStyle("SECONDARY")
|
||||
.setEmoji("🪨"),
|
||||
new Discord.MessageButton()
|
||||
.setCustomId("paper")
|
||||
.setStyle("SECONDARY")
|
||||
.setEmoji("📄"),
|
||||
new Discord.MessageButton()
|
||||
.setCustomId("scissors")
|
||||
.setStyle("SECONDARY")
|
||||
.setEmoji("✂️")
|
||||
);
|
||||
m.edit({
|
||||
embeds: [pick],
|
||||
components: [choices],
|
||||
});
|
||||
collector.stop();
|
||||
const users = new Set();
|
||||
users.add(interaction.user.id);
|
||||
users.add(user.user.id);
|
||||
let ping, pong;
|
||||
const filter = b => users.has(b.user.id);
|
||||
const collect = m.createMessageComponentCollector({
|
||||
filter,
|
||||
type: "BUTTON",
|
||||
time: 60000,
|
||||
});
|
||||
collect.on("collect", async b => {
|
||||
users.delete(b.user.id);
|
||||
if (b.user.id == user.user.id) {
|
||||
ping = b.customId;
|
||||
await b.reply({
|
||||
content: `You have choosen **${utils.format(ping)}**`,
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
if (b.user.id == interaction.user.id) {
|
||||
pong = b.customId;
|
||||
await b.reply({
|
||||
content: `You have choosen **${utils.format(pong)}**`,
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
if (users.size == 0) return collect.stop();
|
||||
});
|
||||
collect.on("end", (c, reason) => {
|
||||
if (reason == "time") {
|
||||
const timeout = new Discord.MessageEmbed()
|
||||
.setTitle("Timeout")
|
||||
.setColor("RED")
|
||||
.setDescription(
|
||||
"Game cancelled since a player didn't react in time"
|
||||
);
|
||||
m.edit({
|
||||
embeds: [timeout],
|
||||
});
|
||||
} else {
|
||||
const sit1 = ping == "rock" && pong == "scissors";
|
||||
const sit2 = ping == "scissors" && pong == "rock";
|
||||
const sit3 = ping == "scissors" && pong == "paper";
|
||||
const sit4 = ping == "paper" && pong == "scissors";
|
||||
const sit5 = ping == "paper" && pong == "rock";
|
||||
const sit6 = ping == "rock" && pong == "paper";
|
||||
if (sit1 || sit3 || sit5) {
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setTitle(`${user.user.username} wins!`)
|
||||
.setColor("GREEN")
|
||||
.setFooter(
|
||||
`Made by ${client.author}`,
|
||||
client.user.displayAvatarURL()
|
||||
)
|
||||
.addField(
|
||||
`${user.user.username} choice`,
|
||||
`${utils.format(ping)}`
|
||||
)
|
||||
.addField(
|
||||
`${interaction.user.username} choice`,
|
||||
`${utils.format(pong)}`
|
||||
)
|
||||
.setTimestamp();
|
||||
m.edit({
|
||||
embeds: [embed],
|
||||
components: [],
|
||||
});
|
||||
} else if (sit2 || sit4 || sit6) {
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setTitle(`${interaction.user.username} wins!`)
|
||||
.setColor("GREEN")
|
||||
.setFooter(
|
||||
`Made by ${client.author}`,
|
||||
client.user.displayAvatarURL()
|
||||
)
|
||||
.addField(
|
||||
`${interaction.user.username} choice`,
|
||||
`${utils.format(pong)}`
|
||||
)
|
||||
.addField(
|
||||
`${user.user.username} choice`,
|
||||
`${utils.format(ping)}`
|
||||
)
|
||||
.setTimestamp();
|
||||
m.edit({
|
||||
embeds: [embed],
|
||||
components: [],
|
||||
});
|
||||
} else {
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setTitle(`Tie!`)
|
||||
.setColor("GREY")
|
||||
.setFooter(
|
||||
`Made by ${client.author}`,
|
||||
client.user.displayAvatarURL()
|
||||
)
|
||||
.addField(
|
||||
`${interaction.user.username} choice`,
|
||||
`${utils.format(pong)}`
|
||||
)
|
||||
.addField(
|
||||
`${user.user.username} choice`,
|
||||
`${utils.format(ping)}`
|
||||
)
|
||||
.setTimestamp();
|
||||
m.edit({ embeds: [embed], components: [] });
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
collector.on("end", (collected, reason) => {
|
||||
if (reason == "time") {
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setTitle("Timeout")
|
||||
.setColor("RED")
|
||||
.setDescription(
|
||||
`**${user.user.username}** did not confirm before 60 seconds of time`
|
||||
);
|
||||
m.edit({
|
||||
embeds: [embed],
|
||||
components: [],
|
||||
});
|
||||
}
|
||||
if (reason == "decline") {
|
||||
const embed = new Discord.MessageEmbed()
|
||||
.setTitle("Declined")
|
||||
.setColor("RED")
|
||||
.setDescription(
|
||||
`**${user.user.username}** has declined your game of RPS`
|
||||
);
|
||||
m.edit({
|
||||
embeds: [embed],
|
||||
components: [],
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
|
@ -27,7 +27,7 @@ module.exports = {
|
|||
const user2 = interaction.guild.members.cache.get(args[1]).user.username;
|
||||
const loveEmbed = new MessageEmbed()
|
||||
.setColor("dd2e44")
|
||||
.setFooter({ text: `Shipped by ${interaction.user.tag}` })
|
||||
.setFooter(`Shipped by ${interaction.user.tag}`)
|
||||
.setTimestamp()
|
||||
.setTitle(`💘 | Shipping ${user1} and ${user2} | 💘`)
|
||||
.setDescription(`🔻 | ${user1} \n${ship()}\n🔺 | ${user2}`);
|
||||
|
|
|
@ -22,10 +22,7 @@ module.exports = {
|
|||
.setTitle(`${user.user.username}'s simp rate`)
|
||||
.setDescription(`${user.user.username} is a ${simp}% simp`)
|
||||
.setColor(client.color)
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp(),
|
||||
],
|
||||
});
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const tnd = require("../../util/Data/tnd.json");
|
||||
const truth = require("../../util/Data/truth.json");
|
||||
|
||||
module.exports = {
|
||||
name: "truth",
|
||||
description: "Gives a random question that has to be answered truthfully",
|
||||
run: async (client, interaction, args) => {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor({
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dyamic: true }),
|
||||
})
|
||||
.setTitle(tnd.truth[Math.round(Math.random() * tnd.truth.length - 1)])
|
||||
.setAuthor(
|
||||
interaction.user.tag,
|
||||
interaction.user.displayAvatarURL({ dyamic: true })
|
||||
)
|
||||
.setTitle(truth[Math.round(Math.random() * truth.length)])
|
||||
.setColor(client.color)
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
},
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const questions = require("../../util/Data/wyr.json");
|
||||
|
||||
module.exports = {
|
||||
name: "wyr",
|
||||
description: "Send some would-you rather questions",
|
||||
|
@ -14,15 +15,12 @@ module.exports = {
|
|||
.setDescription(
|
||||
`🇦 ${Option1} \n\n **OR** \n\n :regional_indicator_b: ${Option2}`
|
||||
)
|
||||
.setAuthor({
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dyamic: true }),
|
||||
})
|
||||
.setAuthor(
|
||||
interaction.user.tag,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
wyrmessage = await interaction.followUp({ embeds: [embed] });
|
||||
wyrmessage.react("🇦");
|
||||
|
|
144
command/Giveaway/giveaway.js
Normal file
144
command/Giveaway/giveaway.js
Normal file
|
@ -0,0 +1,144 @@
|
|||
const GiveawaysClient = require("../../client/GiveawaysClient");
|
||||
module.exports = {
|
||||
name: "giveaway",
|
||||
description: "Giveaway",
|
||||
UserPerms: ["MANAGE_MESSAGES"],
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
name: "start",
|
||||
description: "Start a giveaway",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "prize",
|
||||
description: "The prize of the giveaway",
|
||||
required: true,
|
||||
choices: [],
|
||||
},
|
||||
{
|
||||
type: 4,
|
||||
name: "winners",
|
||||
description: "The amount of winners of the giveaway",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "time",
|
||||
description: "The amount of time of the giveaway",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 7,
|
||||
name: "channel",
|
||||
description: "The channel of the giveaway",
|
||||
required: true,
|
||||
channelTypes: ["GUILD_TEXT"],
|
||||
},
|
||||
{
|
||||
type: 8,
|
||||
name: "role1",
|
||||
description: "The required role to join the giveaway",
|
||||
},
|
||||
{
|
||||
type: 8,
|
||||
name: "role2",
|
||||
description: "The required role to join the giveaway",
|
||||
},
|
||||
{
|
||||
type: 8,
|
||||
name: "role3",
|
||||
description: "The required role to join the giveaway",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
name: "reroll",
|
||||
description: "Reroll a giveaway",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "message",
|
||||
description: "The message ID of the giveaway",
|
||||
required: true,
|
||||
choices: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
name: "end",
|
||||
description: "End a giveaway",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "message",
|
||||
description: "The message ID of the giveaway",
|
||||
required: true,
|
||||
choices: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args, utils) => {
|
||||
if (args[0] == "start") {
|
||||
const [, prize, winners, time, channel, roles1, roles2, roles3] = args;
|
||||
if (!utils.ms(time)) {
|
||||
interaction.followUp({
|
||||
content: "Time must be a valid time to parse (Example: 10m, 100s)",
|
||||
});
|
||||
}
|
||||
await GiveawaysClient.create(client, {
|
||||
prize,
|
||||
host: interaction.user.id,
|
||||
winners,
|
||||
endAfter: time,
|
||||
requirements: roles1
|
||||
? {
|
||||
Enabled: true,
|
||||
Roles: [roles1],
|
||||
}
|
||||
: roles2 && roles1
|
||||
? {
|
||||
Enabled: true,
|
||||
Roles: [roles1, roles2],
|
||||
}
|
||||
: roles1 && roles2 && roles3
|
||||
? {
|
||||
Enabled: true,
|
||||
Roles: [roles1, roles2, roles3],
|
||||
}
|
||||
: { Enabled: false },
|
||||
Channel: channel,
|
||||
});
|
||||
interaction.followUp({
|
||||
content: `Giveaway is started in ${interaction.guild.channels.cache.get(
|
||||
channel
|
||||
)}`,
|
||||
});
|
||||
} else if (args[0] == "reroll") {
|
||||
const giveaway = await GiveawaysClient.getByMessage(args[1]);
|
||||
const m = await client.guilds.cache
|
||||
.get(giveaway.Guild)
|
||||
.channels.cache.get(giveaway.Channel)
|
||||
.messages.fetch(args[1]);
|
||||
if (!m) {
|
||||
interaction.followUp({ content: "Unable to find the giveaway ⚠" });
|
||||
} else {
|
||||
await GiveawaysClient.end(m, giveaway, m);
|
||||
}
|
||||
} else {
|
||||
const giveaway = await GiveawaysClient.getByMessage(args[1]);
|
||||
const m = await client.guilds.cache
|
||||
.get(giveaway.Guild)
|
||||
.channels.cache.get(giveaway.Channel)
|
||||
.messages.fetch(args[1]);
|
||||
if (!m) {
|
||||
interaction.followUp({ content: "Unable to find the giveaway ⚠" });
|
||||
} else {
|
||||
await GiveawaysClient.end(m, giveaway, m);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
|
@ -17,10 +17,10 @@ module.exports = {
|
|||
const member =
|
||||
interaction.guild.members.cache.get(args[0]) || interaction.member;
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor({
|
||||
name: member.user.tag,
|
||||
iconURL: member.user.displayAvatarURL({ dynamic: true, size: 1024 }),
|
||||
})
|
||||
.setAuthor(
|
||||
member.user.tag,
|
||||
member.user.displayAvatarURL({ dynamic: true, size: 1024 })
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setTitle(`${member.user.username}'s Avatar`)
|
||||
.setDescription(
|
||||
|
@ -41,10 +41,7 @@ module.exports = {
|
|||
.setImage(
|
||||
member.user.avatarURL({ size: 2048, dynamic: true, format: "png" })
|
||||
)
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setURL(client.web)
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
|
|
52
command/Information/banner.js
Normal file
52
command/Information/banner.js
Normal file
|
@ -0,0 +1,52 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "banner",
|
||||
description: "Show user's banner",
|
||||
type: "CHAT_INPUT",
|
||||
usage: "{User}",
|
||||
category: "Information",
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to see",
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
const { user } =
|
||||
interaction.guild.members.cache.get(args[0]) || interaction.member;
|
||||
const data = await user.fetch();
|
||||
if (data?.banner) {
|
||||
const extension = data.banner.startsWith("a_") ? ".gif" : ".png";
|
||||
const url = `https://cdn.discordapp.com/banners/${user.id}/${data.banner}${extension}?size=2048`;
|
||||
|
||||
const embed = new MessageEmbed()
|
||||
.setDescription(`[Link to Banner](${url})`)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp()
|
||||
.setTitle(`${user.tag}'s Banner`)
|
||||
.setImage(url)
|
||||
.setColor(data?.hexAccentColor || client.color);
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else if (data?.hexAccentColor) {
|
||||
const embed = new MessageEmbed()
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp()
|
||||
.setDescription(
|
||||
`**${user.tag}** does not have a banner but they have an accent color`
|
||||
)
|
||||
.setColor(data?.hexAccentColor);
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else {
|
||||
const embed = new MessageEmbed()
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp()
|
||||
.setDescription(
|
||||
`Seems like **${user.username}** doesn't have a banner or an accent color.`
|
||||
)
|
||||
.setColor(client.color);
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,12 +1,14 @@
|
|||
const { MessageEmbed, version: djsversion } = require("discord.js");
|
||||
const version = require("../../package.json").version;
|
||||
const { utc } = require("moment");
|
||||
const os = require("os");
|
||||
module.exports = {
|
||||
name: "botinfo",
|
||||
description: "Check the info of the bot",
|
||||
category: "Information",
|
||||
type: "CHAT_INPUT",
|
||||
run: async (client, interaction) => {
|
||||
run: async (client, interaction, args, utils) => {
|
||||
const core = os.cpus()[0];
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`NYX - CODM Gunsmith Bot`)
|
||||
.setURL(
|
||||
|
@ -36,28 +38,39 @@ module.exports = {
|
|||
.reduce((a, b) => a + b.memberCount, 0)
|
||||
.toLocaleString()}
|
||||
Channels ❯ \`${client.channels.cache.size.toLocaleString()}\`
|
||||
Commands ❯ \`${client.slashCommands.size}\`
|
||||
Commands ❯ \`${client.commands.size}\`
|
||||
`,
|
||||
inline: true,
|
||||
}
|
||||
)
|
||||
.addFields({
|
||||
name: `Platform`,
|
||||
value: `
|
||||
.addFields(
|
||||
{
|
||||
name: `Platform`,
|
||||
value: `
|
||||
NYX ❯ \`v${version}\`
|
||||
Discord.js ❯ \`v${djsversion}\`
|
||||
Node.js ❯ \`${process.version}\``,
|
||||
})
|
||||
},
|
||||
{
|
||||
name: `Hardware`,
|
||||
value: `
|
||||
Uptime:** ${utils.timer(os.uptime() * 1000, { long: true })}
|
||||
Platform:** ${process.platform}
|
||||
CPU:**
|
||||
\u3000 Cores: ${os.cpus().length}
|
||||
\u3000 Model: ${core.model}
|
||||
\u3000 Speed: ${core.speed}MHz
|
||||
**`,
|
||||
inline: true,
|
||||
}
|
||||
)
|
||||
.addFields({
|
||||
name: `**${client.author}**`,
|
||||
value: `**Development Management**\n\u3000Ń1ght#0001\n\u3000Cat drinking a cat#0795\n\u3000mightyful#6536\n\u3000Thunder#2128\n\u3000mobo#9277\n
|
||||
**Research & Documentation**\n\u3000𝔔𝓻𝔦ค𝔁𝔖ค𝔦ӄø#0690\n\u3000Thunder#2128\n
|
||||
**Website**\n\u3000Chunchunmaru#8570`,
|
||||
})
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
},
|
||||
|
|
|
@ -80,10 +80,10 @@ module.exports = {
|
|||
.setThumbnail(
|
||||
"https://media.discordapp.net/attachments/896078559293104128/896392631565828146/nyx_logo_transparent.webp"
|
||||
)
|
||||
.setFooter({
|
||||
text: `Requested by ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
});
|
||||
.setFooter(
|
||||
`Requested by ${interaction.user.tag}`,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
);
|
||||
const components = state => [
|
||||
new Discord.MessageActionRow().addComponents(
|
||||
new Discord.MessageSelectMenu()
|
||||
|
@ -122,9 +122,7 @@ module.exports = {
|
|||
)
|
||||
.setTimestamp()
|
||||
.setColor(client.color)
|
||||
.setFooter({
|
||||
text: `Please use /help (Command Name) for more details`,
|
||||
})
|
||||
.setFooter(`Please use /help (Command Name) for more details`)
|
||||
.setDescription(
|
||||
category.commands
|
||||
.map(cmd => {
|
||||
|
@ -170,26 +168,28 @@ module.exports = {
|
|||
"**Command**:",
|
||||
command.name ? `\`${command.name}\`` : "N/A"
|
||||
);
|
||||
if (command.usage)
|
||||
if (command.usage) {
|
||||
embed.addField("**Usage**:", `\`/${command.name} ${command.usage}\``);
|
||||
else embed.addField("**Usage**:", `\`/${command.name}\``);
|
||||
|
||||
if (command.description)
|
||||
} else {
|
||||
embed.addField("**Usage**:", `\`/${command.name}\``);
|
||||
}
|
||||
if (command.description) {
|
||||
embed.addField("**Description**:", command.description);
|
||||
|
||||
if (command.timeout)
|
||||
}
|
||||
if (command.timeout) {
|
||||
embed.addField("**Cooldown**:", utils.timer(command.timeout));
|
||||
|
||||
if (command.UserPerms)
|
||||
}
|
||||
if (command.UserPerms) {
|
||||
embed.addField("**Required User Permission**:", UserPerms);
|
||||
|
||||
if (command.BotPerms)
|
||||
}
|
||||
if (command.BotPerms) {
|
||||
embed.addField("**Required Bot Permission**:", BotPerms);
|
||||
}
|
||||
embed
|
||||
.setFooter({
|
||||
text: `Requested by ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
})
|
||||
.setFooter(
|
||||
`Requested by ${interaction.user.tag}`,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setTimestamp()
|
||||
.setURL(client.web)
|
||||
.setColor(client.color);
|
||||
|
|
185
command/Information/serverinfo.js
Normal file
185
command/Information/serverinfo.js
Normal file
|
@ -0,0 +1,185 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const moment = require("moment");
|
||||
const filterLevels = {
|
||||
DISABLED: "Off",
|
||||
MEMBERS_WITHOUT_ROLES: "No Role",
|
||||
ALL_MEMBERS: "Everyone",
|
||||
};
|
||||
|
||||
const verificationLevels = {
|
||||
NONE: "None",
|
||||
LOW: "Low",
|
||||
MEDIUM: "Medium",
|
||||
HIGH: "High",
|
||||
VERY_HIGH: "Very High",
|
||||
};
|
||||
|
||||
const regions = {
|
||||
brazil: "Brazil",
|
||||
europe: "Europe",
|
||||
hongkong: "Hong Kong",
|
||||
india: "India",
|
||||
japan: "Japan",
|
||||
russia: "Russia",
|
||||
singapore: "Singapore",
|
||||
southafrica: "South Africa",
|
||||
sydeny: "Sydeny",
|
||||
"us-central": "US Central",
|
||||
"us-east": "US East",
|
||||
"us-west": "US West",
|
||||
"us-south": "US South",
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
name: "serverinfo",
|
||||
description: "Check the info of the server",
|
||||
category: "Information",
|
||||
type: "CHAT_INPUT",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "server",
|
||||
description: "The server you want to see (Paste Server ID)",
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args, utils) => {
|
||||
try {
|
||||
const g = client.guilds.cache.get(args[0]) || interaction.guild;
|
||||
const vanityCode = g.vanityURLCode;
|
||||
let vanityInvite = `https://discord.gg/${vanityCode}`;
|
||||
if (vanityCode === null) vanityInvite = "No custom URL";
|
||||
const members = g.members.cache;
|
||||
const roles = g.roles.cache
|
||||
.sort((a, b) => b.position - a.position)
|
||||
.map(role => role.toString());
|
||||
const owner = await g.fetchOwner();
|
||||
const voiceChannel = g.channels.cache.filter(
|
||||
ch => ch.type === "GUILD_VOICE"
|
||||
).size;
|
||||
const textChannel = g.channels.cache.filter(
|
||||
ch => ch.type === "GUILD_TEXT"
|
||||
).size;
|
||||
const categoryChannel = g.channels.cache.filter(
|
||||
ch => ch.type === "GUILD_CATEGORY"
|
||||
).size;
|
||||
const embed = new MessageEmbed()
|
||||
.setTimestamp()
|
||||
.setTitle("**Server Information**")
|
||||
.setAuthor(`${g.name}`, g.iconURL({ dynamic: true }))
|
||||
.setColor(client.color)
|
||||
.setDescription(g.description || "No Description")
|
||||
.setThumbnail(g.iconURL({ dynamic: true, size: 1024 }))
|
||||
.addFields(
|
||||
{
|
||||
name: `<:nyx_owner:897418259433943120> Owner Info`,
|
||||
value: `
|
||||
**Owner ❯** ${owner}
|
||||
🆔 **Owner ID ❯** \`${owner.id}\`
|
||||
`,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: `Misc Info`,
|
||||
value: `
|
||||
**🆔 Server ID ❯** \`${g.id}\`
|
||||
**🌐 Region ❯** ${regions[g.regions]}
|
||||
**🔗 Vanity Link ❯** [${vanityCode}](${vanityInvite})
|
||||
`,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: `<a:nyx_last_update:897381474330873887> Creation Date`,
|
||||
value: `
|
||||
${moment(g.createdTimestamp).format("LL")} ${moment(
|
||||
g.createdTimestamp
|
||||
).format("LTS")} (${moment(g.createdTimestamp).fromNow()})`,
|
||||
inline: true,
|
||||
},
|
||||
// Row 2
|
||||
{
|
||||
name: `<:4chanluv:836623612689121320> Emojies ${g.emojis.cache}`,
|
||||
value: `
|
||||
**Static ❯** ${g.emojis.cache.size.toString()}
|
||||
**Animated ❯** ${g.emojis.cache
|
||||
.filter(emoji => emoji.animated)
|
||||
.size.toString()}`,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: `Member Statistics`,
|
||||
value: `
|
||||
👥 **Total❯** ${g.memberCount.toString()}
|
||||
🚶 **Users❯** ${members
|
||||
.filter(member => !member.user.bot)
|
||||
.size.toString()}
|
||||
🤖 **Bots❯** ${members
|
||||
.filter(member => member.user.bot)
|
||||
.size.toString()}`,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: `Channel Info`,
|
||||
value: `
|
||||
📁 **Categories ❯** ${categoryChannel}
|
||||
#️⃣ **Text❯** ${textChannel}
|
||||
🔊 **Voice❯** ${voiceChannel}`,
|
||||
inline: true,
|
||||
},
|
||||
// Row 3
|
||||
{
|
||||
name: `Server Specification`,
|
||||
value: `
|
||||
**<:partner:840231939944480829> Partnered ❯** ${
|
||||
g.partnered
|
||||
? "<a:nyx_checkmark:897240322411724841>"
|
||||
: "<a:nyx_cross:897244999211696198>"
|
||||
}
|
||||
**<:verifiedserver:897410018234728449> Verified ❯** ${
|
||||
g.verified
|
||||
? "<a:nyx_checkmark:897240322411724841>"
|
||||
: "<a:nyx_cross:897244999211696198>"
|
||||
}
|
||||
**🚥 Verification Level ❯** ${verificationLevels[g.verificationLevel]}
|
||||
**💢 Explicit Filter ❯** ${filterLevels[g.explicitContentFilter]}
|
||||
**Tier ❯** ${
|
||||
g.premiumTier == "TIER_3"
|
||||
? "3 <:nyx_tier3:897406181511946261>"
|
||||
: g.premiumTier == "TIER_2"
|
||||
? "2 <:nyx_tier2:897406181541281792>"
|
||||
: g.premiumTier == "TIER_1"
|
||||
? "1 <:nyx_tier1:897406181558067210>"
|
||||
: "0"
|
||||
}
|
||||
**Count ❯** ${g.premiumSubscriptionCount || "0"}`,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: `<a:nyx_community:897419330478825512> Community Features`,
|
||||
value: `${
|
||||
utils.fixFeatures(g.features) || "No Community Features"
|
||||
}`,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: `👔 Role Info [${roles.length}]`,
|
||||
value: `${
|
||||
roles.length < 10
|
||||
? roles.join(" **|** ")
|
||||
: roles.length > 10
|
||||
? `${roles.slice(0, 10).join(" **|** ")}\n+${
|
||||
roles.length - 10
|
||||
} roles...`
|
||||
: "None"
|
||||
}`,
|
||||
inline: true,
|
||||
}
|
||||
)
|
||||
.setURL(vanityCode ? vanityInvite : "https://cath.gq/")
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL());
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -3,7 +3,7 @@ module.exports = {
|
|||
name: "kick",
|
||||
description: "Kick an user",
|
||||
UserPerms: ["KICK_MEMBERS"],
|
||||
BotPerms: ["KICK_MEMBERS"],
|
||||
BotPems: ["KICK_MEMBERS"],
|
||||
usage: "(User) {Reason}",
|
||||
category: "Moderation",
|
||||
options: [
|
||||
|
|
|
@ -8,7 +8,7 @@ module.exports = {
|
|||
category: "Moderation",
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "add",
|
||||
description: "Warn a user",
|
||||
options: [
|
||||
|
@ -27,7 +27,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "list",
|
||||
description: "Show a list of warnings of an user",
|
||||
options: [
|
||||
|
@ -40,7 +40,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "remove",
|
||||
description: "Remove a latest warn for an user",
|
||||
options: [
|
||||
|
@ -59,7 +59,7 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "clear",
|
||||
description: "Clear an user's warns",
|
||||
options: [
|
||||
|
|
|
@ -4,13 +4,13 @@ module.exports = {
|
|||
category: "Music",
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "track",
|
||||
description: "Loop the track",
|
||||
options: [],
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
type: 1,
|
||||
name: "queue",
|
||||
description: "Loop the whole queue",
|
||||
options: [],
|
||||
|
|
40
command/NSFW/ass.js
Normal file
40
command/NSFW/ass.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
module.exports = {
|
||||
name: "ass",
|
||||
description: "Get some ass images",
|
||||
run: async (client, interaction) => {
|
||||
if (!interaction.channel.nsfw) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`AYO Calm Yo Cheeks`)
|
||||
.setDescription("This command only works in NSFW Channels!")
|
||||
.setImage(
|
||||
"https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else {
|
||||
const subreddits = ["ass", "BestBooties", "BootyGIFs", "booty_queens"];
|
||||
const reddit = subreddits[Math.round(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(reddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
48
command/NSFW/blowjob.js
Normal file
48
command/NSFW/blowjob.js
Normal file
|
@ -0,0 +1,48 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
module.exports = {
|
||||
name: "blowjob",
|
||||
description: "Get some blowjob images",
|
||||
run: async (client, interaction) => {
|
||||
if (!interaction.channel.nsfw) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`AYO Calm Yo Cheeks`)
|
||||
.setDescription("This command only works in NSFW Channels!")
|
||||
.setImage(
|
||||
"https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else {
|
||||
const subreddits = [
|
||||
"BlowJob",
|
||||
"blowjobs",
|
||||
"blowjobgifs",
|
||||
"OralSex",
|
||||
"PushHerHead",
|
||||
"ThroatFuck",
|
||||
];
|
||||
const reddit = subreddits[Math.round(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(reddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
40
command/NSFW/boobs.js
Normal file
40
command/NSFW/boobs.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
module.exports = {
|
||||
name: "boobs",
|
||||
description: "Get some boobie images",
|
||||
run: async (client, interaction) => {
|
||||
if (!interaction.channel.nsfw) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`AYO Calm Yo Cheeks`)
|
||||
.setDescription("This command only works in NSFW Channels!")
|
||||
.setImage(
|
||||
"https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else {
|
||||
const subreddits = ["boobs", "GrabHerTitties", "titfuck"];
|
||||
const reddit = subreddits[Math.round(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(reddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
40
command/NSFW/hentai.js
Normal file
40
command/NSFW/hentai.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
module.exports = {
|
||||
name: "hentai",
|
||||
description: "Get some hentai images",
|
||||
run: async (client, interaction) => {
|
||||
if (!interaction.channel.nsfw) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`AYO Calm Yo Cheeks`)
|
||||
.setDescription("This command only works in NSFW Channels!")
|
||||
.setImage(
|
||||
"https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else {
|
||||
const subreddits = ["hentai", "HentaiAnime", "nekogirls"];
|
||||
const reddit = subreddits[Math.round(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(reddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
40
command/NSFW/milf.js
Normal file
40
command/NSFW/milf.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
module.exports = {
|
||||
name: "milf",
|
||||
description: "Get some milf images",
|
||||
run: async (client, interaction) => {
|
||||
if (!interaction.channel.nsfw) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`AYO Calm Yo Cheeks`)
|
||||
.setDescription("This command only works in NSFW Channels!")
|
||||
.setImage(
|
||||
"https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
} else {
|
||||
const subreddits = ["milf", "OnlyHotMilfs", "realmoms"];
|
||||
const reddit = subreddits[Math.round(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(reddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
42
command/NSFW/pussy.js
Normal file
42
command/NSFW/pussy.js
Normal file
|
@ -0,0 +1,42 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
|
||||
module.exports = {
|
||||
name: "pussy",
|
||||
description: "Get some vagina images",
|
||||
run: async (client, interaction) => {
|
||||
if (!interaction.channel.nsfw) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`AYO Calm Yo Cheeks`)
|
||||
.setDescription("This command only works in NSFW Channels!")
|
||||
.setImage(
|
||||
"https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
return;
|
||||
} else {
|
||||
const subreddits = ["vagina", "GodPussy", "peachlips"];
|
||||
const reddit = subreddits[Math.round(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(reddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
42
command/NSFW/thighs.js
Normal file
42
command/NSFW/thighs.js
Normal file
|
@ -0,0 +1,42 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
const { getreddit } = require("cath");
|
||||
module.exports = {
|
||||
name: "thighs",
|
||||
description: "Get some thighs images",
|
||||
run: async (client, interaction) => {
|
||||
if (!interaction.channel.nsfw) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`AYO Calm Yo Cheeks`)
|
||||
.setDescription("This command only works in NSFW Channels!")
|
||||
.setImage(
|
||||
"https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
return;
|
||||
} else {
|
||||
const subreddits = ["thighs", "PerfectThighs", "thickthighs"];
|
||||
const reddit = subreddits[Math.round(Math.random() * subreddits.length)];
|
||||
const data = await getreddit(reddit);
|
||||
interaction.followUp({
|
||||
embeds: [
|
||||
new MessageEmbed({
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
image: { url: data.image },
|
||||
timestamp: Date.now(),
|
||||
footer: { text: data.footer },
|
||||
color: client.color,
|
||||
author: {
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
},
|
||||
}),
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,68 +1,31 @@
|
|||
module.exports = {
|
||||
name: "economy",
|
||||
name: "add",
|
||||
category: "Owner",
|
||||
description: "Add/Remove coins from someone",
|
||||
usage: "(Number)",
|
||||
description: "Add coins from someone",
|
||||
Owner: true,
|
||||
options: [
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
name: "add",
|
||||
description: "Remove coins from someone",
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to add",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 4,
|
||||
name: "cp",
|
||||
description: "The amount of CP you want to add",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to add",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: "SUB_COMMAND",
|
||||
name: "rmv",
|
||||
description: "Remove coins from someone",
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to remove",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 4,
|
||||
name: "cp",
|
||||
description: "The amount of CP you want to remove",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
type: 4,
|
||||
name: "cp",
|
||||
description: "The amount of CP you want to add",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
if (args[0] === "add") {
|
||||
await client.add(args[0], args[1], interaction);
|
||||
interaction.followUp({
|
||||
content: `<a:nyx_checkmark:897240322411724841> Successfully added **${interaction.options.getInteger(
|
||||
"cp"
|
||||
)}** ${client.currency} in **${
|
||||
interaction.options.getUser("user").username
|
||||
}**'s balance`,
|
||||
});
|
||||
}
|
||||
if (args[0] === "rmv") {
|
||||
await client.rmv(args[0], args[1]);
|
||||
interaction.followUp({
|
||||
content: `<a:nyx_checkmark:897240322411724841> Successfully removed **${interaction.options.getInteger(
|
||||
"cp"
|
||||
)}** ${client.currency} from **${
|
||||
interaction.options.getUser("user").username
|
||||
}**'s balance`,
|
||||
});
|
||||
}
|
||||
await client.add(args[0], args[1], interaction);
|
||||
interaction.followUp({
|
||||
content: `<a:nyx_checkmark:897240322411724841> Successfully added **${interaction.options.getInteger(
|
||||
"cp"
|
||||
)}** ${client.currency} in **${
|
||||
interaction.options.getUser("user").username
|
||||
}**'s balance`,
|
||||
});
|
||||
},
|
||||
};
|
||||
|
|
|
@ -2,7 +2,7 @@ module.exports = {
|
|||
name: "blacklist",
|
||||
category: "Owner",
|
||||
usage: "(User) (Toggle) (Reason)",
|
||||
description: "Manage Blacklisted Users",
|
||||
description: "Blacklist someone from the bot",
|
||||
Owner: true,
|
||||
options: [
|
||||
{
|
||||
|
@ -13,8 +13,8 @@ module.exports = {
|
|||
},
|
||||
{
|
||||
type: 5,
|
||||
name: "blacklist",
|
||||
description: "Whether to blacklist or whitelist",
|
||||
name: "yesno",
|
||||
description: "Whether blacklist or whitelist",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
|
@ -26,34 +26,18 @@ module.exports = {
|
|||
],
|
||||
run: async (client, interaction) => {
|
||||
const user = interaction.options.getUser("user");
|
||||
const toggle = interaction.options.getBoolean("blacklist");
|
||||
const toggle = interaction.options.getBoolean("yesno");
|
||||
const reason = interaction.options.getString("reason");
|
||||
if (toggle === true) {
|
||||
await client.data.BK(user.id, toggle, reason);
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(
|
||||
"<a:nyx_checkmark:897240322411724841> Successfully Blacklisted"
|
||||
)
|
||||
.setDescription(
|
||||
`**User:** ${user.user.tag} \`(${user.id})\`\n**Reason:** ${reason} \n**Blacklisted by:** ${interaction.member}`
|
||||
)
|
||||
.setURL(client.web)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
interaction.followUp({
|
||||
content: `**Blacklisted** ${user.username}.\n**Reason: **${reason}`,
|
||||
});
|
||||
} else {
|
||||
await client.data.BK(user.id, toggle, reason);
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle("<a:nyx_checkmark:897240322411724841> Removed From Blacklist")
|
||||
.setDescription(
|
||||
`**User:** ${user.user.tag} \`(${user.id})\`\n**Reason:** ${reason} \n**Whitelisted by:** ${interaction.member}`
|
||||
)
|
||||
.setURL(client.web)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
interaction.followUp({
|
||||
content: `Removed blacklist from ${user.username}`,
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -47,22 +47,19 @@ module.exports = {
|
|||
evaled = err;
|
||||
}
|
||||
if (typeof evaled !== "string") evaled = require("util").inspect(evaled);
|
||||
console.log(evaled);
|
||||
evaled = chunk([evaled], 750);
|
||||
console.log(evaled);
|
||||
evaled = utils.chunk(evaled, 750);
|
||||
let reactions = ["❌", "⏪", "◀️", "⏹️", "▶️", "⏩"],
|
||||
page = 0,
|
||||
evaledEmbed = new Discord.MessageEmbed()
|
||||
.setColor(client.color)
|
||||
.setDescription(`\`\`\`js\n${evaled[0]}\n\`\`\``)
|
||||
.setTimestamp()
|
||||
.setAuthor({
|
||||
name: `Evaled by ${interaction.user.tag}`,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
});
|
||||
const mainMessage = await interaction.channel.send({
|
||||
embeds: [evaledEmbed],
|
||||
});
|
||||
.setAuthor(
|
||||
`Evaled by ${interaction.user.tag}`,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.addField(`Type of`, `\`\`\`js\n${typeof evaled[0]}\n\`\`\``);
|
||||
const mainMessage = await interaction.channel.send({ embeds: [evaledEmbed] });
|
||||
Discord.TextChannel.prototype.send = oldSend;
|
||||
await Promise.all(
|
||||
(evaled.length === 1 ? ["❌", "⏹️"] : reactions).map(r =>
|
||||
|
@ -115,17 +112,12 @@ module.exports = {
|
|||
}
|
||||
evaledEmbed = new Discord.MessageEmbed()
|
||||
.setColor(interaction.guild.me.displayColor)
|
||||
.setDescription(`\`\`\`js\n${evaled[page]}\n\`\`\``);
|
||||
.setDescription(`\`\`\`js\n${evaled[page]}\n\`\`\``)
|
||||
.addField(`Type of`, `\`\`\`js\n${typeof evaled[page]}\n\`\`\``);
|
||||
|
||||
await mainMessage.edit({
|
||||
embeds: [evaledEmbed],
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
function chunk(arr, size) {
|
||||
let c;
|
||||
Array.from({ length: Math.ceil(arr.length / size) }, (v, i) => {
|
||||
c = arr.slice(i * size, i * size + size);
|
||||
});
|
||||
return c;
|
||||
}
|
||||
|
|
|
@ -19,18 +19,6 @@ module.exports = {
|
|||
.setTitle("Guilds")
|
||||
.setDescription(description)
|
||||
.setColor(client.color)
|
||||
.addFields(
|
||||
{
|
||||
name: `Total Guilds`,
|
||||
value: client.guilds.cache.size,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: `Total Members`,
|
||||
value: client.users.cache.size,
|
||||
inline: true,
|
||||
}
|
||||
)
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setTimestamp();
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
|
|
31
command/Owner/rmv.js
Normal file
31
command/Owner/rmv.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
module.exports = {
|
||||
name: "rmv",
|
||||
category: "Owner",
|
||||
usage: "(Number)",
|
||||
description: "Remove coins from someone",
|
||||
Owner: true,
|
||||
options: [
|
||||
{
|
||||
type: 6,
|
||||
name: "user",
|
||||
description: "The user you want to remove",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 4,
|
||||
name: "cp",
|
||||
description: "The amount of CP you want to remove",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
await client.rmv(args[0], args[1]);
|
||||
interaction.followUp({
|
||||
content: `<a:nyx_checkmark:897240322411724841> Successfully removed **${interaction.options.getInteger(
|
||||
"cp"
|
||||
)}** ${client.currency} from **${
|
||||
interaction.options.getUser("user").username
|
||||
}**'s balance`,
|
||||
});
|
||||
},
|
||||
};
|
|
@ -23,15 +23,12 @@ module.exports = {
|
|||
`${interaction.user.username} is set into AFK.\nStatus : ${content}`
|
||||
)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
})
|
||||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setColor(client.color)
|
||||
.setAuthor({
|
||||
text: interaction.user.username,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
})
|
||||
.setAuthor(
|
||||
interaction.user.username,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setURL(client.web);
|
||||
interaction.followUp({ embeds: [embed] });
|
||||
},
|
||||
|
|
17
command/Utilities/codebin.js
Normal file
17
command/Utilities/codebin.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
const CodeClient = require("../../client/CodeClient");
|
||||
module.exports = {
|
||||
name: "Create Code Bin",
|
||||
type: "MESSAGE",
|
||||
run: async (client, interaction) => {
|
||||
const msg = await interaction.channel.messages.fetch(interaction.targetId);
|
||||
if (!msg.content) {
|
||||
interaction.followUp({ content: "The message must have a content" });
|
||||
} else {
|
||||
const title = "Code";
|
||||
const description = msg.author.tag;
|
||||
const code = msg.content;
|
||||
const link = await CodeClient.createBin(title, description, code);
|
||||
interaction.followUp({ content: link });
|
||||
}
|
||||
},
|
||||
};
|
27
command/Utilities/docs.js
Normal file
27
command/Utilities/docs.js
Normal file
|
@ -0,0 +1,27 @@
|
|||
const axios = require("axios");
|
||||
module.exports = {
|
||||
name: "docs",
|
||||
usage: "(Query)",
|
||||
description: "Search the discord.js docs for something!",
|
||||
type: "CHAT_INPUT",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "query",
|
||||
description: "The query you want to search",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
const query = args.join(" ");
|
||||
await axios
|
||||
.get(
|
||||
`https://djsdocs.sorta.moe/v2/embed?src=stable&q=${encodeURIComponent(
|
||||
query
|
||||
)}`
|
||||
)
|
||||
.then(async data => {
|
||||
interaction.followUp({ embeds: [data.data] });
|
||||
});
|
||||
},
|
||||
};
|
|
@ -10,10 +10,10 @@ module.exports = {
|
|||
.setFooter(`Made by ${client.author}`, client.user.displayAvatarURL())
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setAuthor({
|
||||
text: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
})
|
||||
.setAuthor(
|
||||
interaction.user.tag,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setTitle(`Support/Invite`)
|
||||
.setThumbnail(
|
||||
"https://github.com/night0721/cath.js/blob/master/util/assets/images/nyx_logo_transparent.webp"
|
||||
|
|
35
command/Utilities/shorturl.js
Normal file
35
command/Utilities/shorturl.js
Normal file
|
@ -0,0 +1,35 @@
|
|||
const URLClient = require("../../client/URLClient");
|
||||
module.exports = {
|
||||
name: "shorten-url",
|
||||
description: "Shorten a URL",
|
||||
options: [
|
||||
{
|
||||
type: 3,
|
||||
name: "short-name",
|
||||
description:
|
||||
"The short name that for the shorten-url (For example, https://url.cath.gq/youtube)",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 3,
|
||||
name: "link",
|
||||
description:
|
||||
"The link for the shorten-url (For example, https://youtube.com)",
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
run: async (client, interaction, args) => {
|
||||
if (!args[1].includes("https://")) {
|
||||
interaction.followUp({ content: "The link must contain 'https://'" });
|
||||
} else {
|
||||
const shortName = args[0];
|
||||
const targetURL = args[1];
|
||||
const cc = await URLClient.createShortURL(shortName, targetURL);
|
||||
if (!cc) {
|
||||
interaction.followUp({ content: `URL already exist` });
|
||||
} else {
|
||||
interaction.followUp({ content: `https://url.cath.gq/${cc}` });
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
|
@ -7,11 +7,11 @@ module.exports = {
|
|||
Welcome: "837913442228371456",
|
||||
DMLog: "900549765534736394",
|
||||
CMDLog: "848613827226239046",
|
||||
ErrorLog: "938538311537012796",
|
||||
ErrorLog: "900509758786773022",
|
||||
ServerLog: "848613714537873518",
|
||||
Lavalink: {
|
||||
Host: "lavalink-repl.thunderemperor.repl.co",
|
||||
Port: 443,
|
||||
Password: "0638xxtXRH887UQQ",
|
||||
Host: "lavalink.darrennathanael.com",
|
||||
Port: 2095,
|
||||
Password: "whatwasthelastingyousaid",
|
||||
},
|
||||
};
|
||||
|
|
|
@ -10,9 +10,9 @@ client.on("messageCreate", async message => {
|
|||
nothahaa.setNickname(`${message.author.username}`).catch();
|
||||
await client.data.DelAFK(message.author.id);
|
||||
}
|
||||
if (message.mentions.users.first()?.id) {
|
||||
if (message.mentions.users.first()) {
|
||||
const data1 = await client.data.getUser(
|
||||
message.mentions.members.first()?.id
|
||||
message.mentions.members.first().id
|
||||
);
|
||||
if (data1?.AFK) {
|
||||
message.reply({
|
||||
|
|
|
@ -12,7 +12,7 @@ client.on("interactionCreate", async interaction => {
|
|||
if (option.type === "SUB_COMMAND_GROUP") {
|
||||
if (option.name) args.push(option.name);
|
||||
option.options?.forEach(x => {
|
||||
if (x.type === 1) {
|
||||
if (x.type === "SUB_COMMAND") {
|
||||
if (x.name) args.push(x.name);
|
||||
x.options?.forEach(y => {
|
||||
if (y.value) args.push(y.value);
|
||||
|
@ -63,19 +63,19 @@ client.on("interactionCreate", async interaction => {
|
|||
embeds: [
|
||||
new MessageEmbed()
|
||||
.setURL(client.web)
|
||||
.setAuthor({
|
||||
name: interaction.user.tag,
|
||||
iconURL: interaction.user.displayAvatarURL({ dynamic: true }),
|
||||
})
|
||||
.setAuthor(
|
||||
interaction.user.tag,
|
||||
interaction.user.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setDescription(
|
||||
`You aren't a premium user. You can either boost support server or subscribe to developer's team [Ko-fi](https://ko-fi.com/cathteam) or gift a nitro to one of the developer team to be premium user`
|
||||
)
|
||||
.setTimestamp()
|
||||
.setFooter({
|
||||
text: `Made by ${client.author}`,
|
||||
iconURL: client.user.displayAvatarURL(),
|
||||
}),
|
||||
.setFooter(
|
||||
`Made by ${client.author}`,
|
||||
client.user.displayAvatarURL()
|
||||
),
|
||||
],
|
||||
});
|
||||
}
|
||||
|
@ -83,7 +83,11 @@ client.on("interactionCreate", async interaction => {
|
|||
if (cmd.Level) {
|
||||
if (!data.Guild.Level) return;
|
||||
}
|
||||
|
||||
if (cmd.directory == "NSFW" && !data.Guild?.NSFW) {
|
||||
interaction.followUp({
|
||||
content: "NSFW commands have been disabled in this server",
|
||||
});
|
||||
}
|
||||
if (!interaction.guild.me.permissions.has(cmd.BotPerms || [])) {
|
||||
return interaction.followUp({
|
||||
content: `You can't use this command. I need to have ${cmd.BotPerms} permission to use this command.`,
|
||||
|
@ -111,65 +115,68 @@ client.on("interactionCreate", async interaction => {
|
|||
}
|
||||
}
|
||||
const random = utils.rndint(3, 6);
|
||||
if (cmd.name == "nsfw" && !data.Guild?.NSFW) {
|
||||
interaction.followUp({
|
||||
content: "NSFW commands have been disabled in this server",
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (cmd.timeout) {
|
||||
const current_time = Date.now();
|
||||
const cooldown_amount = cmd.timeout;
|
||||
cooldown.findOne(
|
||||
{ User: interaction.user.id, CMD: cmd.name },
|
||||
async (er, d) => {
|
||||
if (d) {
|
||||
const expiration_time = d.Time + cooldown_amount;
|
||||
if (current_time < expiration_time) {
|
||||
if (data.Guild.Tips) utils.tips(interaction, client);
|
||||
utils.cooldown(d.Time, cooldown_amount, interaction);
|
||||
try {
|
||||
if (cmd.timeout) {
|
||||
const current_time = Date.now();
|
||||
const cooldown_amount = cmd.timeout;
|
||||
cooldown.findOne(
|
||||
{ User: interaction.user.id, CMD: cmd.name },
|
||||
async (er, d) => {
|
||||
if (d) {
|
||||
const expiration_time = d.Time + cooldown_amount;
|
||||
if (current_time < expiration_time) {
|
||||
if (data.Guild.Tips) utils.tips(interaction, client);
|
||||
utils.cooldown(d.Time, cooldown_amount, interaction);
|
||||
} else {
|
||||
if (data.Guild.Tips) utils.tips(interaction, client);
|
||||
await cooldown.findOneAndUpdate(
|
||||
{ User: interaction.user.id, CMD: cmd.name },
|
||||
{ Time: current_time }
|
||||
);
|
||||
cmd.run(client, interaction, args, utils, data);
|
||||
client.addcmdsused(interaction.user.id);
|
||||
client.channels.cache.get(client.config.CMDLog).send({
|
||||
content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${cmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
|
||||
});
|
||||
// await client.addXP(interaction.user.id, random, interaction);
|
||||
}
|
||||
} else {
|
||||
if (data.Guild.Tips) utils.tips(interaction, client);
|
||||
await cooldown.findOneAndUpdate(
|
||||
{ User: interaction.user.id, CMD: cmd.name },
|
||||
{ Time: current_time }
|
||||
);
|
||||
cmd
|
||||
.run(client, interaction, args, utils, data)
|
||||
.catch(e => sendE(e));
|
||||
client.addcmdsused(interaction.user.id);
|
||||
cmd.run(client, interaction, args, utils, data);
|
||||
client.channels.cache.get(client.config.CMDLog).send({
|
||||
content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${cmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
|
||||
});
|
||||
client.addcmdsused(interaction.user.id);
|
||||
// await client.addXP(interaction.user.id, random, interaction);
|
||||
new cooldown({
|
||||
User: interaction.user.id,
|
||||
CMD: cmd.name,
|
||||
Time: current_time,
|
||||
Cooldown: cmd.timeout,
|
||||
}).save();
|
||||
}
|
||||
} else {
|
||||
if (data.Guild.Tips) utils.tips(interaction, client);
|
||||
cmd
|
||||
.run(client, interaction, args, utils, data)
|
||||
.catch(e => sendE(e));
|
||||
client.channels.cache.get(client.config.CMDLog).send({
|
||||
content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${cmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
|
||||
});
|
||||
client.addcmdsused(interaction.user.id);
|
||||
// await client.addXP(interaction.user.id, random, interaction);
|
||||
new cooldown({
|
||||
User: interaction.user.id,
|
||||
CMD: cmd.name,
|
||||
Time: current_time,
|
||||
Cooldown: cmd.timeout,
|
||||
}).save();
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
if (data.Guild.Tips) utils.tips(interaction, client);
|
||||
cmd.run(client, interaction, args, utils, data).catch(e => sendE(e));
|
||||
client.channels.cache.get(client.config.CMDLog).send({
|
||||
content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${cmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
|
||||
});
|
||||
client.addcmdsused(interaction.user.id);
|
||||
// await client.addXP(interaction.user.id, random, interaction);
|
||||
);
|
||||
} else {
|
||||
if (data.Guild.Tips) utils.tips(interaction, client);
|
||||
cmd.run(client, interaction, args, utils, data);
|
||||
client.channels.cache.get(client.config.CMDLog).send({
|
||||
content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${cmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
|
||||
});
|
||||
client.addcmdsused(interaction.user.id);
|
||||
// await client.addXP(interaction.user.id, random, interaction);
|
||||
}
|
||||
} catch (e) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle("Command Error")
|
||||
.setDescription(`\`\`\`ini\n${e.stack}\`\`\``)
|
||||
.setTimestamp()
|
||||
.setColor(client.color)
|
||||
.setFooter(client.user.username);
|
||||
client.channels.cache
|
||||
.get(client.config.ErrorLog)
|
||||
.send({ embeds: [embed] });
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
if (interaction.isContextMenu()) {
|
||||
|
@ -185,7 +192,7 @@ client.on("interactionCreate", async interaction => {
|
|||
if (!ownercmd) return;
|
||||
const args = [];
|
||||
for (const option of interaction.options.data) {
|
||||
if (option.type === 1) {
|
||||
if (option.type === "SUB_COMMAND") {
|
||||
if (option.name) args.push(option.name);
|
||||
option.options?.forEach(x => {
|
||||
if (x.value) args.push(x.value);
|
||||
|
@ -197,20 +204,14 @@ client.on("interactionCreate", async interaction => {
|
|||
interaction.member = interaction.guild.members.cache.get(
|
||||
interaction.user.id
|
||||
);
|
||||
ownercmd.run(client, interaction, args, utils).catch(e => sendE(e));
|
||||
client.channels.cache.get(client.config.CMDLog).send({
|
||||
content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${ownercmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
|
||||
});
|
||||
client.addcmdsused(interaction.user.id);
|
||||
try {
|
||||
ownercmd.run(client, interaction, args, utils);
|
||||
client.channels.cache.get(client.config.CMDLog).send({
|
||||
content: `\`${interaction.user.tag}(${interaction.user.id})\`\n has used \n**${ownercmd.name}**\n command in \n\`${interaction.guild.name}(${interaction.guild.id})\``,
|
||||
});
|
||||
client.addcmdsused(interaction.user.id);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
function sendE(e) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle("Command Error")
|
||||
.setDescription(`\`\`\`yaml\n${e.stack}\`\`\``)
|
||||
.setTimestamp()
|
||||
.setColor(client.color)
|
||||
.setFooter({ text: client.user.username });
|
||||
interaction.channel.send({ embeds: [embed] });
|
||||
client.channels.cache.get(client.config.ErrorLog).send({ embeds: [embed] });
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const client = require("..");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
const utils = require("../util/functions/function");
|
||||
const domains = require("../util/Data/domains.json");
|
||||
const scams = require("../util/Data/scam.json");
|
||||
client.on("messageCreate", async message => {
|
||||
if (message.author.bot || !message.guild) return;
|
||||
const data = {};
|
||||
|
@ -47,7 +47,7 @@ client.on("messageCreate", async message => {
|
|||
},
|
||||
{
|
||||
name: "<a:booster:896527475063025704> **Premium**",
|
||||
value: `You can either boost the support server or subscribe to developer's team [Ko-Fi](https://ko-fi.com/cathteam).\n Another option would be to gift a nitro subscription to one of the developers.`,
|
||||
value: `You can either boost support server or subscribe to developer's team [Ko-Fi](https://ko-fi.com/cathteam) or gift a nitro to one of the developer team.`,
|
||||
inline: false,
|
||||
}
|
||||
)
|
||||
|
@ -66,27 +66,7 @@ client.on("messageCreate", async message => {
|
|||
}
|
||||
if (data.User?.Blacklist) return;
|
||||
if (
|
||||
domains.iplogger.includes(
|
||||
message.content
|
||||
.toLowerCase()
|
||||
.match(
|
||||
/(https|http):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+~-]*[\w.,@?^=%&:/~+~-])+/g
|
||||
)?.[0]
|
||||
.replace(/(https|http):\/\/+/g, "")
|
||||
.match(/\s*([^)]+?)\s*\/+/g, "")[0]
|
||||
.slice(0, -1)
|
||||
) ||
|
||||
domains.scam.includes(
|
||||
message.content
|
||||
.toLowerCase()
|
||||
.match(
|
||||
/(https|http):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+~-]*[\w.,@?^=%&:/~+~-])+/g
|
||||
)?.[0]
|
||||
.replace(/(https|http):\/\/+/g, "")
|
||||
.match(/\s*([^)]+?)\s*\/+/g, "")[0]
|
||||
.slice(0, -1)
|
||||
) ||
|
||||
domains.ngrok.includes(
|
||||
scams.includes(
|
||||
message.content
|
||||
.toLowerCase()
|
||||
.match(
|
||||
|
@ -97,59 +77,14 @@ client.on("messageCreate", async message => {
|
|||
.slice(0, -1)
|
||||
)
|
||||
) {
|
||||
const _ = new MessageEmbed()
|
||||
.setTitle(`Scam/IP Grabber detected`)
|
||||
.setTimestamp()
|
||||
.setColor(client.color)
|
||||
.addFields(
|
||||
{
|
||||
name: "User",
|
||||
value: `${message.author.tag} (${message.author.id})`,
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Scam/IP Logger URL",
|
||||
value: `||https://${message.content
|
||||
.toLowerCase()
|
||||
.match(
|
||||
/(https|http):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+~-]*[\w.,@?^=%&:/~+~-])+/g
|
||||
)?.[0]
|
||||
.replace(/(https|http):\/\/+/g, "")
|
||||
.match(/\s*([^)]+?)\s*\/+/g, "")[0]
|
||||
.slice(0, -1)}||`,
|
||||
inline: true,
|
||||
}
|
||||
)
|
||||
.setFooter({
|
||||
text: `Tactical Protection by ${client.author}`,
|
||||
icon_url: client.user.displayAvatarURL(),
|
||||
});
|
||||
message.delete();
|
||||
message.channel.send({
|
||||
embeds: [_],
|
||||
content: `**${message.author.tag}** has sent a scam link and I have deleted it to prevent spread`,
|
||||
});
|
||||
client.channels.cache.get("936986641585799178").send({
|
||||
embeds: [
|
||||
_.addFields(
|
||||
{
|
||||
name: "Message",
|
||||
value: message.content,
|
||||
inline: false,
|
||||
},
|
||||
{
|
||||
name: "Guild",
|
||||
value: message.guild ? message.guild.name : "None",
|
||||
inline: true,
|
||||
}
|
||||
),
|
||||
],
|
||||
});
|
||||
message.delete().catch(() => {});
|
||||
}
|
||||
|
||||
if (
|
||||
message?.content.startsWith(data.Guild.Prefix) ||
|
||||
message?.content.startsWith("C.") ||
|
||||
message?.content.startsWith("c.")
|
||||
message?.content.startsWith("C.")
|
||||
) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle(`Message commands are now disabled`)
|
||||
|
@ -222,15 +157,7 @@ client.on("messageCreate", async message => {
|
|||
}
|
||||
if (message.content) {
|
||||
client.channels.cache.get(client.config.DMLog).send({
|
||||
embeds: [
|
||||
new MessageEmbed()
|
||||
.setDescription(message.content)
|
||||
.setColor(client.color)
|
||||
.setAuthor({
|
||||
name: message.author.tag,
|
||||
iconURL: message.author.displayAvatarURL({ dynamic: true }),
|
||||
}),
|
||||
],
|
||||
content: `\`${message.author.tag}(${message.author.id})\`: ${message.content}`,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,5 +13,5 @@ client.on("ready", async () => {
|
|||
};
|
||||
})
|
||||
);
|
||||
console.log(`${client.user.username} ✅`);
|
||||
console.log(`${client.user.username} ✅\nVersion: v${version}`);
|
||||
});
|
||||
|
|
4
index.js
4
index.js
|
@ -1,5 +1,7 @@
|
|||
const NYX = require("./client/NYX");
|
||||
const client = new NYX();
|
||||
module.exports = client;
|
||||
process.on("unhandledRejection", () => {}); // add // when need to debug
|
||||
process.on("unhandledRejection", err => {
|
||||
console.log(err);
|
||||
});
|
||||
client.start();
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
// Do we still need this ?
|
||||
|
||||
const mongoose = require("mongoose");
|
||||
module.exports = mongoose.model(
|
||||
"weapons",
|
||||
|
|
20
package.json
20
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "cath.exe",
|
||||
"version": "0.0.1",
|
||||
"version": "3.4.0",
|
||||
"description": "NYX bot created by Team NYX",
|
||||
"engines": {
|
||||
"node": "*",
|
||||
|
@ -11,7 +11,7 @@
|
|||
"dev": "nodemon .",
|
||||
"start": "node .",
|
||||
"lint": "eslint .",
|
||||
"node-update": "npm i --save-dev node@17 && npm config set prefix=$(pwd)/node_modules/node && export PATH=$(pwd)/node_modules/node/bin:$PATH",
|
||||
"node-update": "npm i --save-dev node@16 && npm config set prefix=$(pwd)/node_modules/node && export PATH=$(pwd)/node_modules/node/bin:$PATH",
|
||||
"node-clean": "rm -rf node_modules && rm package-lock.json && npm cache clear --force && npm cache clean --force && npm i",
|
||||
"all": "npm run node-update && npm run node-clean"
|
||||
},
|
||||
|
@ -37,18 +37,18 @@
|
|||
"url": "https://ko-fi.com/cathteam"
|
||||
},
|
||||
"devDependencies": {
|
||||
"node": "^18.7.0"
|
||||
"node": "^19.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.27.2",
|
||||
"cath": "^1.4.7",
|
||||
"discord.js": "^13.6.0",
|
||||
"dotenv": "^16.0.0",
|
||||
"axios": "^1.2.2",
|
||||
"cath": "^1.4.6",
|
||||
"discord.js": "^14.7.1",
|
||||
"dotenv": "^16.0.1",
|
||||
"erela.js": "^2.3.3",
|
||||
"erela.js-spotify": "^1.2.0",
|
||||
"goosecache": "^9.0.14",
|
||||
"goosecache": "^10.0.0",
|
||||
"moment": "^2.29.1",
|
||||
"mongoose": "^5.13.14",
|
||||
"quickchart-js": "^3.0.0"
|
||||
"mongoose": "^5.13.13",
|
||||
"quickchart-js": "^3.0.2"
|
||||
}
|
||||
}
|
||||
|
|
306
stats2.js
Normal file
306
stats2.js
Normal file
|
@ -0,0 +1,306 @@
|
|||
// const common = require("../../util/functions/common");
|
||||
// const data = require("../../util/Data/data.json");
|
||||
// const Discord = require("discord.js");
|
||||
|
||||
// // Ignore this for now, it's just a outline of what needs to be changed to fit the new data from Mongo
|
||||
|
||||
// var currGun,
|
||||
// currStats,
|
||||
// currAttachments,
|
||||
// currRecoilArr,
|
||||
// currDRM,
|
||||
// interpretion,
|
||||
// recoilAvailable,
|
||||
// chart,
|
||||
// hasError;
|
||||
// var errMsg = "*Generic placeholder error message*";
|
||||
// module.exports = {
|
||||
// name: "stats",
|
||||
// description: "Check gun stats",
|
||||
// usage: "(Gun)",
|
||||
// category: "CODM",
|
||||
// options: [
|
||||
// {
|
||||
// type: 3,
|
||||
// name: "gun_name",
|
||||
// description: "Name of the gun",
|
||||
// required: true,
|
||||
// choices: [],
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// name: "1st_attchment",
|
||||
// description: "First attachment",
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// name: "2nd_attchment",
|
||||
// description: "Second attachment",
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// name: "3rd_attchment",
|
||||
// description: "Third attachment",
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// name: "4th_attchment",
|
||||
// description: "Forth attachment",
|
||||
// },
|
||||
// {
|
||||
// type: 3,
|
||||
// name: "5th_attchment",
|
||||
// description: "Fifth attachment",
|
||||
// },
|
||||
// ],
|
||||
// run: async (client, interaction, args) => {
|
||||
// recoilAvailable = false;
|
||||
// hasError = false;
|
||||
// console.log(args);
|
||||
// var repEmb = statsHandler(args.join(" ").replace("\n", " "));
|
||||
// if (hasError) {
|
||||
// interaction.followUp({ embeds: [repEmb] });
|
||||
// }
|
||||
// if (recoilAvailable) { //we will use the old recoil graphs untill we can find someone to help update it.
|
||||
// repEmb.fields.push({
|
||||
// name: "**Recoil Graph**",
|
||||
// value:
|
||||
// "```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
|
||||
// });
|
||||
// const recoilImageLink = await chart.getShortUrl();
|
||||
// repEmb.image = { url: recoilImageLink };
|
||||
// }
|
||||
// interaction.followUp({ embeds: [repEmb] });
|
||||
// },
|
||||
// };
|
||||
|
||||
// // Don't need (use: to split the input by + (which was used to add attachments before slash commands))
|
||||
// function inpHandler(inpmsg) {
|
||||
// statsHandler(inpmsg.split("+")[0]);
|
||||
// }
|
||||
|
||||
// function statsHandler(inpmsg) {
|
||||
// // Don't need here, use from json (will be easier to add stuff in future)
|
||||
// var statsNames = [
|
||||
// "Pellets",
|
||||
// "Detonation Range",
|
||||
// "Explosion Radius",
|
||||
// "Explosion Damage",
|
||||
// "Firing Mode",
|
||||
// "Rate of Fire",
|
||||
// "Bullet in Burst",
|
||||
// "Time Between Burst",
|
||||
// "Bullet Speed",
|
||||
// "Penetration Level",
|
||||
// "Bullet Spread",
|
||||
// "Idle Sway",
|
||||
// "Hipfire Pellet Spread",
|
||||
// "ADS Pellet Spread",
|
||||
// "ADS Time",
|
||||
// "Sprint-to-Fire Time",
|
||||
// "ADS Zoom",
|
||||
// "Magazine",
|
||||
// "Reserve",
|
||||
// "Reload Type",
|
||||
// "Cancel Reload Time",
|
||||
// "Reload Time",
|
||||
// "Full Reload Time",
|
||||
// "Drop Time",
|
||||
// "Raise Time",
|
||||
// "Sprinting Speed",
|
||||
// "Walking Speed",
|
||||
// "Straifing Speed",
|
||||
// "Damage per Tick",
|
||||
// "Number of Ticks",
|
||||
// "Time Between Ticks",
|
||||
// "Breath Hold Time",
|
||||
// "shouldNeverHappen0",
|
||||
// "shouldNeverHappen1",
|
||||
// "shouldNeverHappen2",
|
||||
// "shouldNeverHappen3",
|
||||
// "shouldNeverHappen4",
|
||||
// ],
|
||||
// out = []; // This stores all the feilds
|
||||
|
||||
// currGun = common.weaponIdentifier(inpmsg); // inpMsg should be replaced by args[0] (i.e the gun name)
|
||||
// if (typeof currGun == "string") {
|
||||
// hasError = true;
|
||||
// return currGun;
|
||||
// }
|
||||
// currStats = currGun.stats; // access stats using mongo
|
||||
// currDRM = currGun.drm[0]; // Same ^
|
||||
// currAttachments = [];
|
||||
// currAttachments = common.attachmentsIdentifier(
|
||||
// inpmsg, // this was supposed to be the full input msg, but we need to madify it so it just gets a attachment name and uses it so no need for isolator
|
||||
// currGun.aments, //Sends the stats for all the attachment of that gun
|
||||
// currStats //sends the base stat of the gun for calculation
|
||||
// );
|
||||
// if (typeof currAttachments == "string") {
|
||||
// hasError = true;
|
||||
// return currAttachments;
|
||||
// }
|
||||
// currRecoilArr = [1, 1, currGun.stats[17]];
|
||||
// if (currAttachments.length != 0) {
|
||||
// var totalEffects = common.totaler(currAttachments);
|
||||
|
||||
// currStats = common.updateStatswithEffects(totalEffects, currStats);
|
||||
// currRecoilArr = [totalEffects[2], totalEffects[3], currGun.stats[17]]; //must happen after currStats update
|
||||
// currDRM = currGun.drm[totalEffects[37]];
|
||||
// currDRM.range = currDRM.range.map(x =>
|
||||
// Math.round(x * (1 + totalEffects[13] / 100))
|
||||
// );
|
||||
// out = common.attachmentHandler(totalEffects, currStats);
|
||||
// }
|
||||
// function statsWorker() {
|
||||
// if (currStats[19] === 2) {
|
||||
// currStats[21] =
|
||||
// currStats[20] + currStats[21] * currStats[17] + currStats[22];
|
||||
// currStats[20] = 0;
|
||||
// currStats[22] = 0;
|
||||
// }
|
||||
// currStats[25] = (currStats[25] * currStats[26]) / 100;
|
||||
|
||||
// var outReady = currStats.map((x, i) =>
|
||||
// x ? statsNames[i].padEnd(24) + ":".padEnd(3) + beautifier(i) : ""
|
||||
// );
|
||||
// out = [
|
||||
// ...[
|
||||
// "Basic Stats",
|
||||
// "ADS Stats",
|
||||
// "Bullet Stats",
|
||||
// "Magazine",
|
||||
// "Handling Stats",
|
||||
// "Mobility Stats",
|
||||
// "Miscellaneous Stats",
|
||||
// ].map((x, i) =>
|
||||
// fieldMaker(
|
||||
// x,
|
||||
// [
|
||||
// [04, 05, 09],
|
||||
// [14, 16, 11, 31],
|
||||
// [00, 06, 07, 08, 10, 12, 13],
|
||||
// [17, 18, 19, 20, 21, 22],
|
||||
// [23, 24],
|
||||
// [25, 26, 27, 15],
|
||||
// [28, 29, 30, 01, 02, 03],
|
||||
// ][i]
|
||||
// )
|
||||
// ),
|
||||
// ...out,
|
||||
// ];
|
||||
// function fieldMaker(inpName, inpIndx) {
|
||||
// inpIndx = inpIndx.filter(x => outReady[x]);
|
||||
// return inpIndx.length
|
||||
// ? {
|
||||
// name: "**" + inpName + "**",
|
||||
// value: "```\n" + inpIndx.map(x => outReady[x]).join("\n") + "```",
|
||||
// }
|
||||
// : "";
|
||||
// }
|
||||
// }
|
||||
// statsWorker();
|
||||
|
||||
// function beautifier(j) {
|
||||
// switch (j) {
|
||||
// case 04:
|
||||
// return data.firingModes[currStats[j] - 1];
|
||||
// case 09:
|
||||
// return data.penetrationLevels[currStats[j] - 1];
|
||||
// case 19:
|
||||
// return data.reloadTypes[currStats[j] - 1];
|
||||
// case 08:
|
||||
// if (currStats[j] == -1) {
|
||||
// return "Infinity";
|
||||
// } else {
|
||||
// return parseFloat(currStats[j].toFixed(2)).toString() + " m/s";
|
||||
// }
|
||||
// case 03:
|
||||
// return parseFloat(currStats[j].toFixed(2))
|
||||
// .toString()
|
||||
// .replace(".", " ~ ");
|
||||
// default:
|
||||
// return parseFloat(currStats[j].toFixed(2)).toString() + addUnit(j);
|
||||
// }
|
||||
|
||||
// function addUnit(j) { //Needs modification to match the new layout
|
||||
// switch (j) {
|
||||
// case 07:
|
||||
// case 14:
|
||||
// case 15:
|
||||
// case 23:
|
||||
// case 24:
|
||||
// case 31:
|
||||
// return " ms";
|
||||
// case 27:
|
||||
// case 28:
|
||||
// case 25:
|
||||
// case 26:
|
||||
// return " m/s";
|
||||
// case 20:
|
||||
// case 21:
|
||||
// case 22:
|
||||
// return " s";
|
||||
// case 16:
|
||||
// return "%";
|
||||
// case 06:
|
||||
// return " Rounds";
|
||||
// case 05:
|
||||
// return " RPM";
|
||||
// default:
|
||||
// return "";
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// interpretion = currGun.gunname + common.interpretioner(currAttachments);
|
||||
// if (currGun.recoil.hr.length > 2) {
|
||||
// chart = common.recoilHandler(
|
||||
// currGun.recoil.hr,
|
||||
// currGun.recoil.vr,
|
||||
// currRecoilArr[0],
|
||||
// currRecoilArr[1],
|
||||
// currRecoilArr[2]
|
||||
// );
|
||||
// recoilAvailable = true;
|
||||
// } else {
|
||||
// recoilAvailable = false;
|
||||
// }
|
||||
// if (chart == "none") {
|
||||
// recoilAvailable = false;
|
||||
// }
|
||||
// if (chart == "err" || currAttachments == "err") {
|
||||
// hasError = true;
|
||||
// return "Cocaineeee";
|
||||
// }
|
||||
// var dmg =
|
||||
// common.damageHandler(
|
||||
// currDRM.damage,
|
||||
// currDRM.range,
|
||||
// 1,
|
||||
// 100,
|
||||
// 60000 / currStats[5],
|
||||
// currStats[7],
|
||||
// currStats[6],
|
||||
// currStats[0]
|
||||
// ) || "```This should never happen```";
|
||||
// out = [
|
||||
// currGun.description
|
||||
// ? {
|
||||
// name: "**Description:**",
|
||||
// value: "```\n" + currGun.description + "```",
|
||||
// }
|
||||
// : {},
|
||||
// { name: "**Damage Profile:**", value: dmg },
|
||||
// ...out,
|
||||
// ];
|
||||
// out = out.filter(x => x.value);
|
||||
// return {
|
||||
// title: interpretion,
|
||||
// color: 5814783,
|
||||
// fields: out,
|
||||
// footer: {
|
||||
// text: "All data courtesy of Round Table",
|
||||
// icon_url:
|
||||
// "", //update the icon later
|
||||
// },
|
||||
// };
|
||||
// }
|
|
@ -26,10 +26,7 @@
|
|||
"CR-56 AMAX",
|
||||
"Shorty",
|
||||
"Crossbow",
|
||||
"R9-0",
|
||||
"PPSh-41",
|
||||
"CBR4",
|
||||
"SVD"
|
||||
"R9-0"
|
||||
],
|
||||
"weaponAlliasName": [
|
||||
["MoW"],
|
||||
|
@ -51,17 +48,14 @@
|
|||
["Slow Outlaw", "Slower Outlaw"],
|
||||
["bae"],
|
||||
["Reneti", "Renneti", "Rennetti", "Burst Pistol"],
|
||||
["pp bizon", "pp19"],
|
||||
["pp bizon", "pp"],
|
||||
["AUG"],
|
||||
["AKBP", "Vepr"],
|
||||
["AN94"],
|
||||
["CR56", "AMAX"],
|
||||
["725"],
|
||||
["cb", "bow"],
|
||||
["r9", "R9-O"],
|
||||
["ppsh", "pp41"],
|
||||
["p90"],
|
||||
["Dragonov"]
|
||||
["r9", "R9-O"]
|
||||
],
|
||||
"attachmentActualName": [
|
||||
["akimbo", "Stopping Power"],
|
||||
|
|
|
@ -179,8 +179,7 @@
|
|||
"MIP Light Barrel (Short)",
|
||||
"MIP Extended Light Barrel",
|
||||
"OWC Ranger",
|
||||
"OWC Marksman",
|
||||
"GRU Combo Grip"
|
||||
"OWC Marksman"
|
||||
],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
|
@ -608,8 +607,7 @@
|
|||
"YKM Light Stock",
|
||||
"RTC Steady Stock",
|
||||
"OWC Skeleton Stock",
|
||||
"No Stock",
|
||||
"Thunderbolt Sling"
|
||||
"No Stock"
|
||||
],
|
||||
"perk": [
|
||||
"Tough",
|
||||
|
@ -999,157 +997,6 @@
|
|||
]
|
||||
}
|
||||
],
|
||||
"Swordfish": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"OWC Light Suppressor",
|
||||
"OWC Light Compensator",
|
||||
"Monolithic Suppressor",
|
||||
"MIP Light FLash Guard",
|
||||
"RTC Light Muzzle Brake"
|
||||
],
|
||||
"barrel": ["MIP Light", "MIP Extended Light Barrel", "OWC Ranger"],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"3x Tactical Scope",
|
||||
"4x Tactical Scope",
|
||||
"4.4x Tactical Scope"
|
||||
],
|
||||
"stock": ["YKM Light Stock", "OWC Skeleton Stock", "RTC Steady Stock"],
|
||||
"perk": [
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable",
|
||||
"Tough",
|
||||
"Long Shot",
|
||||
"Melee Master"
|
||||
],
|
||||
"laser": ["RTC Laser 1mW", "MIP Laser 5mW", "OWC Laser - Tactical"],
|
||||
"underbarrel": [
|
||||
"Strike Foregrip",
|
||||
"Merc Foregrip",
|
||||
"Operator Foregrip",
|
||||
"Ranger Foregrip",
|
||||
"Tactical Foregrip A",
|
||||
"Bipod"
|
||||
],
|
||||
"ammo": ["Extended Mag A", "Fast Reload", "Halberd Mag"],
|
||||
"rear_grip": [
|
||||
"Granulated Grip Tape",
|
||||
"Ruberized Grip Tape",
|
||||
"Stippled Grip Tape"
|
||||
]
|
||||
}
|
||||
],
|
||||
"Kilo_141": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"OWC Light Suppressor",
|
||||
"OWC Light Compensator",
|
||||
"Monolithic Suppressor",
|
||||
"MIP Light FLash Guard",
|
||||
"RTC Light Muzzle Brake"
|
||||
],
|
||||
"barrel": [
|
||||
"YKM Integral Suppressor Light",
|
||||
"MIP Light Extended Barrel",
|
||||
"OWC Marksman"
|
||||
],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"3x Tactical Scope",
|
||||
"4x Tactical Scope",
|
||||
"4.4x Tactical Scope"
|
||||
],
|
||||
"stock": [
|
||||
"No Stock",
|
||||
"YKM Combat Stock",
|
||||
"OWC Skeleton Stock",
|
||||
"RTC Steady Stock"
|
||||
],
|
||||
"perk": [
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable",
|
||||
"Tough",
|
||||
"Long Shot",
|
||||
"Melee Master"
|
||||
],
|
||||
"laser": ["RTC Laser 1mW", "MIP Laser 5mW", "OWC Laser - Tactical"],
|
||||
"underbarrel": [
|
||||
"Strike Foregrip",
|
||||
"Merc Foregrip",
|
||||
"Operator Foregrip",
|
||||
"Ranger Foregrip",
|
||||
"Tactical Foregrip A",
|
||||
"Bipod"
|
||||
],
|
||||
"ammo": [
|
||||
"Extended Mag A",
|
||||
"Large Extended Mag B",
|
||||
"100 round LMG Drum Mag"
|
||||
],
|
||||
"rear_grip": [
|
||||
"Granulated Grip Tape",
|
||||
"Ruberized Grip Tape",
|
||||
"Stippled Grip Tape"
|
||||
]
|
||||
}
|
||||
],
|
||||
"Oden": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"OWC Light Suppressor",
|
||||
"RTC Huge Suppressor",
|
||||
"Monolithic Suppressor",
|
||||
"OWC Light Compensator",
|
||||
"MIP Light FLash Guard",
|
||||
"RTC Light Muzzle Brake"
|
||||
],
|
||||
"barrel": ["MIP Light Barrel (Short)", "OWC Marksman", "OWC Ranger"],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"3x Tactical Scope",
|
||||
"4x Tactical Scope",
|
||||
"4.4x Tactical Scope"
|
||||
],
|
||||
"stock": ["YKM Light Stock", "YKM Combat Stock", "RTC Steady Stock"],
|
||||
"perk": [
|
||||
"Tough",
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Long Shot",
|
||||
"Melee Master",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable"
|
||||
],
|
||||
"laser": ["RTC Laser 1mW", "MIP Laser 5mW", "OWC Laser - Tactical"],
|
||||
"underbarrel": [
|
||||
"Strike Foregrip",
|
||||
"Merc Foregrip",
|
||||
"Operator Foregrip",
|
||||
"Ranger Foregrip",
|
||||
"Tactical Foregrip A"
|
||||
],
|
||||
"ammo": ["Extended Mag A", "Large Extended Mag B", "Damage Mag", "12.7 mm Duplex Rounds"],
|
||||
"rear_grip": [
|
||||
"Stippled Grip Tape",
|
||||
"Granulated Grip Tape",
|
||||
"Ruberized Grip Tape"
|
||||
]
|
||||
}
|
||||
],
|
||||
"XPR_50": [
|
||||
{
|
||||
"muzzle": [
|
||||
|
@ -1494,64 +1341,6 @@
|
|||
]
|
||||
}
|
||||
],
|
||||
"SVD": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"OWC Light Suppressor",
|
||||
"Monolithic Suppressor",
|
||||
"RTC Compensator",
|
||||
"MIP Light FLash Guard",
|
||||
"RTC Light Muzzle Brake"
|
||||
],
|
||||
"barrel": ["RTC 510mm Light", "RTC 600mm Heavy"],
|
||||
"optic": ["3x Tactical Scope", "4x Tactical Scope", "6x Tactical Scope"],
|
||||
"stock": ["YKM Light Stock", "OWC Skeleton Stock", "RTC Steady Stock"],
|
||||
"perk": [
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable",
|
||||
"Bullet Return",
|
||||
"Headshot Slow"
|
||||
],
|
||||
"laser": ["OWC Laser - Tactical"],
|
||||
"underbarrel": ["Bipod"],
|
||||
"ammo": ["15 Round Extended Mag", "20 Round Extended Mag"]
|
||||
}
|
||||
],
|
||||
"Koshka": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"OWC Light Suppressor",
|
||||
"Monolithic Suppressor",
|
||||
"MIP Light FLash Guard",
|
||||
"RTC Light Muzzle Brake"
|
||||
],
|
||||
"barrel": ["Enhanced Barrel", "MIP Light Barrel (Short)"],
|
||||
"optic": ["3x Tactical Scope", "4x Tactical Scope", "6x Tactical Scope"],
|
||||
"stock": ["Mobility Stock", "OWC Skeleton Stock", "RTC Steady Stock"],
|
||||
"perk": [
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable",
|
||||
"Bullet Return",
|
||||
"Headshot Slow"
|
||||
],
|
||||
"laser": ["OWC Laser - Tactical", "Fast Aim Laser"],
|
||||
"underbarrel": ["Bipod"],
|
||||
"ammo": ["10 Round Extended Mag", "8 Round Fast Mag", "Armour Piercer Mag"],
|
||||
"rear_grip": [
|
||||
"Stippled Grip Tape",
|
||||
"Granulated Grip Tape",
|
||||
"Ruberized Grip Tape"
|
||||
]
|
||||
}
|
||||
],
|
||||
"S36": [
|
||||
{
|
||||
"muzzle": [
|
||||
|
@ -1910,54 +1699,6 @@
|
|||
]
|
||||
}
|
||||
],
|
||||
"PKM": [
|
||||
{
|
||||
"muzzle": [
|
||||
"OWC Light Suppressor",
|
||||
"Agency Suppressor",
|
||||
"Infantry Compensator",
|
||||
"MIP Flashguard",
|
||||
"OWC Eliminator",
|
||||
"RTC Muzzle Brake"
|
||||
],
|
||||
"barrel": [
|
||||
"Rapid Fire Barrel",
|
||||
"Long-Range Barrel",
|
||||
"MIP Extended Light Barrel"
|
||||
],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"3x Tactical Scope",
|
||||
"4x Tactical Scope",
|
||||
"4.4x Tactical Scope"
|
||||
],
|
||||
"stock": [
|
||||
"Light Weight Stock",
|
||||
"Marathon Stock",
|
||||
"No Stock",
|
||||
"Agile Stock"
|
||||
],
|
||||
"perk": [
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable",
|
||||
"Headshot XP",
|
||||
"Empty Reload"
|
||||
],
|
||||
"laser": ["1mW Steady Aim Laser", "5mW Combat Laser", "Aim Assist Laser"],
|
||||
"underbarrel": ["Crossbar"],
|
||||
"ammo": ["84 Round Hybrid Mag"],
|
||||
"rear_grip": [
|
||||
"Sturdy Grip Tape",
|
||||
"Rustle Grip Tape",
|
||||
"Firm Grip Tape",
|
||||
"Non-Slip Foregrip"
|
||||
]
|
||||
}
|
||||
],
|
||||
"RUS_79U": [
|
||||
{
|
||||
"muzzle": [
|
||||
|
@ -2692,142 +2433,6 @@
|
|||
"rear_grip": ["Rustle Grip Tape", "Sturdy Grip Tape", "Firm Grip Tape"]
|
||||
}
|
||||
],
|
||||
"CBR4": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"OWC Light Suppressor",
|
||||
"Monolithic Suppressor",
|
||||
"OWC Light Compensator",
|
||||
"MIP Light FLash Guard",
|
||||
"RTC Light Muzzle Brake"
|
||||
],
|
||||
"barrel": ["MIP Extended Light Barrel", "OWC Marksman"],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"Tactical Scope",
|
||||
"3x Tactical Scope"
|
||||
],
|
||||
"stock": ["YKM Light Stock", "YKM Combat Stock", "RTC Steady Stock"],
|
||||
"perk": [
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable",
|
||||
"Wild Hip Fire",
|
||||
"Double Kill",
|
||||
"Fast Reload Kill"
|
||||
],
|
||||
"laser": ["RTC Laser 1mW", "MIP Laser 5mW", "OWC Laser - Tactical"],
|
||||
"rear_grip": [
|
||||
"Granulated Grip Tape",
|
||||
"Ruberized Grip Tape",
|
||||
"Stippled Grip Tape"
|
||||
]
|
||||
}
|
||||
],
|
||||
"PPSh_41": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"OWC Light Suppressor",
|
||||
"Monolithic Suppressor",
|
||||
"OWC Light Compensator",
|
||||
"MIP Light FLash Guard",
|
||||
"RTC Light Muzzle Brake"
|
||||
],
|
||||
"barrel": ["Gurrilla Light Short", "Last Stand Light", "Banner Heavy"],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"Tactical Scope",
|
||||
"3x Tactical Scope"
|
||||
],
|
||||
"stock": ["No Stock", "OWC Skeleton Stock", "RTC Steady Stock"],
|
||||
"perk": [
|
||||
"FMJ",
|
||||
"Sleight of Hand",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable",
|
||||
"Wild Hip Fire",
|
||||
"Double Kill",
|
||||
"Fast Reload Kill"
|
||||
],
|
||||
"laser": ["RTC Laser 1mW", "MIP Laser 5mW", "OWC Laser - Tactical"],
|
||||
"underbarrel": [
|
||||
"Focused Foregrip",
|
||||
"Tough Foregrip",
|
||||
"Resilient Foregrip",
|
||||
"Tactical Foregrip A",
|
||||
"Operator Foregrip"
|
||||
],
|
||||
"ammo": ["35 Round Fast Reload", "55 Round Light Reload"],
|
||||
"rear_grip": [
|
||||
"Sturdy Grip Tape",
|
||||
"Ruberized Grip Tape",
|
||||
"Rustle Grip Tape"
|
||||
]
|
||||
}
|
||||
],
|
||||
"MAC_10": [
|
||||
{
|
||||
"muzzle": [
|
||||
"RTC Muzzle Brake",
|
||||
"MIP Flashguard",
|
||||
"OWC Light Suppressor",
|
||||
"Infantry Compensator",
|
||||
"OWC Eliminator",
|
||||
"Agency Suppressor"
|
||||
],
|
||||
"barrel": [
|
||||
"6.5\" Rifling Barrel",
|
||||
"6.1\" Reinforced Heavy",
|
||||
"Taskforce Barrel",
|
||||
"5.5\" Extended Barrel",
|
||||
"6.2\" Cavalry Barrel"
|
||||
],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"3x Tactical Scope",
|
||||
"4x Tactical Scope"
|
||||
],
|
||||
"stock": [
|
||||
"Steel Stock",
|
||||
"Swift Stock",
|
||||
"No Stock",
|
||||
"SAS Combat Stock"
|
||||
],
|
||||
"perk": [
|
||||
"Sleight of Hand",
|
||||
"Wild Hip Fire",
|
||||
"Double Kill",
|
||||
"Fast Reload Kill",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable"
|
||||
],
|
||||
"laser": ["1mW Steady Aim Laser", "5mW Combat Laser", "Aim Assist Laser"],
|
||||
"underbarrel": [
|
||||
"BD Foregrip",
|
||||
"Red Cell Foregrip",
|
||||
"Striker Foregrip",
|
||||
"Patrol Foregrip",
|
||||
"Field Agent Foregrip",
|
||||
"SFDD Fast Foregrip"
|
||||
],
|
||||
"ammo": [
|
||||
"Fast Reload",
|
||||
"43 Round Fast Reload",
|
||||
"43 Fast Reload",
|
||||
"STANAG 53 Round Extended Reload"
|
||||
],
|
||||
"rear_grip": ["Rustle Grip Tape", "Sturdy Grip Tape", "Firm Grip Tape"]
|
||||
}
|
||||
],
|
||||
"HS2126": [
|
||||
{
|
||||
"muzzle": [
|
||||
|
@ -3145,58 +2750,6 @@
|
|||
]
|
||||
}
|
||||
],
|
||||
"JAK_12": [
|
||||
{
|
||||
"muzzle": [
|
||||
"Tactical Suppressor",
|
||||
"Monolithic Suppressor",
|
||||
"OWC Light Compensator",
|
||||
"Choke",
|
||||
"RTC Light Muzzle Brake",
|
||||
"Flash Guard",
|
||||
"Marauder Suppressor"
|
||||
],
|
||||
"barrel": ["MIP Extended Light Barrel", "MIP Light Barrel (Short)", "OWC Marksman"],
|
||||
"optic": [
|
||||
"Red Dot Sight",
|
||||
"Holographic Sight",
|
||||
"Tactical Scope",
|
||||
"3x Tactical Scope"
|
||||
],
|
||||
"stock": [
|
||||
"YKM Light Stock",
|
||||
"YKM Combat Stock",
|
||||
"MIP Stalker Stock"
|
||||
],
|
||||
"ammo": [
|
||||
"FRAG-12 Explosive Mag",
|
||||
"Extended Mag C",
|
||||
"Large Extended Mag D",
|
||||
"Slug Reload"
|
||||
],
|
||||
"perk": [
|
||||
"Sleight of Hand",
|
||||
"Speed Up Kill",
|
||||
"Slide Flak Jacket",
|
||||
"Wounding",
|
||||
"Full Ammo",
|
||||
"Disable"
|
||||
],
|
||||
"laser": ["RTC Laser 1mW", "OWC Laser - Tactical", "MIP Laser 5mW"],
|
||||
"underbarrel": [
|
||||
"Ranger Foregrip",
|
||||
"Operator Foregrip",
|
||||
"Merc Foregrip",
|
||||
"Strike Foregrip",
|
||||
"Tactical Foregrip A"
|
||||
],
|
||||
"rear_grip": [
|
||||
"Stippled Grip Tape",
|
||||
"Granulated Grip Tape",
|
||||
"Ruberized Grip Tape"
|
||||
]
|
||||
}
|
||||
],
|
||||
"Kilo_Bolt_Action": [
|
||||
{
|
||||
"muzzle": [
|
||||
|
|
772
util/Data/builds.json
Normal file
772
util/Data/builds.json
Normal file
|
@ -0,0 +1,772 @@
|
|||
{
|
||||
"Main": [
|
||||
{
|
||||
"Name": "AK-47",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Extended Light Barrel", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "5.45 Large Caliber", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174280823308308/image3.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "AK117",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Integral Supprssor", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Tactical Foregrip B", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
]
|
||||
},
|
||||
{
|
||||
"Name": "ASM10",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Flash Guard", "Type": 4 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Slight of Hand", "Type": 8 },
|
||||
{ "Name": "40 Round Extended Mag", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/691133003866439701/861887618820472842/Screenshot_20210706-1353282.png"
|
||||
},
|
||||
{
|
||||
"Name": "BK57",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Extended Light Barrel", "Type": 5 },
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "40 Round Fast Reload", "Type": 7 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174279287668776/image0.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "DR-H",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 3 },
|
||||
{ "Name": "25 Round OTM Mag", "Type": 7 },
|
||||
{ "Name": "Tactical Foregrip A", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174261193965648/image3.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "HBRa3",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Tactical Foregrip A", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174262041346128/image5.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "HVK-30",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "Monolithic Suppressor", "Type": 4 },
|
||||
{ "Name": "MIP Light", "Type": 5 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Large Caliber Ammo", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174261705146458/image4.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "ICR-1",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Integral Supprssor Light", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Tactical Foregrip A", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174263286661140/image8.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "KN-44",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Muzzle Brake", "Type": 4 },
|
||||
{ "Name": "MIP Light Barrel(Short)", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174262397075516/image6.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "LK24",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Integral Suppressor Light", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Tactical Foregrip A", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174263684857907/image9.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "M4",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Integral Suppressor Light", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Tactical Foregrip A", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174279689928714/image1.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "M16",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "OWC Light Compensator", "Type": 4 },
|
||||
{ "Name": "MIP Strike Stock", "Type": 6 },
|
||||
{ "Name": "Rubberized Grip Tape", "Type": 2 },
|
||||
{ "Name": "Operator Foregrip", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174281255190568/image4.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "Man-O-War",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Barrel(Short)", "Type": 5 },
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Tactical Foregrip A", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174262841540658/image7.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "Peacekeeper MK2",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "Taskforce Barrel", "Type": 5 },
|
||||
{ "Name": "Agile Stock", "Type": 6 },
|
||||
{ "Name": "Firm Grip Tape", "Type": 2 },
|
||||
{ "Name": "Extended Mag A", "Type": 7 },
|
||||
{ "Name": "Field Agent Foregrip", "Type": 1 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174260522090516/image2.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "Type 25",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Barrel(Short)", "Type": 5 },
|
||||
{ "Name": "YKM Light Stock", "Type": 6 },
|
||||
{ "Name": "Stopping Power Reload", "Type": 7 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174281698738216/image5.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "ASVAL",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Quick Response Barrel", "Type": 5 },
|
||||
{ "Name": "OWC Skeleton Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Large Extended Mag B", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174259708657695/image0.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "FR .556",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Barrel(Short)", "Type": 5 },
|
||||
{ "Name": "RTC Steady Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "Long Shot", "Type": 8 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/772099026195316746/847174260052459540/image1.png?width=937&height=562"
|
||||
},
|
||||
{
|
||||
"Name": "CR-56 AMAX",
|
||||
"Type": 0,
|
||||
"Attachments": [
|
||||
{ "Name": "Gunner Stock", "Type": 6 },
|
||||
{ "Name": "Red Dot Sight", "Type": 0 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "M67 Ammo", "Type": 7 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/691133003866439701/861891137254326272/brave_8pS8PhHl4P.png?width=1128&height=634"
|
||||
},
|
||||
{
|
||||
"Name": "AGR 556",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "OWC Light Compensator", "Type": 4 },
|
||||
{ "Name": "MIP Extended Light Barrel", "Type": 5 },
|
||||
{ "Name": "YKM Light Stock", "Type": 6 },
|
||||
{ "Name": "30 Round 5.56mm Mag", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/691133003866439701/861887638419931176/Screenshot_20210706-1402032.png?width=881&height=495"
|
||||
},
|
||||
{
|
||||
"Name": "Chicom",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light", "Type": 5 },
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "Stippled Grip Tape", "Type": 2 },
|
||||
{ "Name": "Strike Foregrip", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Cordite",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Extended Light Barrel", "Type": 5 },
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "Stippled Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Fennec",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "Monolithic Supprssor", "Type": 4 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Extended Mag A", "Type": 7 },
|
||||
{ "Name": "Operator Foregrip", "Type": 1 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/767456294981992488/862753085985914930/image0.png?width=1104&height=630"
|
||||
},
|
||||
{
|
||||
"Name": "GKS",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Integral Supprssor", "Type": 5 },
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "32 Round Fast Reload", "Type": 7 },
|
||||
{ "Name": "Strike Foregrip", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "HG 40",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Integral Supprssor", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Rubberized Grip Tape", "Type": 2 },
|
||||
{ "Name": "40 Round Fast Reload", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "MSMC",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "36 Round Extended Mag", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "MX9",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Extended Light Barrel", "Type": 5 },
|
||||
{ "Name": "Agile Stock", "Type": 6 },
|
||||
{ "Name": "5mW Combat Laser", "Type": 2 },
|
||||
{ "Name": "Strike Foregrip", "Type": 1 },
|
||||
{ "Name": "Large Caliber Ammo", "Type": 7 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "PDW-57",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Flash Guard", "Type": 4 },
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Pharo",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Barrel (Short)", "Type": 5 },
|
||||
{ "Name": "MIP Strike Stock", "Type": 6 },
|
||||
{ "Name": "Stippled Grip Tape", "Type": 2 },
|
||||
{ "Name": "36 Round Fast Reload", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "QQ9",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "RTC Recon Tac Long", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "45 Round Extended Mag", "Type": 7 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/842014909264953354/853663337824780348/image2.png"
|
||||
},
|
||||
{
|
||||
"Name": "QXR",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Flash Guard", "Type": 4 },
|
||||
{ "Name": "MIP Light Barrel (Short)", "Type": 5 },
|
||||
{ "Name": "YKM Light Stock", "Type": 6 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "Enhanced Bolt", "Type": 8 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/691133003866439701/861883636013727774/Screenshot_20210706-1344422.png"
|
||||
},
|
||||
{
|
||||
"Name": "Razorback",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "Extended Mag A", "Type": 7 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "Rapid Fire", "Type": 8 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/842014909264953354/852922742705881098/image0.png?width=1001&height=563"
|
||||
},
|
||||
{
|
||||
"Name": "RUS-79U",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Barrel (Short)", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "38 Round Fast Reload", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "PP19 Bizon",
|
||||
"Type": 1,
|
||||
"Attachments": [
|
||||
{ "Name": "Monolithic Suppressor", "Type": 4 },
|
||||
{ "Name": "OWC Skeleton Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Large Caliber Ammo A", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/691133003866439701/861887619049717770/Screenshot_20210706-1351142.png?width=881&height=487"
|
||||
},
|
||||
{
|
||||
"Name": "Chopper",
|
||||
"Type": 2,
|
||||
"Attachments": [
|
||||
{ "Name": "RTC Light Muzzle Brake", "Type": 4 },
|
||||
{ "Name": "Chopper Infatry", "Type": 5 },
|
||||
{ "Name": "Heavy Handle", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "FMJ", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "M4LMG",
|
||||
"Type": 2,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Ultralight Barrel", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "40 Round Light Reload", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "RPD",
|
||||
"Type": 2,
|
||||
"Attachments": [
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Snatch Foregrip", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "FMJ", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "S36",
|
||||
"Type": 2,
|
||||
"Attachments": [
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "UL736",
|
||||
"Type": 2,
|
||||
"Attachments": [
|
||||
{ "Name": "RTC 12.4\" Light Barrel", "Type": 5 },
|
||||
{ "Name": "RTC Steady Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "60 Round Reload", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Holger 26",
|
||||
"Type": 2,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light", "Type": 5 },
|
||||
{ "Name": "NO Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Holger-26C Lightweight Polymer Mag", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/540218400413188116/856109420311740436/Screenshot_20210620-151957.png?width=881&height=407"
|
||||
},
|
||||
{
|
||||
"Name": "Arctic .50",
|
||||
"Type": 4,
|
||||
"Attachments": [
|
||||
{ "Name": "OWC Light Suppressor", "Type": 4 },
|
||||
{ "Name": "Assassin Short", "Type": 5 },
|
||||
{ "Name": "OWC Skeleton Stock", "Type": 6 },
|
||||
{ "Name": "Stippled Grip Tape", "Type": 2 },
|
||||
{ "Name": "FMJ", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "DL Q33",
|
||||
"Type": 4,
|
||||
"Attachments": [
|
||||
{ "Name": "OWC Light Suppressor", "Type": 4 },
|
||||
{ "Name": "MIP Light", "Type": 5 },
|
||||
{ "Name": "YKM Combat Stock", "Type": 6 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "FMJ", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Locus",
|
||||
"Type": 4,
|
||||
"Attachments": [
|
||||
{ "Name": "OWC Light Suppressor", "Type": 4 },
|
||||
{ "Name": "YKM Lightweight Short", "Type": 5 },
|
||||
{ "Name": "OWC Skeleton Stock", "Type": 6 },
|
||||
{ "Name": "FMJ", "Type": 8 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/691133003866439701/861887618546139146/Screenshot_20210706-1357422.png?width=881&height=480"
|
||||
},
|
||||
{
|
||||
"Name": "M21 EBR",
|
||||
"Type": 4,
|
||||
"Attachments": [
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "NA-45",
|
||||
"Type": 4,
|
||||
"Attachments": [
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Outlaw",
|
||||
"Type": 4,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Memorial Cowboy", "Type": 5 },
|
||||
{ "Name": "MIP Stalker Stock", "Type": 6 },
|
||||
{ "Name": "Stippled Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "FMJ", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "XPR-50",
|
||||
"Type": 4,
|
||||
"Attachments": [
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Kilo Bolt-Action",
|
||||
"Type": 5,
|
||||
"Attachments": [
|
||||
{ "Name": "YKM Combat Stock", "Type": 5 },
|
||||
{ "Name": "Stippled Grip Tape", "Type": 2 },
|
||||
{ "Name": "Fast Reload", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/842014909264953354/852922652452454460/image0.png?width=1001&height=563"
|
||||
},
|
||||
{
|
||||
"Name": "SP-R 208",
|
||||
"Type": 5,
|
||||
"Attachments": [
|
||||
{ "Name": "RTC Light Barrel", "Type": 5 },
|
||||
{ "Name": "OWC Skeleton Stock", "Type": 6 },
|
||||
{ "Name": "Light Bolt", "Type": 9 },
|
||||
{ "Name": "Extended Mag A", "Type": 7 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/842014909264953354/852922699063885864/image0.png?width=1001&height=563"
|
||||
},
|
||||
{
|
||||
"Name": "SKS",
|
||||
"Type": 5,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Operator Foregrip", "Type": 1 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/842014909264953354/852922602674454538/image0.png?width=1001&height=563"
|
||||
},
|
||||
{
|
||||
"Name": "MK 2",
|
||||
"Type": 5,
|
||||
"Attachments": [
|
||||
{ "Name": "OWC Light Suppressor", "Type": 4 },
|
||||
{ "Name": "18.0 Sport Barrel", "Type": 5 },
|
||||
{ "Name": "MIP Sport Stock", "Type": 6 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "OWC Laser-Tactical", "Type": 3 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/540218400413188116/856114522922156082/Screenshot_20210620-153228.png?width=1283&height=592"
|
||||
},
|
||||
{
|
||||
"Name": "BY15",
|
||||
"Type": 3,
|
||||
"Attachments": [
|
||||
{ "Name": "Marauder Suppressor", "Type": 4 },
|
||||
{ "Name": "Extended Barrel(+2)", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Echo",
|
||||
"Type": 3,
|
||||
"Attachments": [
|
||||
{ "Name": "Choke", "Type": 4 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "Extended Mag C", "Type": 7 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "HS0405",
|
||||
"Type": 3,
|
||||
"Attachments": [
|
||||
{ "Name": "Choke", "Type": 4 },
|
||||
{ "Name": "RTC Extended Light Barrel", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 },
|
||||
{ "Name": "Speed Up Kill", "Type": 8 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/842014909264953354/852922783414616104/image0.png?width=1001&height=563"
|
||||
},
|
||||
{
|
||||
"Name": "HS2126",
|
||||
"Type": 3,
|
||||
"Attachments": [
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "KRM-262",
|
||||
"Type": 3,
|
||||
"Attachments": [
|
||||
{ "Name": "Marauder Suppressor", "Type": 4 },
|
||||
{ "Name": "Extended Barrel(+2)", "Type": 5 },
|
||||
{ "Name": "No Stock", "Type": 6 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Striker",
|
||||
"Type": 3,
|
||||
"Attachments": [
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 },
|
||||
{ "Name": "404", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": ".50 GS ",
|
||||
"Type": 6,
|
||||
"Attachments": [
|
||||
{ "Name": "Monolithic Suppressor", "Type": 4 },
|
||||
{ "Name": "Granulated Grip Tape", "Type": 2 },
|
||||
{ "Name": "Lightweight Trigger", "Type": 1 },
|
||||
{ "Name": "OWC Laser - Tactical", "Type": 3 },
|
||||
{ "Name": "Sleight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "J358",
|
||||
"Type": 6,
|
||||
"Attachments": [
|
||||
{ "Name": "RTC Light Muzzle Brake", "Type": 4 },
|
||||
{ "Name": "J358 Custom Light", "Type": 5 },
|
||||
{ "Name": "Red Dot Sight 2", "Type": 0 },
|
||||
{ "Name": "Stopping Power Reload", "Type": 7 },
|
||||
{ "Name": "Lightweight Trigger", "Type": 10 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/842014909264953354/852922819507126272/image0.png?width=1001&height=563"
|
||||
},
|
||||
{
|
||||
"Name": "MW11",
|
||||
"Type": 6,
|
||||
"Attachments": [
|
||||
{ "Name": "MIP Light Flash Guard", "Type": 4 },
|
||||
{ "Name": "Rubberized Grip Tape", "Type": 2 },
|
||||
{ "Name": "15 Round Reload", "Type": 7 },
|
||||
{ "Name": "Lightweight Trigger", "Type": 10 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 }
|
||||
],
|
||||
"URL": ""
|
||||
},
|
||||
{
|
||||
"Name": "Renetti",
|
||||
"Type": 6,
|
||||
"Attachments": [
|
||||
{ "Name": "RTC Compensator", "Type": 4 },
|
||||
{ "Name": "MIP Light", "Type": 5 },
|
||||
{ "Name": "Handmade Grip Tape", "Type": 2 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 },
|
||||
{ "Name": "Full Ammo", "Type": 8 }
|
||||
],
|
||||
"URL": "https://pbs.twimg.com/media/E2f2W6eXEAM1Yb1?format=jpg&name=large"
|
||||
},
|
||||
{
|
||||
"Name": "Shorty",
|
||||
"Type": 6,
|
||||
"Attachments": [
|
||||
{ "Name": "Marauder Suppressor", "Type": 4 },
|
||||
{ "Name": "RTC Steady Stock", "Type": 6 },
|
||||
{ "Name": "OWC Stable", "Type": 11 },
|
||||
{ "Name": "MIP Laser 5mW", "Type": 3 },
|
||||
{ "Name": "Slight of Hand", "Type": 8 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/692227531235000400/866204001065369620/image0.png?width=840&height=630"
|
||||
},
|
||||
{
|
||||
"Name": "Crossbow",
|
||||
"Type": 6,
|
||||
"Attachments": [
|
||||
{ "Name": "28 Bow String", "Type": 12 },
|
||||
{ "Name": "Heavy Limb", "Type": 13 },
|
||||
{ "Name": "Archer Stock", "Type": 6 },
|
||||
{ "Name": "Gas Grenade Bolt", "Type": 7 },
|
||||
{ "Name": "Full Ammo", "Type": 8 }
|
||||
],
|
||||
"URL": "https://media.discordapp.net/attachments/785461568464748593/882503628538126336/image0.png"
|
||||
}
|
||||
],
|
||||
"WeaponTypes": [
|
||||
"Assault",
|
||||
"SMG",
|
||||
"LMG",
|
||||
"Shotgun",
|
||||
"Sniper",
|
||||
"Marksman",
|
||||
"Pistol"
|
||||
],
|
||||
"AttachmentTypes": [
|
||||
"Optic",
|
||||
"Underbarrel",
|
||||
"Rear Grip",
|
||||
"Laser",
|
||||
"Muzzle",
|
||||
"Barrel",
|
||||
"Stock",
|
||||
"Ammunition",
|
||||
"Perk",
|
||||
"Bolt",
|
||||
"Trigger Action",
|
||||
"Guard",
|
||||
"Bowstring",
|
||||
"Limb"
|
||||
]
|
||||
}
|
26
util/Data/dares.json
Normal file
26
util/Data/dares.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
[
|
||||
"Shave your arms and send me a pic.",
|
||||
"Record yourself singing a song and post it on YouTube.",
|
||||
"Try to lick your own foot!",
|
||||
"Message someone you haven’t talked to in at least 1 year on Facebook or Instagram and take a screenshot.",
|
||||
"Text your crush and ask them out on a date.",
|
||||
"Cut a piece of your hair.",
|
||||
"List everyone as the emoji(s) you think best fits them.",
|
||||
"Change your nickname/username to whatever the group wants.",
|
||||
"Send me a screenshot of your messages with the last person besides me you texted.",
|
||||
"Brush your teeth with peanut butter or another condiment and send me a pic.",
|
||||
"Rate everyone here 1-10 in terms of personality.",
|
||||
"Take a really unflattering picture and make it your profile picture for one full day.",
|
||||
"Send me a screenshot of your selfies gallery.",
|
||||
"Text a random number and write “I see dead people”.",
|
||||
"Tell the group in detail about your first kiss.",
|
||||
"Tell a joke until it makes everyone laugh.",
|
||||
"Tell your girlfriend that your friends don’t like her so you can’t be with her anymore.",
|
||||
"Brush your teeth with your best friend’s toothbrush.",
|
||||
"Show everyone your unshaved legs.",
|
||||
"Break a raw egg on your forehead.",
|
||||
"Call 5 different people and talk to them in 5 different accents.",
|
||||
"Set your crush’s picture as your FB profile picture.",
|
||||
"Show everyone your search history for the past week."
|
||||
|
||||
]
|
1
util/Data/giveaways.json
Normal file
1
util/Data/giveaways.json
Normal file
|
@ -0,0 +1 @@
|
|||
[]
|
4102
util/Data/scam.json
Normal file
4102
util/Data/scam.json
Normal file
File diff suppressed because it is too large
Load diff
1
util/Data/skins.json
Normal file
1
util/Data/skins.json
Normal file
File diff suppressed because one or more lines are too long
63
util/Data/truth.json
Normal file
63
util/Data/truth.json
Normal file
|
@ -0,0 +1,63 @@
|
|||
[
|
||||
"When was the last time you lied?",
|
||||
"When was the last time you cried?",
|
||||
"What's your biggest fear?",
|
||||
"What's your biggest fantasy?",
|
||||
"Do you have any fetishes?",
|
||||
"What's something you're glad your mum doesn't know about you?",
|
||||
"Have you ever cheated on someone?",
|
||||
"What's the worst thing you've ever done?",
|
||||
"What's a secret you've never told anyone?",
|
||||
"Do you have a hidden talent?",
|
||||
"Who was your first celebrity crush?",
|
||||
"What are your thoughts on polyamory?",
|
||||
"What's the worst intimate experience you've ever had?",
|
||||
"What's the best intimate experience you've ever had?",
|
||||
"Have you ever cheated in an exam?",
|
||||
"What's the most drunk you've ever been?",
|
||||
"Have you ever broken the law?",
|
||||
"What's the most embarrassing thing you've ever done?",
|
||||
"What's your biggest insecurity?",
|
||||
"Have you ever stayed friends with someone because it benefitted you beyond just the friendship?",
|
||||
"What's the biggest mistake you've ever made?",
|
||||
"What's the most disgusting thing you've ever done?",
|
||||
"Who would you like to kiss in this room?",
|
||||
"What's one thing you hate people knowing about you?",
|
||||
"What's the worst thing anyone's ever done to you?",
|
||||
"What's the best thing anyone's ever done for you?",
|
||||
"Have you ever had a run in with the law?",
|
||||
"What's your worst habit?",
|
||||
"What's the most embarrassing thing you've done in a taxi?",
|
||||
"What's the worst thing you've ever said to anyone?",
|
||||
"Have you ever peed in the shower?",
|
||||
"What's the strangest dream you've had?",
|
||||
"Have you ever been caught doing something you shouldn't have?",
|
||||
"What's the worst date you've been on?",
|
||||
"What's the best date you've been on?",
|
||||
"What happened on the latest night out you've ever had?",
|
||||
"What's your biggest regret?",
|
||||
"What's the biggest misconception about you?",
|
||||
"Have you ever said something you regret about someone in this room?",
|
||||
"What's one thing you wish people knew about you?",
|
||||
"Where's the weirdest place you've had sex?",
|
||||
"Why did your last relationship break down?",
|
||||
"Have you ever lied to get out of a bad date?",
|
||||
"What's the most trouble you've been in?",
|
||||
"When did you last have sex outside?",
|
||||
"What's the worst thing you've lied about?",
|
||||
"What's one thing you wish you'd lied about?",
|
||||
"What's the best piece of advice you've been given?",
|
||||
"What's the most you've spent on a night out?",
|
||||
"Name a time you think you were a bad partner",
|
||||
"What's your guilty pleasure?",
|
||||
"What's one thing you only do when you're alone?",
|
||||
"If you had to get back with an ex, who would you choose?",
|
||||
"If you had to cut one friend out of your life, who would it be?",
|
||||
"Do you have a favourite friend?",
|
||||
"Do you have a favourite sibling?",
|
||||
"What's the strangest rumour you've heard about yourself?",
|
||||
"What's your biggest turn on?",
|
||||
"What's the silliest reason you've left a club early?",
|
||||
"What have you purchased that's been the biggest waste of money?",
|
||||
"If you could swap lives with someone in this room, who would it be?"
|
||||
]
|
45
util/dist/handler.js
vendored
45
util/dist/handler.js
vendored
|
@ -28,28 +28,27 @@ module.exports = async client => {
|
|||
ownercmds.push(file);
|
||||
});
|
||||
client.on("ready", async () => {
|
||||
await client.guilds.cache.get("840225563193114624").commands.set(ownercmds);
|
||||
await client.application.commands.set(cmds);
|
||||
// .then(async cmd => {
|
||||
// client.guilds.cache.forEach(g => {
|
||||
// const getroles = name => {
|
||||
// const perms = cmds.find(n => n.name == name).UserPerms;
|
||||
// if (!perms) return null;
|
||||
// return g.roles.cache.filter(
|
||||
// z => z.permissions.has(perms) && !z.managed
|
||||
// );
|
||||
// };
|
||||
// const fullPermissions = cmd.reduce((accumulator, v) => {
|
||||
// const roles = getroles(v.name);
|
||||
// if (!roles) return accumulator;
|
||||
// const permissions = roles.reduce((a, w) => {
|
||||
// return [...a, { id: w.id, type: "ROLE", permission: true }];
|
||||
// }, []);
|
||||
// return [...accumulator, { id: v.id, permissions }];
|
||||
// }, []);
|
||||
// g.commands.permissions.set({ fullPermissions }).catch(null);
|
||||
// });
|
||||
// })
|
||||
// .catch(null);
|
||||
const gg = client.guilds.cache.get("840225563193114624");
|
||||
await gg.commands.set(ownercmds);
|
||||
await client.application.commands.set(cmds).then(async cmd => {
|
||||
client.guilds.cache.forEach(g => {
|
||||
const getroles = name => {
|
||||
const perms = cmds.find(n => n.name == name).UserPerms;
|
||||
if (!perms) return null;
|
||||
return g.roles.cache.filter(
|
||||
z => z.permissions.has(perms) && !z.managed
|
||||
);
|
||||
};
|
||||
const fullPermissions = cmd.reduce((accumulator, v) => {
|
||||
const roles = getroles(v.name);
|
||||
if (!roles) return accumulator;
|
||||
const permissions = roles.reduce((a, w) => {
|
||||
return [...a, { id: w.id, type: "ROLE", permission: true }];
|
||||
}, []);
|
||||
return [...accumulator, { id: v.id, permissions }];
|
||||
}, []);
|
||||
g.commands.permissions.set({ fullPermissions });
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -408,7 +408,7 @@ function tips(interaction, client) {
|
|||
const all = [
|
||||
"You can report bugs by using `/report` and send a suggestion by `/suggest` !",
|
||||
"If a gun isn't there, please be paitent and wait for the us to get the stats",
|
||||
"We all recruiting for Javascript bot developers (Total: 4) Please DM the bot for more info",
|
||||
"We all recruiting for bot developers (Total: 4) Please DM the bot for more info",
|
||||
];
|
||||
const ran = Math.floor(Math.random() * 50) + 2;
|
||||
const rTip = all[Math.floor(Math.random() * all.length)];
|
||||
|
@ -503,7 +503,6 @@ const leven = (te, t) => {
|
|||
function chunk(arr, size) {
|
||||
Array.from({ length: Math.ceil(arr.length / size) }, (v, i) => {
|
||||
arr.slice(i * size, i * size + size);
|
||||
return arr;
|
||||
});
|
||||
}
|
||||
function progressBar(value, maxValue, size) {
|
||||
|
|
Loading…
Reference in a new issue