nyx

The first CODM discrod bot -- cath.exe Template
git clone https://codeberg.org/night0721/nyx
Log | Files | Refs | LICENSE

commit 5015b7a9dcfbe6a6d75f942c36e955a6487cbe49
parent eabc27286b3d4e338acd0821d52c5af2e567716a
Author: NK <[email protected]>
Date:   Tue, 31 Jan 2023 14:06:38 +0000

remove unused things due to copyright

Diffstat:
Mclient/NYX.js | 12++++++------
Mcommand/CODM/scorestreak.js | 1-
Mpackage.json | 8++++----
Dunused/client/CodeClient.js | 2--
Dunused/client/GiveawaysClient.js | 38--------------------------------------
Dunused/client/StarboardClient.js | 6------
Dunused/client/URLClient.js | 2--
Dunused/cmds.js | 39---------------------------------------
Dunused/commands/Config/choices.js | 125-------------------------------------------------------------------------------
Dunused/commands/Config/cmd-list.js | 20--------------------
Dunused/commands/Config/create.js | 429-------------------------------------------------------------------------------
Dunused/commands/Config/delete.js | 20--------------------
Dunused/commands/Config/migrate.js | 21---------------------
Dunused/commands/Config/modmail-category.js | 33---------------------------------
Dunused/commands/Config/modmail-role.js | 30------------------------------
Dunused/commands/Economy/bal.js | 32--------------------------------
Dunused/commands/Economy/bet.js | 87-------------------------------------------------------------------------------
Dunused/commands/Economy/blackjack.js | 307-------------------------------------------------------------------------------
Dunused/commands/Economy/buy.js | 103-------------------------------------------------------------------------------
Dunused/commands/Economy/daily.js | 49-------------------------------------------------
Dunused/commands/Economy/gift.js | 136-------------------------------------------------------------------------------
Dunused/commands/Economy/give.js | 72------------------------------------------------------------------------
Dunused/commands/Economy/gun.js | 123-------------------------------------------------------------------------------
Dunused/commands/Economy/inv.js | 67-------------------------------------------------------------------
Dunused/commands/Economy/multiplier.js | 47-----------------------------------------------
Dunused/commands/Economy/profile.js | 52----------------------------------------------------
Dunused/commands/Economy/rich.js | 50--------------------------------------------------
Dunused/commands/Economy/shop.js | 78------------------------------------------------------------------------------
Dunused/commands/Economy/slots.js | 130-------------------------------------------------------------------------------
Dunused/commands/Economy/steal.js | 151------------------------------------------------------------------------------
Dunused/commands/Economy/work.js | 40----------------------------------------
Dunused/commands/Moderation/ban.js | 112-------------------------------------------------------------------------------
Dunused/commands/Moderation/kick.js | 61-------------------------------------------------------------
Dunused/commands/Moderation/lock.js | 53-----------------------------------------------------
Dunused/commands/Moderation/mute.js | 122-------------------------------------------------------------------------------
Dunused/commands/Moderation/nuke.js | 67-------------------------------------------------------------------
Dunused/commands/Moderation/purge.js | 85-------------------------------------------------------------------------------
Dunused/commands/Moderation/role.js | 65-----------------------------------------------------------------
Dunused/commands/Moderation/slowmode.js | 107-------------------------------------------------------------------------------
Dunused/commands/Moderation/unban.js | 37-------------------------------------
Dunused/commands/Moderation/unmute.js | 42------------------------------------------
Dunused/commands/Moderation/warn.js | 276-------------------------------------------------------------------------------
Dunused/commands/Music/bassboost.js | 53-----------------------------------------------------
Dunused/commands/Music/clearqueue.js | 24------------------------
Dunused/commands/Music/disconnect.js | 25-------------------------
Dunused/commands/Music/grab.js | 55-------------------------------------------------------
Dunused/commands/Music/loop.js | 53-----------------------------------------------------
Dunused/commands/Music/move.js | 50--------------------------------------------------
Dunused/commands/Music/nowplaying.js | 64----------------------------------------------------------------
Dunused/commands/Music/pause.js | 29-----------------------------
Dunused/commands/Music/play.js | 145-------------------------------------------------------------------------------
Dunused/commands/Music/queue.js | 114-------------------------------------------------------------------------------
Dunused/commands/Music/remove.js | 42------------------------------------------
Dunused/commands/Music/resume.js | 28----------------------------
Dunused/commands/Music/seek.js | 53-----------------------------------------------------
Dunused/commands/Music/shuffle.js | 27---------------------------
Dunused/commands/Music/skip.js | 38--------------------------------------
Dunused/commands/Music/volume.js | 37-------------------------------------
Dunused/commands/Utilities/add.js | 68--------------------------------------------------------------------
Dunused/commands/Utilities/afk.js | 38--------------------------------------
Dunused/commands/Utilities/codebin.js | 17-----------------
Dunused/commands/Utilities/draw.js | 85-------------------------------------------------------------------------------
Dunused/commands/Utilities/emoji.js | 83-------------------------------------------------------------------------------
Dunused/commands/Utilities/emojiadd.js | 38--------------------------------------
Dunused/commands/Utilities/emojify.js | 44--------------------------------------------
Dunused/commands/Utilities/esnipe.js | 131-------------------------------------------------------------------------------
Dunused/commands/Utilities/giveaway.js | 144-------------------------------------------------------------------------------
Dunused/commands/Utilities/lyrics.js | 58----------------------------------------------------------
Dunused/commands/Utilities/modmail.js | 166-------------------------------------------------------------------------------
Dunused/commands/Utilities/nsfw.js | 150-------------------------------------------------------------------------------
Dunused/commands/Utilities/ship.js | 41-----------------------------------------
Dunused/commands/Utilities/shorturl.js | 35-----------------------------------
Dunused/commands/Utilities/snipe.js | 125-------------------------------------------------------------------------------
Dunused/err.js | 227-------------------------------------------------------------------------------
Dunused/events/afk.js | 25-------------------------
Dunused/events/messageDelete.js | 26--------------------------
Dunused/events/messageUpdate.js | 28----------------------------
Dunused/events/raw.js | 2--
Dunused/events/starboard.js | 8--------
Dunused/events/voiceStateUpdate.js | 63---------------------------------------------------------------
Dunused/models/custom-commands.js | 11-----------
Dunused/models/modmail.js | 11-----------
82 files changed, 10 insertions(+), 5788 deletions(-)

diff --git a/client/NYX.js b/client/NYX.js @@ -32,12 +32,12 @@ class NYX extends Client { ], intents: [ GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.MessageContent, - GatewayIntentBits.GuildPresences, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.GuildMessageReactions, - GatewayIntentBits.GuildMessageTyping, + // GatewayIntentBits.GuildMembers, + // GatewayIntentBits.MessageContent, + // GatewayIntentBits.GuildPresences, + // GatewayIntentBits.GuildMessages, + // GatewayIntentBits.GuildMessageReactions, + // GatewayIntentBits.GuildMessageTyping, ], } ) { diff --git a/command/CODM/scorestreak.js b/command/CODM/scorestreak.js @@ -3,7 +3,6 @@ const c = require("../../client/CODMClient"); module.exports = { name: "scorestreak", description: "Get Scorestreak stats", - usage: "{Scorestreak}", category: "CODM", options: [ diff --git a/package.json b/package.json @@ -41,12 +41,12 @@ }, "dependencies": { "axios": "^1.1.3", - "cath": "^1.4.7", + "cath": "^1.5.0", "discord.js": "^14.6.0", - "dotenv": "^16.0.0", + "dotenv": "^16.0.3", "goosecache": "^9.0.14", - "moment": "^2.29.1", + "moment": "^2.29.4", "mongoose": "^5.13.14", - "quickchart-js": "^3.0.0" + "quickchart-js": "^3.1.0" } } diff --git a/unused/client/CodeClient.js b/unused/client/CodeClient.js @@ -1,2 +0,0 @@ -const { CodeClient } = require("cath"); -module.exports = new CodeClient(); diff --git a/unused/client/GiveawaysClient.js b/unused/client/GiveawaysClient.js @@ -1,38 +0,0 @@ -const { GiveawaysClient } = require("cath"); -const client = require("../.."); -require("dotenv").config(); -module.exports = new GiveawaysClient({ - client, - MongooseConnectionURI: process.env.MONGO, - GiveawayMessages: { - dmWinner: true, - giveaway: "šŸŽ‰ **GIVEAWAY** šŸŽ‰", - giveawayDescription: - "šŸŽ Prize: **{award}**\nšŸŽŠ Hosted by: {hostedBy}\nā²ļø Winner(s): `{winners}` \nšŸ™ Entrants: {totalParticipants} \n\n**Requirements:** {requirements}", - endedGiveawayDescription: - "šŸŽ Prize: **{award}**\nšŸŽŠ Hosted by: {hostedBy}\nā²ļø Winner(s): {winners} \nšŸ™ Entrants: {totalParticipants}", - giveawayFooterImage: "https://emoji.gg/assets/emoji/3461-giveaway.gif", - winMessage: - "Congratulations {winners}! You have won **{award}** from total `{totalParticipants}` entrants!", - rerolledMessage: "Rerolled! {winner} is the new winner of the giveaway!", - toParticipate: "**Click the `Enter` button to enter the giveaway!**", - newParticipant: - "You have successfully entered for this giveaway! There are total `{totalParticipants}` entrants", - alreadyParticipated: "**You have already participated in this giveaway!**", - noParticipants: "There isn't enough entrant in this giveaway!", - noRole: - "You don't have the required role(s)\n{requiredRoles}\n for the giveaway!", - dmMessage: - "You have won a giveaway in **{guildName}**!\nPrize: [{award}]({giveawayURL})", - noWinner: - "There isn't any winner in this giveaway due to not enough entrants", - alreadyEnded: "The giveaway had already ended!", - dropWin: "{winner} Won The Drop!!", - noWeeklyExp: - "you dont have the required minimum weekly xp to join this giveaway", - noLevel: "You dont have the minimum required level to join this giveaway", - nonoRole: - "You do not have the {requiredRoles} role(s) which is required to join this giveaway", - editParticipants: true, - }, -}); diff --git a/unused/client/StarboardClient.js b/unused/client/StarboardClient.js @@ -1,6 +0,0 @@ -const { StarboardClient } = require("cath"); -const client = require("../.."); -module.exports = new StarboardClient({ - client, - color: client.color, -}); diff --git a/unused/client/URLClient.js b/unused/client/URLClient.js @@ -1,2 +0,0 @@ -const { URLClient } = require("cath"); -module.exports = new URLClient(); diff --git a/unused/cmds.js b/unused/cmds.js @@ -1,39 +0,0 @@ -const { readdirSync } = require("fs"); -const utils = require("../util/functions/function"); -function cmds() { - const categories = []; - readdirSync("./commands").forEach(dir => { - const dirs = readdirSync(`./commands/${dir}`).filter(file => - file.endsWith(".js") - ); - const commands = []; - dirs.map(cmd => { - const file = require(`../../commands/${dir}/${cmd}`); - commands.push({ - name: file.name ? file.name : "No command name", - description: file.description - ? file.description - : "No command description", - aliases: file.aliases ? file.aliases : "No command aliases", - usage: file.usage ? `C.${file.name} ${file.usage}` : `C.${file.name}`, - timeout: file.timeout - ? utils.ms(file.timeout, { long: true }) - : "No command cooldown", - BotPermission: file.BotPerms - ? file.BotPerms - : "No required bot permission", - UserPermission: file.UserPerms - ? file.UserPerms - : "No required user permission", - status: file.status ? file.status : true, - }); - }); - const data = { - name: dir, - commands, - }; - categories.push(data); - }); - return categories; -} -module.exports = { cmds }; diff --git a/unused/commands/Config/choices.js b/unused/commands/Config/choices.js @@ -1,125 +0,0 @@ -const schema = require("../../models/modmail"); -module.exports = { - name: "choices", - UserPerm: "ADMINISTRATOR", - description: "Add choices for modmail in a server", - usage: "(add/list/rmv) (Emoji) {Text}", - category: "Config", - run: async (client, message, args) => { - schema.findOne({ Guild: message.guild.id }, async (err, data) => { - if (data) {return;} - else { - new schema({ - Guild: message.guild.id, - }).save(); - } - }); - if (args[0].toLowerCase() === "add") { - if (!args[1]) return client.err(message, "Config", "choices", 11); - if (!args[2]) return client.err(message, "Config", "choices", 12); - if (!args.slice(2).join(" ").length > 100) {return client.err(message, "Config", "choices", 13);} - const config = await schema.findOne({ Guild: message.guild.id }); - if ( - !config || - !config.Choices || - !Object.entries(config.Choices).length - ) { - const choices = { - 0: { - emoji: args[1], - text: args.slice(2).join(" "), - }, - }; - schema.findOne({ Guild: message.guild.id }, async (err, data) => { - if (data) { - if (data.Choices) { - data.Choices = choices; - await schema.findOneAndUpdate({ Guild: message.guild.id }, data); - } - else if (data.Guild) { - data.Choices = choices; - await schema.findOneAndUpdate({ Guild: message.guild.id }, data); - } - else { - new schema({ - Guild: message.guild.id, - Choices: choices, - }).save(); - } - } - }); - return message.channel.send({ - content: `${message.author.tag} has added ${args[1]} as a modmail choice`, - }); - } - else { - const choices = Object.entries(config.Choices); - if (choices.length >= 5) {return client.err(message, "Config", "choices", 14);} - const last = choices[choices.length - 1]; - const parsed = config.Choices; - parsed[(parseInt(last[0]) + 1).toString()] = { - emoji: args[1], - text: args.slice(2).join(" "), - }; - schema.findOne({ Guild: message.guild.id }, async (err, data) => { - if (data) { - data.Choices = parsed; - await schema.findOneAndUpdate({ Guild: message.guild.id }, data); - } - else { - new schema({ - Guild: message.guild.id, - Choices: parsed, - }).save(); - } - }); - return message.channel.send({ - content: `${message.author.tag} has added ${args[1]} as a modmail choice`, - }); - } - } - if (args[0].toLowerCase() === "list") { - const Data = await schema.findOne({ Guild: message.guild.id }); - if (!Data || !Data.Choices || !Object.entries(Data.Choices).length) {return client.err(message, "Config", "choices", 10);} - else { - return message.channel.send( - Object.entries(Data.Choices) - .map(value => { - return `${value[1].emoji}: ${value[1].text}`; - }) - .join("\n"), - ); - } - } - if (args[0].toLowerCase() === "rmv") { - if (!args[1]) return client.err(message, "Config", "choices", 11); - schema.findOne({ Guild: message.guild.id }, async (err, data) => { - if (!data || !data.Choices || !Object.entries(data.Choices).length) {return client.err(message, "Config", "choices", 10);} - const choices = Object.entries(data.Choices); - const found = choices.find(value => value[1].emoji == args[1]); - if (!found) return client.err(message, "Config", "choices", 15); - const filtered = choices.filter(value => value[1].emoji != args[1]); - const parsed = {}; - filtered.map(value => { - parsed[value[0]] = { - emoji: value[1].emoji, - text: value[1].text, - }; - }); - if (data) { - data.Choices = parsed; - await schema.findOneAndUpdate({ Guild: message.guild.id }, data); - } - else { - new schema({ - Guild: message.guild.id, - Choices: parsed, - }).save(); - } - }); - return message.channel.send({ - content: `${args[1]} is removed from choices.`, - }); - } - }, -}; diff --git a/unused/commands/Config/cmd-list.js b/unused/commands/Config/cmd-list.js @@ -1,20 +0,0 @@ -const schema = require("../../models/custom-commands"); -const { EmbedBuilder } = require("discord.js"); - -module.exports = { - name: "cc-list", - UserPerm: "ADMINISTRATOR", - description: "Check the custom commands in a server", - category: "Config", - run: async (client, message, args) => { - const data = await schema.find({ Guild: message.guild.id }); - if (!!data === false) return client.err(messgae, "Config", "cmd-list", 10); - message.channel.send( - new EmbedBuilder() - .setColor(client.color) - .setDescription( - data.map((cmd, i) => `${i + 1}: ${cmd.Command}`).join("\n") - ) - ); - }, -}; diff --git a/unused/commands/Config/create.js b/unused/commands/Config/create.js @@ -1,429 +0,0 @@ -const Discord = require("discord.js"); -const db = require("../../models/custom-commands"); - -module.exports = { - name: "cc-create", - UserPerm: "ADMINISTRATOR", - description: "Crate custom commands for a server", - category: "Config", - run: async (client, message, args) => { - message.delete(); - message.channel.send( - new Discord.EmbedBuilder() - .setTitle(`Setup | 1/3`) - .setDescription( - "What is the name of the command?\nYou can cancel the setup at any time by sending `cancel`." - ) - .setColor(client.color) - ); - await startMessageCollectors(client, message, args); - function startMessageCollectors(client, message, args) { - const nameFilter = m => m.author.id === message.author.id; - const nameCollector = new Discord.MessageCollector( - message.channel, - nameFilter, - { max: 999 } - ); - nameCollector.on("collect", async msg => { - const name = msg.content.toLowerCase(); - const data = await db.findOne({ - Guild: message.guild.id, - Command: name, - }); - if (data) { - nameCollector.stop(); - return message.reply("This command has already exist."); - } - if (name === "cancel") { - msg.channel.send("The setup has been cancelled."); - db.findOneAndDelete({ Guild: message.guild.id, Command: name }); - nameCollector.stop(); - return; - } - if (!name) { - await msg.channel.send("You don't specify a name. Cancelled setup."); - nameCollector.stop(); - return; - } else { - const newDB = new db({ - Guild: message.guild.id, - Command: name, - }); - await newDB.save(); - console.log(newDB); - msg.channel.send( - new Discord.EmbedBuilder() - .setTitle(`Setup | 2/3`) - .setDescription( - `The command name will be **${name}**.\nWhat is the response for the command? You can have mutliple response by joning them with differnt lines.` - ) - .setColor(client.color) - ); - nameCollector.stop(); - } - const responseFilter = m => m.author.id === message.author.id; - const responseCollector = new Discord.MessageCollector( - message.channel, - responseFilter, - { max: 999 } - ); - responseCollector.on("collect", async msg => { - const response = msg.content.split("\n"); - console.log(`Response: ${response}`); - - if (msg.content.toLowerCase() === "cancel") { - msg.channel.send("The setup has been cancelled."); - responseCollector.stop(); - return; - } - if (!response) { - msg.channel.send(`You didn't specify a response. Setup cancelled.`); - responseCollector.stop(); - } - if (response.length > 1) { - responseCollector.stop(); - await db.findOne( - { Guild: message.guild.id, Command: name }, - async (err, data) => { - if (data) { - data.Response = response; - await db.findOneAndUpdate( - { Guild: message.guild.id, Command: name }, - data - ); - console.log(data); - } - } - ); - msg.channel.send( - new Discord.EmbedBuilder() - .setTitle(`Setup | 3/4`) - .setColor(client.color) - .setDescription( - `Ok so there will be ${response.length} responses. Do you want the response be randomized?\n\`Type yes or no\` \nIf you choose no, accumlative responses may let the command can\'t be sent out.` - ) - ); - const randomFilter = m => m.author.id === message.author.id; - const randomCollector = new Discord.MessageCollector( - message.channel, - randomFilter, - { max: 999 } - ); - randomCollector.on("collect", async msg => { - let maybe; - if (msg.content.toLowerCase() === "yes") { - msg.channel.send( - new Discord.EmbedBuilder() - .setColor(client.color) - .setTitle(`Setup | 4/4`) - .setDescription( - `The responses will be randomized. Do you want to have delete command usage? \`Type yes or no\`` - ) - ); - randomCollector.stop(); - maybe = true; - await db.findOne( - { - Guild: message.guild.id, - Response: response, - Command: name, - }, - async (err, data) => { - if (data) { - data.Random = maybe; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - data - ); - console.log(data); - } - } - ); - console.log(`Random: ${maybe}`); - const deleteeeFilter = m => m.author.id === message.author.id; - const deleteeeCollector = new Discord.MessageCollector( - message.channel, - deleteeeFilter, - { max: 999 } - ); - deleteeeCollector.on("collect", async msg => { - let idkwor; - if (msg.content.toLowerCase() === "yes") { - deleteeeCollector.stop(); - idkwor = true; - await db.findOne( - { - Guild: message.guild.id, - Command: name, - Response: response, - Random: maybe, - }, - async (err, data) => { - if (data) { - data.Delete = idkwor; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - Random: maybe, - }, - data - ); - console.log(data); - msg.reply( - `Saved **${data.Command}** as a custom command` - ); - } - } - ); - console.log(`Usage Delete: ${idkwor}`); - } - if (msg.content.toLowerCase() === "no") { - deleteeeCollector.stop(); - idkwor = false; - await db.findOne( - { - Guild: message.guild.id, - Command: name, - Response: response, - Random: maybe, - }, - async (err, data) => { - if (data) { - data.Delete = idkwor; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - Random: maybe, - }, - data - ); - console.log(data); - msg.reply( - `Saved **${data.Command}** as a custom command` - ); - } - } - ); - } - if (msg.content.toLowerCase() === "cancel") { - msg.channel.send("The setup has been cancelled."); - deleteeeCollector.stop(); - return; - } - }); - } - if (msg.content.toLowerCase() === "no") { - msg.channel.send( - new Discord.EmbedBuilder() - .setColor(client.color) - .setTitle(`Setup | 4/4`) - .setDescription( - `The responses won't be randomized. Do you want to have delete command usage? \`Type yes or no\`` - ) - ); - randomCollector.stop(); - maybe = false; - await db.findOne( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - async (err, data) => { - if (data) { - data.Random = maybe; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - data - ); - console.log(data); - } - } - ); - const deleteeFilter = m => m.author.id === message.author.id; - const deleteeCollector = new Discord.MessageCollector( - message.channel, - deleteeFilter, - { max: 999 } - ); - deleteeCollector.on("collect", async msg => { - let idkwor; - if (msg.content.toLowerCase() === "yes") { - deleteeCollector.stop(); - idkwor = true; - await db.findOne( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - async (err, data) => { - if (data) { - data.Delete = idkwor; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - Random: maybe, - }, - data - ); - msg.reply( - `Saved **${data.Command}** as a custom command` - ); - } - } - ); - console.log(`Usage Delete: ${idkwor}`); - } - if (msg.content.toLowerCase() === "no") { - deleteeCollector.stop(); - idkwor = false; - await db.findOne( - { - Guild: message.guild.id, - Command: name, - Response: response, - Random: maybe, - }, - async (err, data) => { - if (data) { - data.Delete = idkwor; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - data - ); - msg.reply( - `Saved **${data.Command}** as a custom command` - ); - } - } - ); - } - if (msg.content.toLowerCase() === "cancel") { - msg.channel.send("The setup has been cancelled."); - deleteeCollector.stop(); - return; - } - }); - } - if (msg.content.toLowerCase() === "cancel") { - msg.channel.send("The setup has been cancelled."); - randomCollector.stop(); - return; - } - }); - } else { - await db.findOne( - { Guild: message.guild.id, Command: name }, - async (err, data) => { - if (data) { - data.Response = response; - await db.findOneAndUpdate( - { Guild: message.guild.id, Command: name }, - data - ); - console.log(data); - } - } - ); - msg.channel.send( - new Discord.EmbedBuilder() - .setTitle(`Setup | 3/3`) - .setColor(client.color) - .setDescription( - `The response is \n**${response}**\nDo you to want have delete command usage?` - ) - ); - responseCollector.stop(); - const deleteFilter = m => m.author.id === message.author.id; - const deleteCollector = new Discord.MessageCollector( - message.channel, - deleteFilter, - { max: 999 } - ); - deleteCollector.on("collect", async msg => { - let idkwor; - if (msg.content.toLowerCase() === "yes") { - deleteCollector.stop(); - idkwor = true; - await db.findOne( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - async (err, data) => { - if (data) { - data.Delete = idkwor; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - data - ); - msg.reply( - `Saved **${data.Command}** as a custom command` - ); - } - } - ); - } - if (msg.content.toLowerCase() === "no") { - deleteCollector.stop(); - idkwor = false; - await db.findOne( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - async (err, data) => { - if (data) { - data.Delete = idkwor; - await db.findOneAndUpdate( - { - Guild: message.guild.id, - Command: name, - Response: response, - }, - data - ); - msg.reply( - `Saved **${data.Command}** as a custom command` - ); - } - } - ); - } - if (msg.content.toLowerCase() === "cancel") { - msg.channel.send("The setup has been cancelled."); - deleteCollector.stop(); - return; - } - }); - } - }); - }); - } - }, -}; diff --git a/unused/commands/Config/delete.js b/unused/commands/Config/delete.js @@ -1,20 +0,0 @@ -const schema = require("../../models/custom-commands"); - -module.exports = { - name: "cc-delete", - UserPerm: "ADMINISTRATOR", - usage: "(command)", - description: "Delete a custom command for a server", - category: "Config", - run: async (client, message, args) => { - const name = args[0]; - if (!name) return client.err(message, "Config", "cc-delete", 47); - const data = await schema.findOne({ - Guild: message.guild.id, - Command: name, - }); - if (!data) return client.err(message, "Config", "cc-delete", 404); - await schema.findOneAndDelete({ Guild: message.guild.id, Command: name }); - message.reply(`Removed **${name}** from custom commands.`); - }, -}; diff --git a/unused/commands/Config/migrate.js b/unused/commands/Config/migrate.js @@ -1,21 +0,0 @@ -const { Client, Message, EmbedBuilder } = require("discord.js"); -module.exports = { - name: "migrate", - usage: "(Server ID)", - description: "Migrate all emojis from a server", - category: "Config", - run: async (client, message, args) => { - try { - const oldGuild = args[0]; - if (!oldGuild) return; - old = client.guilds.cache.get(oldGuild); - if (!old) return client.err(message, "Config", "migrate", 404); - await old.emojis.cache.map(async e => { - await message.guild.emojis.create(e.url, e.name); - }); - return message.channel.send(`Created Emotes.`); - } catch (e) { - console.log(e); - } - }, -}; diff --git a/unused/commands/Config/modmail-category.js b/unused/commands/Config/modmail-category.js @@ -1,33 +0,0 @@ -const schema = require("../../models/modmail"); -const { Client, Message, EmbedBuilder } = require("discord.js"); - -module.exports = { - name: "modmail-category", - UserPerm: "ADMINISTRATOR", - description: "Setup modmail category in a server", - usage: "(Category ID)", - category: "Config", - run: async (client, message, args) => { - if (!args.length) { - return client.err(message, "Config", "modmail-category", 0); - } - const category = message.guild.channels.cache.find( - ch => (ch.type = "GUILD_CATEGORY" && ch.id == args[0]) - ); - if (!category) return client.err(message, "Config", "modmail-category", 1); - schema.findOne({ Guild: message.guild.id }, async (err, data) => { - if (data) { - data.Category = category.id; - await schema.findOneAndUpdate({ Guild: message.guild.id }, data); - } else { - new schema({ - Guild: message.guild.id, - Category: category.id, - }).save(); - } - }); - return message.channel.send({ - content: `**Saved category to ${category.name}**`, - }); - }, -}; diff --git a/unused/commands/Config/modmail-role.js b/unused/commands/Config/modmail-role.js @@ -1,30 +0,0 @@ -const schema = require("../../models/modmail"); - -module.exports = { - name: "modmail-role", - UserPerm: "ADMINISTRATOR", - description: "Add role for modmail in a server", - usage: "(Role)", - category: "Config", - run: async (client, message, args) => { - if (!args.length) return client.err(message, "Config", "modmail-role", 0); - const role = - message.mentions.roles.first() || message.guild.roles.cache.get(args[0]); - if (!role) return client.err(message, "Config", "modmail-role", 404); - schema.findOne({ Guild: message.guild.id }, async (err, data) => { - if (data) { - data.Role = role.id; - await schema.findOneAndUpdate({ Guild: message.guild.id }, data); - } - else { - new schema({ - Guild: message.guild.id, - Role: role.id, - }).save(); - } - }); - return message.channel.send({ - content: `Updated **${role.name}** as the modmail role`, - }); - }, -}; diff --git a/unused/commands/Economy/bal.js b/unused/commands/Economy/bal.js @@ -1,32 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "balance", - description: "Show an user's balance", - usage: "(User)", - category: "Economy", - 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 bal = await client.bal(user.id); - const embed = new EmbedBuilder() - .setTitle(`${user.displayName}'s Balance`) - .setDescription(`**${bal}** ${client.currency}`) - .setColor(client.color) - .setURL(client.web) - .setTimestamp() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }); - interaction.followUp({ embeds: [embed] }); - }, -}; diff --git a/unused/commands/Economy/bet.js b/unused/commands/Economy/bet.js @@ -1,87 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const { bool } = require("cath"); -module.exports = { - name: "bet", - usage: "(Number)", - timeout: 5000, - description: "Win double amount of coins or lose all coins", - category: "Economy", - options: [ - { - type: 4, - name: "cp", - description: "The number of CP you want to bet", - required: true, - }, - ], - run: async (client, interaction, args) => { - const max = 100000; - let amt = args[0]; - if (amt > max) amt = max; - const winamt = amt * 2; - if (args[0] < 100) { - interaction.followUp({ - content: `You need to bet at least 100${client.currency}`, - }); - } else if ((await client.bal(interaction.user.id)) < amt) { - interaction.followUp({ content: "You don't have enough balance" }); - } else if (bool()) { - const multi = (await client.multi(interaction)) / 10 + 1; - await client.add(interaction.user.id, winamt, interaction); - await client.ADDBWin(interaction.user.id); - const abc = new EmbedBuilder() - .setColor("GREEN") - .setTimestamp() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTitle(`${interaction.user.username} wins a gamble game`) - .addFields( - { - name: "Won", - value: `**${Math.round(winamt * multi)}**${client.currency}`, - inline: true, - }, - { - name: "New Balance", - value: `**${Math.round( - (await client.bal(interaction.user.id)) + winamt * multi - )}**${client.currency}`, - inline: true, - }, - { - name: "Multiplier", - value: `x${2 + multi}`, - inline: true, - } - ); - interaction.followUp({ embeds: [abc] }); - } else { - await client.rmv(interaction.user.id, amt); - const cba = new EmbedBuilder() - .setColor("RED") - .setTimestamp() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTitle(`${interaction.user.username} loses a gamble game`) - .addFields( - { - name: "Lost", - value: `**${amt}**${client.currency}`, - inline: true, - }, - { - name: "New Balance", - value: `**${ - parseInt(await client.bal(interaction.user.id)) - amt - }**${client.currency}`, - inline: true, - } - ); - interaction.followUp({ embeds: [cba] }); - } - }, -}; diff --git a/unused/commands/Economy/blackjack.js b/unused/commands/Economy/blackjack.js @@ -1,307 +0,0 @@ -const Discord = require("discord.js"); -module.exports = { - name: "blackjack", - usage: "(Number)", - description: "Play a blackjack game to win money", - category: "Economy", - timeout: 10000, - options: [ - { - type: 4, - name: "cp", - description: "The number of CP you want to give", - required: true, - }, - ], - run: async (client, interaction, args) => { - let money = args[0]; - const max = 100000; - if (money > max) money = max; - const user = interaction.user; - if (money < 100) { - interaction.followUp({ - content: `You need to blackjack at least 100 ${client.currency}`, - }); - } else if ((await client.bal(user.id)) < money) { - interaction.followUp({ content: "You don't have enough balance" }); - } else { - let numCardsPulled = 0; - let gameOver = false; - const player = { - cards: [], - score: 0, - }; - const dealer = { - cards: [], - score: 0, - }; - function getCardsValue(a) { - let cardArray = [], - sum = 0, - i = 0, - dk = 10.5, - doubleking = "QQ", - aceCount = 0; - cardArray = a; - for (i; i < cardArray.length; i += 1) { - if ( - cardArray[i].rank === "J" || - cardArray[i].rank === "Q" || - cardArray[i].rank === "K" - ) { - sum += 10; - } else if (cardArray[i].rank === "A") { - sum += 11; - aceCount += 1; - } else if (cardArray[i].rank === doubleking) { - sum += dk; - } else { - sum += cardArray[i].rank; - } - } - while (aceCount > 0 && sum > 21) { - sum -= 10; - aceCount -= 1; - } - return sum; - } - - const deck = { - deckArray: [], - initialize: function () { - let suitArray, rankArray, s, r, n; - suitArray = ["b", "d", "g", "s"]; - rankArray = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]; - n = 13; - - for (s = 0; s < suitArray.length; s += 1) { - for (r = 0; r < rankArray.length; r += 1) { - this.deckArray[s * n + r] = { - rank: rankArray[r], - suit: suitArray[s], - }; - } - } - }, - shuffle: function () { - let temp, i, rnd; - for (i = 0; i < this.deckArray.length; i += 1) { - rnd = Math.floor(Math.random() * this.deckArray.length); - temp = this.deckArray[i]; - this.deckArray[i] = this.deckArray[rnd]; - this.deckArray[rnd] = temp; - } - }, - }; - deck.initialize(); - deck.shuffle(); - async function bet(outcome) { - if (outcome === "win") { - await client.add(user.id, money, interaction); - await client.ADDBJWin(interaction.user.id); - } - if (outcome === "lose") { - await client.rmv(user.id, money); - } - } - - function endMsg(f, msg, cl, dealerC) { - let cardsMsg = ""; - player.cards.forEach(function (card) { - const emAR = ["ā™„", "ā™¦", "ā™ ", "ā™£"]; - const t = emAR[Math.floor(Math.random() * emAR.length)]; - cardsMsg += "[`" + t + card.rank.toString(); - if (card.suit == "d1") cardsMsg += "ā™„"; - if (card.suit == "d2") cardsMsg += "ā™¦"; - if (card.suit == "d3") cardsMsg += "ā™ "; - if (card.suit == "d4") cardsMsg += "ā™£"; - cardsMsg += "`](https://cath.gq/) "; - }); - cardsMsg += " > " + player.score.toString(); - - let dealerMsg = ""; - if (!dealerC) { - const emAR = ["ā™„", "ā™¦", "ā™ ", "ā™£"]; - const t = emAR[Math.floor(Math.random() * emAR.length)]; - dealerMsg = "[`" + t + dealer.cards[0].rank.toString(); - if (dealer.cards[0].suit == "d1") dealerMsg += "ā™„"; - if (dealer.cards[0].suit == "d2") dealerMsg += "ā™¦"; - if (dealer.cards[0].suit == "d3") dealerMsg += "ā™ "; - if (dealer.cards[0].suit == "d4") dealerMsg += "ā™£"; - dealerMsg += " ? ?`](https://cath.gq/)"; - } else { - dealerMsg = ""; - dealer.cards.forEach(function (card) { - const emAR = ["ā™„", "ā™¦", "ā™ ", "ā™£"]; - const t = emAR[Math.floor(Math.random() * emAR.length)]; - dealerMsg += "[`" + t + card.rank.toString(); - if (card.suit == "d1") dealerMsg += "ā™„"; - if (card.suit == "d2") dealerMsg += "ā™¦"; - if (card.suit == "d3") dealerMsg += "ā™ "; - if (card.suit == "d4") dealerMsg += "ā™£"; - dealerMsg += "`](https://cath.gq/) "; - }); - dealerMsg += " > " + dealer.score.toString(); - } - - const gambleEmbed = new Discord.EmbedBuilder() - .setColor(cl || client.color) - .setTimestamp() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTitle(interaction.user.username + `'s Blackjack game`) - .addField("You", cardsMsg, true) - .addField("NYX", dealerMsg, true) - .addField(f, msg); - interaction.followUp({ embeds: [gambleEmbed] }); - } - - async function endGame() { - if (player.score === 21) { - bet("win"); - gameOver = true; - await endMsg( - `Win! You got 21!`, - `NYX had ${dealer.score.toString()}`, - `GREEN` - ); - } - if (player.score > 21) { - bet("lose"); - gameOver = true; - await endMsg( - `Lost! You reached over 21!`, - `NYX had ${dealer.score.toString()}`, - `RED` - ); - } - if (dealer.score === 21) { - bet("lose"); - gameOver = true; - await endMsg( - `Lost! The dealer got 21!`, - `NYX had ${dealer.score.toString()}`, - `RED` - ); - } - if (dealer.score > 21) { - bet("win"); - gameOver = true; - await endMsg( - `Win! NYX reached over 21!`, - `NYX had ${dealer.score.toString()}`, - `GREEN` - ); - } - if ( - dealer.score >= 17 && - player.score > dealer.score && - player.score < 21 - ) { - bet("win"); - gameOver = true; - await endMsg( - `Win! You defeated NYX!`, - `NYX had ${dealer.score.toString()}`, - `GREEN` - ); - } - if ( - dealer.score >= 17 && - player.score < dealer.score && - dealer.score < 21 - ) { - bet("lose"); - gameOver = true; - await endMsg( - `Lost! NYX won!`, - `NYX had ${dealer.score.toString()}`, - `RED` - ); - } - if ( - dealer.score >= 17 && - player.score === dealer.score && - dealer.score < 21 - ) { - gameOver = true; - await endMsg(`Tie!`, `NYX had ${dealer.score.toString()}`, `RED`); - } - } - - function dealerDraw() { - dealer.cards.push(deck.deckArray[numCardsPulled]); - dealer.score = getCardsValue(dealer.cards); - numCardsPulled += 1; - } - - function newGame() { - hit(); - hit(); - dealerDraw(); - endGame(); - } - - function hit() { - player.cards.push(deck.deckArray[numCardsPulled]); - player.score = getCardsValue(player.cards); - - numCardsPulled += 1; - if (numCardsPulled > 2) { - endGame(); - } - } - - function stand() { - while (dealer.score < 17) { - dealerDraw(); - } - endGame(); - } - newGame(); - async function loop() { - if (gameOver) return; - - endMsg( - "To hit type `h`, for stand type `s`", - `GoodLuck ;)`, - client.color - ); - - const filter = m => m.author.id === interaction.user.id; - interaction.channel - .awaitMessages({ filter, max: 1, time: 1200000, errors: ["time"] }) - .then(interaction => { - interaction = interaction.first(); - if ( - interaction.content.toLowerCase() === "h" || - interaction.content.toLowerCase() === "hit" - ) { - hit(); - loop(); - return; - } else if ( - interaction.content.toLowerCase() === "s" || - interaction.content.toLowerCase() === "stand" - ) { - stand(); - loop(); - return; - } else { - bet("lose"); - endMsg("Invalid response", `You lost ${money}`, "RED"); - return; - } - }) - .catch(_ => { - interaction.channel.send({ content: "Lost!!" }); - bet("lose"); - return; - }); - } - await loop(); - } - }, -}; diff --git a/unused/commands/Economy/buy.js b/unused/commands/Economy/buy.js @@ -1,103 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const inventory = require("../../models/econ"); -const items = require("../../util/Data/item.json"); -module.exports = { - name: "buy", - usage: "(Item)", - description: "Buy something from the shop", - category: "Economy", - options: [ - { - type: 3, - name: "item", - description: "The item to buy", - required: true, - }, - { - type: 4, - name: "amount", - description: "The amount to buy", - required: true, - }, - ], - run: async (client, interaction, args) => { - const itemToBuy = args[0].toLowerCase(); - const validItem = !!items.find(item => item.aliases.includes(itemToBuy)); - const num = args[1]; - if (num < 0) { - interaction.followUp({ - content: `You need to buy at least 1 item`, - }); - } else if (!validItem) { - interaction.followUp({ - content: - "The item is not valid\nIf you want to get information about the item, use `/shop`", - }); - } else { - const itemName = items.find(item => - item.aliases.includes(itemToBuy) - ).name; - const dbName = items.find(item => - item.aliases.includes(itemToBuy) - ).dbname; - const itemPrice = items.find(item => - item.aliases.includes(itemToBuy) - ).price; - const itemEmoji = items.find(item => - item.aliases.includes(itemToBuy) - ).emoji; - const buyable = items.find(item => - item.aliases.includes(itemToBuy) - ).buyable; - if ((await client.bal(interaction.user.id)) < itemPrice * num) { - interaction.followUp({ content: "You don't have enough balance" }); - } else if (!buyable) { - interaction.followUp({ content: `That item isn't buyable` }); - } else { - const params = { User: interaction.user.id }; - inventory.findOne(params, async (err, data) => { - if (data) { - const hasItem = Object.keys(data.Inventory).includes(dbName); - if (!hasItem) { - data.Inventory[dbName] += num; - } else { - data.Inventory[dbName] += num; - } - await inventory.findOneAndUpdate(params, data); - } else { - new inventory({ - User: interaction.user.id, - Inventory: { - [dbName]: num, - }, - }).save(); - } - }); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setTimestamp() - .setDescription( - `**${ - interaction.user.username - }** buys ** ${num} ${itemEmoji}${itemName}** for **${ - itemPrice * num - }**${client.currency}` - ) - .setColor("GREEN") - .setURL(client.web) - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }), - ], - }); - await client.rmv(interaction.user.id, itemPrice * num); - } - } - }, -}; diff --git a/unused/commands/Economy/daily.js b/unused/commands/Economy/daily.js @@ -1,49 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "daily", - description: "Earns daily money", - category: "Economy", - timeout: 1000 * 60 * 60 * 24, - run: async (client, interaction, args) => { - let money; - const user = await client.data.getUser(interaction.user.id); - if (user) { - if (user.Premium == true) { - money = 20000; - const pre_embed = new EmbedBuilder() - .setTitle(`${user.username}'s profile`) - .setDescription( - `Here is your daily **${money}** ${client.currency}\nYou can use this again in 24hrs` - ) - .setURL(client.web) - .setColor(client.color) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp(); - await client.add(interaction.user.id, money, interaction); - return interaction.followUp({ embeds: [pre_embed] }); - } else { - money = 10000; - const norm_embed = new EmbedBuilder() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dyanmic: true }) - ) - .setDescription( - `Here is your daily ${money}${client.currency}!\nBe [premium](https://discord.gg/SbQHChmGcp) user, you can get more coins everyday!` - ) - .setURL(client.web) - .setColor(client.color) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp(); - await client.add(interaction.user.id, money, interaction); - return interaction.followUp({ embeds: [norm_embed] }); - } - } - }, -}; diff --git a/unused/commands/Economy/gift.js b/unused/commands/Economy/gift.js @@ -1,136 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const inventory = require("../../models/econ"); -const items = require("../../util/Data/item.json"); -module.exports = { - name: "gift", - timeout: 5000, - usage: "(User) (Item)", - description: "Gift item to an user", - category: "Economy", - options: [ - { - type: 6, - name: "user", - description: "The user you want to gift", - required: true, - }, - { - type: 3, - name: "item", - description: "The item to gift", - required: true, - }, - { - type: 4, - name: "amount", - description: "The amount to gift", - required: true, - }, - ], - run: async (client, interaction, args) => { - const user = interaction.guild.members.cache.get(args[0]); - if (user.id === interaction.user.id) { - interaction.followUp({ content: "You can't gift yourself items" }); - } - const itemToGift = args[1].toLowerCase(); - const number = args[2]; - const validItem = !!items.find(item => item.aliases.includes(itemToGift)); - if (number < 0) { - interaction.followUp({ - content: `You need to gift at least 1 item`, - }); - } else if (!validItem) { - interaction.followUp({ - content: - "The item is not valid\nIf you want to get information about the item, use `/shop`", - }); - } else { - const params = { - User: interaction.user.id, - }; - const param = { - User: user.id, - }; - const itemName = items.find(item => - item.aliases.includes(itemToGift) - ).name; - const dbName = items.find(item => - item.aliases.includes(itemToGift) - ).dbname; - const itemEmoji = items.find(item => - item.aliases.includes(itemToGift) - ).emoji; - inventory.findOne(params, async (err, data) => { - if (data.Inventory) { - const hasItem = Object.keys(data.Inventory).includes(dbName); - if (hasItem) { - if (data.Inventory[dbName] <= number) { - interaction.followUp({ - content: `You don't have enough items to gift`, - }); - } else { - data.Inventory[dbName] -= number; - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setColor(client.color) - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setFooter( - `Made by ${client.author}`, - client.user.displayAvatarURL() - ) - .setTimestamp() - .setDescription( - `**${interaction.user.username}** has given **${ - user.user.username - } ${number.toLocaleString()} ${itemEmoji}${itemName}**` - ), - ], - }); - user - .send({ - content: `**${ - interaction.user.tag - }** has given you **${number.toLocaleString()} ${itemEmoji}${itemName}** in **${ - interaction.guild.name - }**`, - }) - .catch(e => {}); - await inventory.findOneAndUpdate(params, data); - } - } else { - interaction.followUp({ - content: `You don't have enough items to gift`, - }); - } - } else { - interaction.followUp({ - content: `You don't have enough items to gift`, - }); - } - }); - inventory.findOne(param, async (err, data) => { - if (data?.Inventory) { - const hasItem = Object.keys(data.Inventory).includes(dbName); - if (!hasItem) { - data.Inventory[dbName] += number; - } else { - data.Inventory[dbName] += number; - } - await inventory.findOneAndUpdate(param, data); - } else { - new inventory({ - User: user.id, - CP: 0, - Inventory: { - [dbName]: number, - }, - }).save(); - } - }); - } - }, -}; diff --git a/unused/commands/Economy/give.js b/unused/commands/Economy/give.js @@ -1,72 +0,0 @@ -const m = require("../../models/econ"); -module.exports = { - name: "give", - timeout: 5000, - usage: "(User) (Number)", - description: "Give money to an user", - category: "Economy", - options: [ - { - type: 6, - name: "user", - description: "The user you want to give", - required: true, - }, - { - type: 4, - name: "cp", - description: "The number of CP you want to give", - required: true, - }, - ], - run: async (client, interaction, args) => { - const max = 300000; - const user = interaction.guild.members.cache.get(args[0]); - let parsed = args[1]; - if (parsed > max) parsed = max; - if (parsed < 100) { - interaction.followUp({ - content: `You need to give at least 100 ${client.currency}`, - }); - } else if (user.id === interaction.user.id) { - interaction.followUp({ content: "You can't give yourself money" }); - } else if (parsed > (await client.bal(interaction.user.id))) { - interaction.followUp({ content: "You don't have enough balance" }); - } else { - m.findOne({ User: interaction.user.id }, async (err, data) => { - if (data) { - data.CP -= parsed; - data.save(); - } else { - client.createProfile(interaction.user.id); - } - }); - m.findOne({ User: user.id }, async (err, data) => { - if (data) { - data.CP += parsed; - data.save(); - } else { - new m({ CP: parsed }); - } - }); - interaction.followUp({ - content: `**${interaction.user.username}** gave **${ - user.user.username - }** **${parsed.toLocaleString()}** coins, you now have **${( - (await client.bal(interaction.user.id)) - parsed - ).toLocaleString()}** ${client.currency} and they have **${( - (await client.bal(user.id)) + parsed - ).toLocaleString()}** ${client.currency}`, - }); - user - .send({ - content: `**${ - interaction.user.tag - }** gave you **${parsed.toLocaleString()}** coins in **${ - interaction.guild.name - }**`, - }) - .catch(); - } - }, -}; diff --git a/unused/commands/Economy/gun.js b/unused/commands/Economy/gun.js @@ -1,123 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const e = require("../../models/econ"); -const list = require("../../util/Data/gun.json"); -module.exports = { - name: "gun", - description: "Configure Weapon Master System settings", - options: [ - { - type: 1, - name: "select", - description: "Select the gun for the game", - options: [ - { - name: "gun", - description: "The gun you want to select", - type: 3, - required: true, - choices: [ - { - name: "kuk69", - value: "kuku69", - }, - { - name: "nani45", - value: "nani45", - }, - ], - }, - ], - }, - { - type: 1, - name: "list", - description: "See the information for the guns", - options: [], - }, - { - type: 1, - name: "info", - description: "See the stats of your gun", - }, - ], - run: async (client, interaction, args) => { - if (args[0] === "list") { - const lists = list.map(value => { - return `**${value.emoji} ${value.name}**\n**Description**: ${value.description}`; - }); - const embed = new EmbedBuilder() - .setColor(client.color) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setDescription(lists.join("\n\n")); - interaction.followUp({ embeds: [embed] }); - } else if (args[0] === "select") { - if (args[1] == "kuku69") { - await e.findOne({ User: interaction.user.id }, async (err, data) => { - if (!data) { - new e({ - User: interaction.user.id, - Gun: { - Name: "kuku69", - Rank: "Iron", - Kills: 0, - XP: 0, - Level: 1, - }, - }); - } else { - data.Gun.Name = "kuku69"; - await data.save(); - } - }); - interaction.followUp({ content: "**Your current gun:\nkuku69**" }); - } - if (args[1] == "nani45") { - await e.findOne({ User: interaction.user.id }, async (err, data) => { - if (!data) { - new e({ - User: interaction.user.id, - Gun: { - Name: "nani45", - Rank: "Iron", - Kills: 0, - XP: 0, - Level: 1, - }, - }); - } else { - data.Gun.Name = "nani45"; - await data.save(); - } - }); - interaction.followUp({ content: "**Your current gun:\nnani45**" }); - } - } else if (args[0] === "info") { - await e.findOne({ User: interaction.user.id }, async (err, data) => { - if (!data?.Gun.Name) { - interaction.followUp({ - content: - "You don't have a gun yet! Please use `/gun select` to select your gun!", - }); - } else { - const link = list.find(a => a.name === data.Gun.Name).link; - const embed = new EmbedBuilder() - .setThumbnail(link) - .setTimestamp() - .setColor(client.color) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .addField("Name", data.Gun.Name, true) - .addField("Rank", data.Gun.Rank, true) - .addField("XP", data.Gun.XP.toString(), true); - interaction.followUp({ embeds: [embed] }); - } - }); - } - }, -}; diff --git a/unused/commands/Economy/inv.js b/unused/commands/Economy/inv.js @@ -1,67 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const inv = require("../../models/econ"); -const { Pagination } = require("cath"); -const items = require("../../util/Data/item.json"); -module.exports = { - name: "inventory", - description: "Check the inventory of an user", - usage: "{User}", - category: "Economy", - timeout: 5000, - options: [ - { - type: 6, - name: "user", - description: "The user you want to see", - required: false, - }, - ], - run: async (client, interaction, args) => { - const util = new Pagination(); - const user = - interaction.guild.members.cache.get(args[0]) || interaction.member; - inv.findOne({ User: user.id }, async (err, data) => { - if (data) { - if (!data.Inventory) { - return interaction.followUp({ - content: `User doesn't have any data`, - }); - } - const mappedData = Object.keys(data.Inventory) - .map(key => { - if (data.Inventory[key] == 0) { - return; - } else { - const name = items.find(val => val.dbname === key).name; - const emoji = items.find(val => val.dbname === key).emoji; - const type = items.find(val => val.dbname === key).type; - return `\n**${emoji}${name}** ā€” ${data.Inventory[key]}\n **Type**: \`${type}\``; - } - }) - .filter(e => e !== undefined); - if (mappedData.length == 0) { - return interaction.followUp({ - content: `User doesn't have any data`, - }); - } - const c = util.chunk(mappedData, 5).map(x => x.join("\n")); - const embed = new EmbedBuilder() - .setTimestamp() - .setTitle(`${user.displayName}'s inventory`) - .setColor(client.color) - .setDescription(c[0]) - .setFooter({ text: `Page 1 of ${c.length}` }); - try { - const msg = await interaction.followUp({ embeds: [embed] }); - if (mappedData.length > 5) { - await util.pagination(msg, interaction.user, c); - } - } catch (e) { - console.log(e); - } - } else { - return interaction.followUp({ content: `User doesn't have any data` }); - } - }); - }, -}; diff --git a/unused/commands/Economy/multiplier.js b/unused/commands/Economy/multiplier.js @@ -1,47 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); - -module.exports = { - name: "multiplier", - description: "Displaying your/user's multiplier.", - category: "Economy", - options: [ - { - type: 6, - name: "user", - description: "The user you want to see", - required: false, - }, - ], - run: async (client, interaction, args) => { - let i = ""; - let e = 0; - const user = - interaction.guild.members.cache.get(args[0]) || interaction.member; - const data = await client.data.getUser( - args[0] ? args[0] : interaction.member.id - ); - if (data?.Premium) { - i += "\nPremium User - 25%\n"; - e += 25; - } - if (client.path.includes(interaction.guild.id)) { - i += "NYX Partnered Server - 15%\n"; - e += 15; - } - if (interaction.channel.name.toLowerCase().includes("nyx")) { - i += "Channel Name includes NYX - 10%\n"; - e += 10; - } - const embed = new EmbedBuilder() - .addField(`**Total Multiplier: ${e}%** (Maximum: 50%)`, i) - .setColor(client.color) - .setURL(client.web) - .setTitle(`${user.displayName}'s Multiplier`) - .setTimestamp() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }); - interaction.followUp({ embeds: [embed] }); - }, -}; diff --git a/unused/commands/Economy/profile.js b/unused/commands/Economy/profile.js @@ -1,52 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "profile", - usage: "(User)", - description: "Check an user economy profile", - - 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 bjwin = await client.bjWin(user.user.id); - const swin = await client.sWin(user.user.id); - const bwin = await client.bWin(user.user.id); - const cmdused = await client.cmdsUSED(user.user.id); - const bal = await client.bal(user.user.id); - const multi = await client.multi(interaction); - const game = new EmbedBuilder() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setColor("7196ef") - .setTitle(`${user.displayName}'s profile`) - .setDescription(`Current Balance ${bal} ${client.currency}`) - .setURL(client.web) - .addFields( - { - name: "Basic", - value: ` - Total Commands Used \`${cmdused}\`\n - ${client.xp} Multiplier \`${`1.${multi}x`}\``, - inline: true, - }, - { - name: "šŸŽŠ Wins", - value: `Overall āÆ \`${bjwin + swin + bwin}\` - šŸƒ Blackjack āÆ \`${bjwin}\`\n - šŸŽ° Slots āÆ \`${swin}\`\n - šŸ•¹ Bets āÆ \`${bwin}\`\n`, - inline: true, - } - ); - interaction.followUp({ embeds: [game] }); - }, -}; diff --git a/unused/commands/Economy/rich.js b/unused/commands/Economy/rich.js @@ -1,50 +0,0 @@ -const { Collection, EmbedBuilder } = require("discord.js"); -module.exports = { - name: "rich", - description: "Displaying top 10 richest users.", - category: "Economy", - timeout: 4000, - run: async (client, interaction) => { - const collection = new Collection(); - await Promise.all( - interaction.guild.members.cache.map(async member => { - const id = member.id; - const bal = await client.bal(id); - if (!bal) return; - return bal !== 0 - ? collection.set(id, { - id, - bal, - }) - : null; - }) - ); - if (!collection) { - return interaction.followUp({ - content: `None of the members got ${client.currency}!`, - }); - } - const ata = collection.sort((a, b) => b.bal - a.bal).first(10); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setTitle(`Richest users in ${interaction.guild.name}`) - .setDescription( - ata - .map((v, i) => { - return `**${i + 1}āÆ** ${ - interaction.guild.members.cache.get(v.id).user.tag - } =āÆ **${v.bal} ${client.currency}**`; - }) - .join("\n") - ) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setColor(client.color), - ], - }); - }, -}; diff --git a/unused/commands/Economy/shop.js b/unused/commands/Economy/shop.js @@ -1,78 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const { Pagination } = require("cath"); -const items = require("../../util/Data/item.json"); -module.exports = { - name: "shop", - description: "Check the items from the shop", - category: "Economy", - options: [ - { - type: 3, - name: "item", - description: "The item you want to see", - required: false, - }, - ], - run: async (client, interaction, args, utils, data) => { - if (!args[0]) { - const util = new Pagination(); - const list = items.map(value => { - return `**${value.emoji} ${ - value.name - } ā€” [${value.price.toLocaleString()} ${ - client.currency - }](https://www.youtube.com/watch?v=YSKDu1gKntY)**\n\`Aliases:\` **${value.aliases.join( - ", " - )}**\n\`Type:\` **${value.type}**`; - }); - const c = util.chunk(list, 5).map(x => x.join("\n\n")); - const embed = new EmbedBuilder() - .setTitle("**NYX Shop**") - .setTimestamp() - .setDescription(c[0]) - .setColor(client.color) - .setFooter({ text: `Page 1 of ${c.length}` }); - try { - const msg = await interaction.followUp({ embeds: [embed] }); - if (list.length > 5) await util.pagination(msg, interaction.user, c); - } catch (e) { - console.log(e); - } - } else { - const itemToSearch = args[0].toLowerCase(); - const validItem = !!items.find(item => - item.aliases.includes(itemToSearch) - ); - if (!validItem) { - interaction.followUp({ - content: - "The item is not valid\nIf you want to get information about the item, use `/shop`", - }); - } else { - const theitem = items.find(i => i.aliases.includes(itemToSearch)); - const all = new EmbedBuilder() - .setTitle(`${theitem.emoji} ${theitem.name}`) - .setDescription( - ` - **Owns** - ${ - data.UserEcon.Inventory?.[theitem.dbname] - ? data.UserEcon.Inventory?.[theitem.dbname] - : 0 - } - **Cost Price** - ${client.currency} ${theitem.price}\n - **Sell Price** - ${client.currency} ${ - theitem.sellable ? theitem.sell : "Unable to sell" - }\n - **Aliases** - \`${theitem.aliases.join(", ")}\`\n\n` - ) - .setColor(client.color) - .setFooter( - `Made by ${client.author}`, - client.user.displayAvatarURL({ dynamic: true }) - ) - .setTimestamp(); - interaction.followUp({ embeds: [all] }); - } - } - }, -}; diff --git a/unused/commands/Economy/slots.js b/unused/commands/Economy/slots.js @@ -1,130 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "slots", - usage: "(Number)", - timeout: 5000, - description: "Win more coins by slots", - category: "Economy", - options: [ - { - type: 4, - name: "cp", - description: "The number of CP you want to slots", - required: true, - }, - ], - run: async (client, interaction, args) => { - const max = 100000; - const slots = [ - "<:blushca:852174555513618502>", - "<:abusecat:853501068074942464>", - "<:dumbcat:855462498550415362>", - ]; - const slotOne = slots[Math.floor(Math.random() * slots.length)]; - const slotTwo = slots[Math.floor(Math.random() * slots.length)]; - const slotThree = slots[Math.floor(Math.random() * slots.length)]; - const slotfour = slots[Math.floor(Math.random() * slots.length)]; - const slotfive = slots[Math.floor(Math.random() * slots.length)]; - const slotsix = slots[Math.floor(Math.random() * slots.length)]; - const slotseven = slots[Math.floor(Math.random() * slots.length)]; - const sloteight = slots[Math.floor(Math.random() * slots.length)]; - const slotnine = slots[Math.floor(Math.random() * slots.length)]; - const ar = [1.3, 1.5, 1.7, 1.9, 2.1, 2.3, 2.5, 2.7, 2.9, 3.1, 3.3, 3.5]; - const r = ar[Math.floor(Math.random() * ar.length)]; - let amt = args[0]; - if (amt > max) amt = max; - if (amt < 100) { - interaction.followUp({ - content: `You need to slot at least 100${client.currency}`, - }); - } else if ((await client.bal(interaction.user.id)) < amt) { - interaction.followUp({ content: "You don't have enough balance" }); - } else if ( - (slotOne === slotTwo && slotOne === slotThree) || - (slotfour === slotfive && slotfour === slotsix) || - (slotseven === sloteight && slotseven === slotnine) - ) { - const winamt = Math.round(r * amt); - const multi = (await client.multi(interaction)) / 10 + 1; - await client.add(interaction.user.id, winamt, interaction); - await client.ADDSWin(interaction.user.id); - const won = new EmbedBuilder() - .setColor("GREEN") - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .addField( - "|-----|-----|----|", - `| ${slotfour} | ${slotfive} | ${slotsix} |` - ) - .addField( - "|-----|-----|----|", - `| ${slotOne} | ${slotTwo} | ${slotThree} |` - ) - .addField( - "|-----|-----|----|", - `| ${slotseven} | ${sloteight} | ${slotnine} |` - ) - .setTitle(`${interaction.user.username} wins a slots game`) - .addFields( - { - name: "Won", - value: `**${Math.round(winamt * multi)}**${client.currency}`, - inline: true, - }, - { - name: "New Balance", - value: `**${Math.round( - (await client.bal(interaction.user.id)) + winamt * multi - )}**${client.currency}`, - inline: true, - }, - { - name: "Multiplier", - value: `x${r + multi}`, - inline: true, - } - ); - interaction.followUp({ embeds: [won] }); - } else { - await client.rmv(interaction.user.id, amt); - const lost = new EmbedBuilder() - .setColor("RED") - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .addField( - "|-----|-----|----|", - `| ${slotfour} | ${slotfive} | ${slotsix} |` - ) - .addField( - "|-----|-----|----|", - `| ${slotOne} | ${slotTwo} | ${slotThree} |` - ) - .addField( - "|-----|-----|----|", - `| ${slotseven} | ${sloteight} | ${slotnine} |` - ) - .setTitle(`${interaction.user.username} loses a slots game`) - .addFields( - { - name: "Lost", - value: `**${amt}**${client.currency}`, - inline: true, - }, - { - name: "New Balance", - value: `**${ - parseInt(await client.bal(interaction.user.id)) - amt - }**${client.currency}`, - inline: true, - } - ); - interaction.followUp({ embeds: [lost] }); - } - }, -}; diff --git a/unused/commands/Economy/steal.js b/unused/commands/Economy/steal.js @@ -1,151 +0,0 @@ -const db = require("../../models/econ"); -const { EmbedBuilder } = require("discord.js"); -const { bool } = require("cath"); -module.exports = { - name: "rob", - description: "Rob money from an user", - usage: "(User)", - category: "Economy", - timeout: 120000, - options: [ - { - type: 6, - name: "user", - description: "The user you want to rob", - required: true, - }, - ], - run: async (client, interaction, args, utils) => { - const s = new Set(); - const tryrob = interaction.guild.members.cache.get(args[0]); - if (tryrob.id === interaction.user.id) { - interaction.followUp({ content: "You can't rob yourself" }); - } else if (s.has(tryrob.user.tag)) { - interaction.followUp({ - content: - "That user has already been robbed within three minutes, be kind!", - }); - } else { - await db.findOne({ User: interaction.user.id }, async (err, data) => { - if (data) { - if (!data.CP) { - data.CP = 0; - data.save(); - interaction.followUp({ content: "You don't have enough balance" }); - } else { - await db.findOne({ User: tryrob.id }, async (err1, data1) => { - const coins = Math.floor(Math.random() * data.CP); - const coins1 = Math.floor(Math.random() * data1?.CP); - if (!data1) { - client.createProfile(tryrob.id); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor("RED") - .setDescription( - `They don't have any ${client.currency}. Be kind!` - ), - ], - }); - } else if (data1) { - if (data1.CP <= 0 || !data1.CP) { - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor("RED") - .setDescription( - `They don't have any ${client.currency}. Be kind!` - ), - ], - }); - } - if (bool()) { - data.CP += coins1; - data.save(); - data1.CP -= coins1; - data1.save(); - s.add(tryrob.user.tag); - setTimeout(function () { - s.delete(tryrob.user.tag); - }, 1000 * 60 * 3); - tryrob - .send( - `**${ - interaction.user.tag - }** has robbed you **${coins1.toLocaleString()}** coins in **${ - interaction.guild.name - }**` - ) - .catch(e => {}); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor("GREEN") - .setDescription( - `You robbed **${tryrob.user.tag}**! And you got \`${coins1}\`${client.currency}` - ), - ], - }); - } else { - data.CP -= coins; - data.save(); - data1.CP += coins; - data1.save(); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor("RED") - .setDescription( - `You failed on robbing **${tryrob.user.tag}**! And you had to pay him/her \`${coins}\`${client.currency}` - ), - ], - }); - } - } - }); - } - } - if (!data) { - client.createProfile(interaction.user.id); - interaction.followUp({ content: "You don't have enough balance" }); - } - }); - } - }, -}; diff --git a/unused/commands/Economy/work.js b/unused/commands/Economy/work.js @@ -1,40 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "work", - description: "Work to earn money", - category: "Economy", - timeout: 1000 * 60 * 10, - run: async (client, interaction, args, utils) => { - const jobs = [ - "Software engineer", - "Programmer", - "Teacher", - "YouTuber", - "Student", - "Desginer", - "Editor", - "Banker", - ]; - const earning = utils.rndint(5000, 3000); - const job = jobs[Math.floor(Math.random() * jobs.length)]; - await client.add(interaction.user.id, earning, interaction); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setDescription( - `Good Job! You worked as a **${job}** and earned **${earning}${client.currency}**` - ) - .setTimestamp() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setColor(client.color), - ], - }); - }, -}; diff --git a/unused/commands/Moderation/ban.js b/unused/commands/Moderation/ban.js @@ -1,112 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "ban", - description: "Ban an user", - BotPerms: ["BAN_MEMBERS"], - UserPerms: ["BAN_MEMBERS"], - usage: "(User) {Reason}", - category: "Moderation", - options: [ - { - type: 6, - name: "user", - description: "The user you want to ban", - required: true, - }, - { - type: 3, - name: "reason", - description: "The reason you want to ban", - required: false, - }, - { - type: 4, - name: "messages", - description: - "Number of days of messages to delete, must be between 0 and 7, inclusive", - required: false, - }, - ], - run: async (client, interaction, args) => { - const target = interaction.guild.members.cache.get(args[0]); - let reason = args[1] || "No reason provided"; - const days = args[2] || 0; - if (days > 7 || days < 0) { - interaction.followUp({ - content: - "Number of days of messages to delete must be between 0 and 7, inclusive", - }); - } else if (!target) { - try { - const one = await client.users.fetch(args[0]); - if (one.id === interaction.user.id) { - interaction.followUp({ content: "You can't ban yourself" }); - } - if (reason.length > 1024) reason = reason.slice(0, 1021) + "..."; - const embed = new EmbedBuilder() - .setTitle("User Banned") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", one.tag, true) - .addField("**Reason**", reason, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - await interaction.guild.members.ban(one.id, { - reason, - days, - }); - } catch (e) { - console.log(e); - } - } else { - if (target.id === interaction.user.id) { - interaction.followUp({ content: "You can't ban yourself" }); - } - if ( - interaction.member.roles.highest.position < - target.roles.highest.position - ) { - interaction.followUp({ content: "You don't have enough hierarchy" }); - } - if ( - interaction.guild.me.roles.highest.position < - target.roles.highest.position - ) { - interaction.followUp({ content: "Bot doesn't have enough hierarchy" }); - } - if (reason.length > 1024) reason = reason.slice(0, 1021) + "..."; - try { - const embed = new EmbedBuilder() - .setTitle("User Banned") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", target.user.tag, true) - .addField("**Reason**", reason, true) - .addField( - "Number of days of messages to delete", - days.toString(), - true - ) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - await interaction.guild.members.ban(target.id, { - reason, - days, - }); - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - } - }, -}; diff --git a/unused/commands/Moderation/kick.js b/unused/commands/Moderation/kick.js @@ -1,61 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "kick", - description: "Kick an user", - UserPerms: ["KICK_MEMBERS"], - BotPerms: ["KICK_MEMBERS"], - usage: "(User) {Reason}", - category: "Moderation", - options: [ - { - type: 6, - name: "user", - description: "The user you want to kick", - required: true, - }, - { - type: 3, - name: "reason", - description: "The reason you want to kick", - required: false, - }, - ], - run: async (client, interaction, args) => { - const target = interaction.guild.members.cache.get(args[0]); - let reason = args[1] || "No reason provided"; - if (target.id === interaction.user.id) { - interaction.followUp({ content: "You can't kick yourself" }); - } - if ( - interaction.member.roles.highest.position < target.roles.highest.position - ) { - interaction.followUp({ content: "You don't have enough hierarchy" }); - } - if ( - interaction.guild.me.roles.highest.position < - target.roles.highest.position - ) { - interaction.followUp({ content: "Bot doesn't have enough hierarchy" }); - } - if (reason.length > 1024) reason = reason.slice(0, 1021) + "..."; - try { - const embed = new EmbedBuilder() - .setTitle("User Kicked") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", target.user.tag, true) - .addField("**Reason**", reason, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - await target.kick(reason); - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Moderation/lock.js b/unused/commands/Moderation/lock.js @@ -1,53 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "lockdown", - description: "Lock a channel", - UserPerms: ["MANAGE_CHANNELS"], - BotPerms: ["MANAGE_CHANNELS"], - category: "Moderation", - options: [ - { - type: 5, - name: "choice", - description: "Whether lock or unlock the channel", - required: true, - }, - ], - run: async (client, interaction, args) => { - if (args[0]) { - interaction.channel.permissionOverwrites - .create(interaction.guild.id, { SEND_MESSAGES: false }) - .then(() => { - const embed = new EmbedBuilder() - .setTitle("Channel Locked") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**Channel**", `<#${interaction.channel.id}>`, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - }); - } else { - interaction.channel.permissionOverwrites - .create(interaction.guild.id, { SEND_MESSAGES: true }) - .then(() => { - const embed = new EmbedBuilder() - .setTitle("Channel Unlocked") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**Channel**", `<#${interaction.channel.id}>`, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - }); - } - }, -}; diff --git a/unused/commands/Moderation/mute.js b/unused/commands/Moderation/mute.js @@ -1,122 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "mute", - description: "Mute an user.", - usage: "(User) (Time) {Reason}", - UserPerms: ["MANAGE_MESSAGES"], - BotPerms: ["MANAGE_ROLES"], - category: "Moderation", - options: [ - { - type: 6, - name: "user", - description: "The user you want to mute", - required: true, - }, - { - type: 3, - name: "reason", - description: "The reason you want to mute", - required: true, - }, - { - type: 3, - name: "time", - description: "The time you want to mute", - required: false, - }, - ], - run: async (client, interaction, args, utils, data) => { - try { - const user = interaction.guild.members.cache.get(args[0]); - const reason = args[1]; - const time = args[2] || "gg"; - const mutedrole = interaction.guild.roles.cache.get(data.Guild.Muterole); - if (user.id === interaction.user.id) { - interaction.followUp({ content: "You can't mute yourself" }); - } - if ( - interaction.member.roles.highest.position < user.roles.highest.position - ) { - interaction.followUp({ content: "You don't have enough hierarchy" }); - } - if ( - interaction.guild.me.roles.highest.position < - user.roles.highest.position - ) { - interaction.followUp({ content: "Bot doesn't have enough hierarchy" }); - } - if (reason.length > 1024) reason = reason.slice(0, 1021) + "..."; - if (!utils.ms(time)) { - if (!mutedrole) { - const newrole = await interaction.guild.roles.create({ - name: "Muted", - reason: "For muted people", - permissions: [], - }); - await client.data.setMuterole(interaction.guild.id, newrole.id); - interaction.guild.channels.cache - .filter(c => c.type === "GUILD_TEXT") - .forEach(async channel => { - await channel.permissionOverwrites.create(newrole, { - SEND_MESSAGES: false, - ADD_REACTIONS: false, - }); - }); - } else { - await user.roles.add(mutedrole.id); - const embed = new EmbedBuilder() - .setTitle("User Muted") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", user.user.tag, true) - .addField("**Reason**", reason, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - } - } else if (!mutedrole) { - const newrole = await interaction.guild.roles.create({ - name: "Muted", - reason: "For muted people", - permissions: [], - }); - await client.data.setMuterole(interaction.guild.id, newrole.id); - interaction.guild.channels.cache - .filter(c => c.type === "GUILD_TEXT") - .forEach(async channel => { - await channel.permissionOverwrites.create(newrole, { - SEND_MESSAGES: false, - ADD_REACTIONS: false, - }); - }); - } else { - await user.roles.add(mutedrole.id); - const embed = new EmbedBuilder() - .setTitle("User Muted") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", user.user.tag, true) - .addField("**Time**", utils.ms(utils.ms(time), { long: true }), true) - .addField("**Reason**", reason, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - setTimeout(async () => { - await user.roles.remove(mutedrole.id); - }, utils.ms(time)); - } - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Moderation/nuke.js b/unused/commands/Moderation/nuke.js @@ -1,67 +0,0 @@ -const { MessageAttachment } = require("discord.js"); -module.exports = { - name: "nuke", - description: "Destroy a channel and create a new one", - usage: "{Channel}", - UserPerms: ["MANAGE_CHANNELS"], - BotPerms: ["MANAGE_CHANNELS"], - category: "Moderation", - run: async (client, interaction, args) => { - try { - const filter = m => m.author.id === interaction.user.id; - interaction.followUp({ - content: "Do you want to nuke this channel?\n (Type `Yes` or `no`)", - }); - interaction.channel - .awaitMessages({ - filter, - max: 1, - time: 99999, - errors: ["time"], - }) - .then(msg => { - const message = msg.first(); - if ( - message.content.toLowerCase() == "yes" || - message.content.toLowerCase() == "y" - ) { - const channel = message.guild.channels.cache.get( - message.channel.id - ); - channel.clone().then(ch => { - if (channel.parent) { - ch.setParent(channel.parent.id); - } else { - } - ch.setPosition(channel.position); - channel.delete(); - ch.send({ - files: [ - new MessageAttachment( - "https://i.pinimg.com/originals/06/c3/92/06c392b847166a9a671bfcd590d8fff7.gif" - ), - ], - content: "\nFriendly nuke has been launched.", - }); - }); - } else if ( - message.content.toLowerCase() == "no" || - message.content.toLowerCase() == "n" - ) { - message.delete(); - return message.channel.send({ - content: "The process has been cancelled", - }); - } else { - message.delete(); - return message.channel.send({ - content: `The process has been cancelled due to invalid response`, - }); - } - }); - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Moderation/purge.js b/unused/commands/Moderation/purge.js @@ -1,85 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); - -module.exports = { - name: "clear", - description: "Clear messages in a specific channel", - options: [ - { - name: "channel", - description: "Channel where the messages to be deleted", - type: 7, - required: true, - channelTypes: [0], - }, - { - name: "amount", - description: "Amount of message in range of 1-100 to be deleted", - type: 4, - required: true, - }, - ], - - run: async (client, interaction, args) => { - try { - const query = args[1]; - const channel = interaction.guild.channels.cache.get(args[0]); - if (query > 100) { - return interaction.followUp({ - content: "The amount of messages must be in range of 1-100", - }); - } - if (channel.type !== "GUILD_TEXT") { - return interaction.followUp({ - content: "Please provide a text channel", - }); - } - const limit = await interaction.channel.messages.fetch({ - limit: query, - }); - await channel.bulkDelete(limit, true).then(async m => { - const results = {}; - for (const [, deleted] of m) { - const user = `${deleted.author.username}#${deleted.author.discriminator}`; - if (!results[user]) results[user] = 0; - results[user]++; - } - const userMessageMap = Object.entries(results); - channel.send({ - embeds: [ - new EmbedBuilder() - .setTitle(`Message Cleared`) - .addField( - "**Moderator**", - `${ - interaction.member.nickname - ? interaction.member.nickname - : interaction.user.username - }`, - true - ) - .addField("Amount of Message Deleted", `${m.size}/${query}`, true) - .addField( - "Authors", - `${userMessageMap - .map(([user, messages]) => `**${user}** : ${messages}`) - .join("\n")}`, - false - ) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail( - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor(client.color), - ], - }); - }); - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Moderation/role.js b/unused/commands/Moderation/role.js @@ -1,65 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "role", - UserPerms: ["MANAGE_ROLES"], - BotPerms: ["MANAGE_ROLES"], - usage: "(Role) (User)", - description: "Add/Remove a role for an user", - category: "Moderation", - options: [ - { - type: 6, - name: "user", - description: "The person you want to add/remove role", - required: true, - }, - { - type: 8, - name: "role", - description: "The role you want to add/remove", - required: true, - }, - ], - run: async (client, interaction, args) => { - try { - const target = interaction.guild.members.cache.get(args[0]); - const role = interaction.guild.roles.cache.get(args[1]); - if (role.managed) { - interaction.followUp({ content: "You must provide a non bot role" }); - } else if (target.roles.cache.has(role.id)) { - const embed = new EmbedBuilder() - .setTitle("Role Removed") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", target.user.tag, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction - .followUp({ embeds: [embed] }) - .then(await target.roles.remove(role.id)); - } else { - const embed = new EmbedBuilder() - .setTitle("Role Added") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", target.user.tag, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction - .followUp({ embeds: [embed] }) - .then(await target.roles.add(role.id)); - } - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Moderation/slowmode.js b/unused/commands/Moderation/slowmode.js @@ -1,107 +0,0 @@ -const Discord = require("discord.js"); -module.exports = { - name: "slowmode", - UserPerms: ["MANAGE_CHANNELS"], - description: "Set slowmode at a specific channel", - BotPerms: ["MANAGE_CHANNELS"], - usage: "(Time)", - category: "Moderation", - run: async (client, interaction, args, utils) => { - await interaction.deleteReply(); - const menu = new Discord.MessageSelectMenu() - .setCustomId("select") - .setPlaceholder("Select a time") - .addOptions([ - { label: "OFF", value: "OFF" }, - { label: "5s", value: "5s" }, - { label: "10s", value: "10s" }, - { label: "15s", value: "15s" }, - { label: "30s", value: "30s" }, - { label: "1m", value: "1m" }, - { label: "2m", value: "2m" }, - { label: "5m", value: "5m" }, - { label: "10m", value: "10m" }, - { label: "15m", value: "15m" }, - { label: "30m", value: "30m" }, - { label: "1h", value: "1h" }, - { label: "2h", value: "2h" }, - { label: "6h", value: "6h" }, - ]); - let row = new Discord.MessageActionRow().addComponents(menu); - const slowmoEmbed = new Discord.EmbedBuilder() - .setColor(client.color) - .setTitle("Slowmode") - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setAuthor( - `Requested by ${interaction.user.tag}`, - interaction.user.displayAvatarURL({ dynmiac: true }) - ); - interaction.channel - .send({ embeds: [slowmoEmbed], components: [row] }) - .then(sent => { - const filter = i => { - i.deferUpdate(); - if (i.user.id === interaction.user.id) return true; - return; - }; - const collector = sent.createMessageComponentCollector({ - filter, - componentType: "SELECT_MENU", - time: 30e3, - }); - - collector.on("collect", collected => { - collector.resetTimer({ time: 30e3 }); - menu.setPlaceholder(`Set to: ${collected.values[0]}`); - row = new Discord.MessageActionRow().addComponents(menu); - if (collected.values[0] !== "OFF") { - const embed = new Discord.EmbedBuilder() - .setColor("GREEN") - .setTitle("Slowmode Added") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**Channel**", `<#${interaction.channel.id}>`, true) - .addField( - "**Rate**", - `${utils.ms(utils.ms(collected.values[0]), { long: true })}`, - true - ) - .setFooter({ - text: - interaction.member.displayName || interaction.user.username, - iconURL: interaction.user.displayAvatarURL({ dynamic: true }), - }) - .setThumbnail(client.user.displayAvatarURL()); - interaction.channel.setRateLimitPerUser( - utils.ms(collected.values[0]) / 1e3 - ); - return sent.edit({ embeds: [embed], components: [row] }); - } else { - const embed = new Discord.EmbedBuilder() - .setColor("RED") - .setTitle("Slowmode Removed") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**Channel**", `<#${interaction.channel.id}>`, true) - .setFooter({ - text: - interaction.member.displayName || interaction.user.username, - iconURL: interaction.user.displayAvatarURL({ dynamic: true }), - }) - .setThumbnail(client.user.displayAvatarURL()) - .setColor("RED"); - interaction.channel.setRateLimitPerUser(0); - return sent.edit({ embeds: [embed], components: [row] }); - } - }); - - collector.on("end", () => { - menu.setDisabled(true); - row = new Discord.MessageActionRow().addComponents(menu); - return sent.edit({ components: [row] }); - }); - }); - }, -}; diff --git a/unused/commands/Moderation/unban.js b/unused/commands/Moderation/unban.js @@ -1,37 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "unban", - description: "Unban an user", - UserPerms: ["BAN_MEMBERS"], - BotPerms: ["BAN_MEMBERS"], - usage: "(User)", - category: "Moderation", - options: [ - { - type: 6, - name: "user", - description: "The person you want to unban", - required: true, - }, - ], - run: async (client, interaction, args) => { - try { - const user = await interaction.guild.members.unban(args[0]); - const embed = new EmbedBuilder() - .setTitle("User Unbanned") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", user.tag, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Moderation/unmute.js b/unused/commands/Moderation/unmute.js @@ -1,42 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "unmute", - UserPerms: ["MANAGE_MESSAGES"], - BotPerms: ["MANAGE_ROLES"], - usage: "(User)", - description: "Unmute an user", - category: "Moderation", - options: [ - { - type: 6, - name: "user", - description: "The user you want to unmute", - required: true, - }, - ], - run: async (client, interaction, args, utils, data) => { - try { - const user = interaction.guild.members.cache.get(args[0]); - const mutedrole = interaction.guild.roles.cache.get(data.Guild.Muterole); - if (!mutedrole) { - interaction.followUp({ content: "Mute role not found in database" }); - } - await user.roles.remove(mutedrole); - const embed = new EmbedBuilder() - .setTitle("User Unmuted") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", user.user.tag, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Moderation/warn.js b/unused/commands/Moderation/warn.js @@ -1,276 +0,0 @@ -const db = require("../../../models/warns"); -const moment = require("moment"); -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "warn", - UserPerms: ["MANAGE_MESSAGES"], - description: "Add/remove/show warnings of an user", - category: "Moderation", - options: [ - { - type: 1, - name: "add", - description: "Warn a user", - options: [ - { - type: 6, - name: "user", - description: "The user you want to warn", - required: true, - }, - { - type: 3, - name: "reason", - description: "The reason you want to warn", - required: false, - }, - ], - }, - { - type: 1, - name: "list", - description: "Show a list of warnings of an user", - options: [ - { - type: 6, - name: "user", - description: "The user to show the list", - required: true, - }, - ], - }, - { - type: 1, - name: "remove", - description: "Remove a latest warn for an user", - options: [ - { - type: 6, - name: "user", - description: "The user to remove warn", - required: true, - }, - { - type: 4, - name: "number", - description: "The number of warn", - required: true, - }, - ], - }, - { - type: 1, - name: "clear", - description: "Clear an user's warns", - options: [ - { - type: 6, - name: "user", - description: "The user to clear warns", - required: true, - }, - ], - }, - ], - run: async (client, interaction, args) => { - try { - if (args[0] == "add") { - const user = interaction.guild.members.cache.get(args[1]); - const reason = args[2] || "No reason provided"; - if (user.id === interaction.user.id) { - interaction.followUp({ content: "You can't warn yourself" }); - } - if ( - interaction.member.roles.highest.position < - user.roles.highest.position - ) { - interaction.followUp({ content: "You don't have enough hierarchy" }); - } - if ( - interaction.guild.me.roles.highest.position < - user.roles.highest.position - ) { - interaction.followUp({ - content: "Bot doesn't have enough hierarchy", - }); - } - if (reason.length > 1024) reason = reason.slice(0, 1021) + "..."; - db.findOne( - { Guild: interaction.guild.id, User: user.id }, - async (err, data) => { - if (!data) { - data = new db({ - Guild: interaction.guild.id, - User: user.id, - Warns: [ - { - Reason: reason, - Moderator: interaction.user.id, - Timestamp: Date.now(), - }, - ], - }); - } else { - data.Warns.push({ - Reason: reason, - Moderator: interaction.user.id, - Timestamp: Date.now(), - }); - } - data.save(); - } - ); - user - .send({ - content: `You have been warned in **${interaction.guild.name}** for **${reason}**`, - }) - .catch(e => {}); - const embed = new EmbedBuilder() - .setTitle("User Warned") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", user.user.tag, true) - .addField("**Reason**", reason, true) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setThumbnail(interaction.user.displayAvatarURL({ dynamic: true })) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - } else if (args[0] == "list") { - const user = interaction.guild.members.cache.get(args[1]); - db.findOne( - { Guild: interaction.guild.id, User: user.id }, - async (err, data) => { - if (data.Warns.map(e => e).length > 0) { - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setTitle(`${user.user.tag}'s warns`) - .setDescription( - data.Warns.map( - (w, i) => - `\`${i + 1}\` | Moderator: ${ - interaction.guild.members.cache.get(w.Moderator) || - "Unknown" - }\nReason: ${w.Reason}\nDate: ${moment( - w.Timestamp - ).format("MMMM Do YYYY")}` - ).join("\n\n") - ) - .setFooter( - `Made by ${client.author}`, - client.user.displayAvatarURL() - ) - .setTimestamp() - .setColor(client.color), - ], - }); - } else { - interaction.followUp({ - content: `User doesn't have any warns`, - }); - } - } - ); - } else if (args[0] == "remove") { - const user = interaction.guild.members.cache.get(args[1]); - if ( - interaction.member.roles.highest.position < - user.roles.highest.position - ) { - interaction.followUp({ content: "You don't have enough hierarchy" }); - } - if ( - interaction.guild.me.roles.highest.position < - user.roles.highest.position - ) { - interaction.followUp({ - content: "Bot doesn't have enough hierarchy", - }); - } - db.findOne( - { Guild: interaction.guild.id, User: user.id }, - async (err, data) => { - if (err) throw err; - if (data) { - const number = args[2] - 1; - data.Warns.splice(number, 1); - const embed = new EmbedBuilder() - .setTitle("Warn Removed") - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", user.user.tag, true) - .setFooter( - `Made by ${client.author}`, - client.user.displayAvatarURL() - ) - .setTimestamp() - .setThumbnail( - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor(client.color); - interaction.followUp({ embeds: [embed] }); - data.save(); - } else { - interaction.followUp({ - content: `User doesn't have any warns`, - }); - } - } - ); - } else { - const user = interaction.guild.members.cache.get(args[1]); - if ( - interaction.member.roles.highest.position < - user.roles.highest.position - ) { - interaction.followUp({ content: "You don't have enough hierarchy" }); - } - if ( - interaction.guild.me.roles.highest.position < - user.roles.highest.position - ) { - interaction.followUp({ - content: "Bot doesn't have enough hierarchy", - }); - } - db.findOne( - { Guild: interaction.guild.id, User: user.id }, - async (err, data) => { - if (data) { - await db.findOneAndDelete({ - Guild: interaction.guild.id, - User: user.id, - }); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setTitle(`Warns Cleared`) - .addField("**Moderator**", interaction.user.tag, true) - .addField("**User**", user.user.tag, true) - .setFooter( - `Made by ${client.author}`, - client.user.displayAvatarURL() - ) - .setTimestamp() - .setThumbnail( - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor(client.color), - ], - }); - } else { - interaction.followUp({ - content: `User doesn't have any warns`, - }); - } - } - ); - } - } catch (e) { - console.log(e); - interaction.followUp({ content: `**Error**: ${e.message}` }); - } - }, -}; diff --git a/unused/commands/Music/bassboost.js b/unused/commands/Music/bassboost.js @@ -1,53 +0,0 @@ -const levels = { - none: 0.0, - low: 0.2, - medium: 0.3, - high: 0.35, -}; -module.exports = { - name: "bassboost", - description: "Set filter/bassboost level", - category: "Music", - usage: "(Number)", - Premium: true, - options: [ - { - type: 3, - name: "level", - description: `Please provide a bassboost level`, - required: true, - choices: [ - { name: "low", value: "low" }, - { name: "medium", value: "medium" }, - { name: "high", value: "high" }, - { name: "none", value: "none" }, - ], - }, - ], - run: async (client, interaction, args) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - player.setEQ( - ...new Array(3) - .fill(null) - .map((_, i) => ({ band: i, gain: levels[args[0]] })) - ); - client.se( - interaction, - `āœ… | **Set the bassboost level to** \`${args[0]}\`` - ); - }, -}; diff --git a/unused/commands/Music/clearqueue.js b/unused/commands/Music/clearqueue.js @@ -1,24 +0,0 @@ -module.exports = { - name: "clear-queue", - description: "Clears the server queue", - category: "Music", - run: async (client, interaction, args) => { - const player = client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - player.queue.clear(); - client.se(interaction, "āœ… | **Cleared the queue!**"); - }, -}; diff --git a/unused/commands/Music/disconnect.js b/unused/commands/Music/disconnect.js @@ -1,25 +0,0 @@ -module.exports = { - name: "disconnect", - description: "To stop the music and clear the queue", - category: "Music", - run: async (client, interaction, args) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - return client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - return client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - - if (!player) client.err(interaction, "**Nothing is playing right now**"); - player.destroy(); - client.se(interaction, "šŸŽ¶| **Disconnected!**"); - }, -}; diff --git a/unused/commands/Music/grab.js b/unused/commands/Music/grab.js @@ -1,55 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "grab", - description: "Saves the current song to your Direct Messages", - run: async (client, interaction, args, utils) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - try { - const embed = new EmbedBuilder() - .setAuthor( - `Song saved: `, - "https://cdn.discordapp.com/emojis/897017864085712936.gif" - ) - .setThumbnail( - `https://img.youtube.com/vi/${player.queue.current.identifier}/mqdefault.jpg` - ) - .setURL(player.queue.current.uri) - .setColor(client.color) - .setTimestamp() - .setTitle(`**${player.queue.current.title}**`) - .addField( - `āŒ› Duration: `, - `\`${utils.prettyMs(player.queue.current.duration, { - colonNotation: true, - })}\``, - true - ) - .addField(`šŸŽµ Author: `, `\`${player.queue.current.author}\``, true) - .addField(`ā–¶ Play it:`, `\`${player.queue.current.uri}\``) - .addField(`šŸ”Ž Saved in:`, `<#${interaction.channel.id}>`) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }); - interaction.user.send({ embeds: [embed] }); - } catch (e) { - console.log(e); - return client.err(interaction, "**Your DM are disabled**"); - } - client.se(interaction, "āœ… | **Check your DM**"); - }, -}; diff --git a/unused/commands/Music/loop.js b/unused/commands/Music/loop.js @@ -1,53 +0,0 @@ -module.exports = { - name: "loop", - description: "Music loop", - category: "Music", - options: [ - { - type: 1, - name: "track", - description: "Loop the track", - options: [], - }, - { - type: 1, - name: "queue", - description: "Loop the whole queue", - options: [], - }, - ], - run: async (client, interaction, args) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - if (args[0] === "track") { - player.setTrackRepeat(player.trackRepeat ? false : true); - client.se( - interaction, - `šŸ”‚ \`Music loop is now ${ - player.trackRepeat ? "enabled" : "disabled" - }\`` - ); - } else { - player.setQueueRepeat(player.queueRepeat ? false : true); - client.se( - interaction, - `šŸ”‚ \`Queue Loop is now ${ - player.trackRepeat ? "enabled" : "disabled" - }\`` - ); - } - }, -}; diff --git a/unused/commands/Music/move.js b/unused/commands/Music/move.js @@ -1,50 +0,0 @@ -module.exports = { - name: "move", - description: "Moves a track to a specified position", - options: [ - { - type: 4, - name: "track", - description: "Track to move.", - required: true, - }, - { - type: 4, - name: "position", - description: "Moves selected track to the specified position.", - required: true, - }, - ], - run: async (client, interaction, args) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - const trackNum = args[0] - 1; - const dest = args[1] - 1; - if (trackNum < 0 || trackNum > player.queue.length - 1) { - client.err(interaction, "**Invalid track number**"); - } else if (dest < 0 || dest > player.queue.length - 1) { - client.err(interaction, "**Invalid track destination**"); - } else { - const track = player.queue[trackNum]; - player.queue.splice(trackNum, 1); - player.queue.splice(dest, 0, track); - client.se( - interaction, - `āœ… | **${track.title}** has been moved to position ${dest + 1}` - ); - } - }, -}; diff --git a/unused/commands/Music/nowplaying.js b/unused/commands/Music/nowplaying.js @@ -1,64 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "nowplaying", - description: "Show now playing music info", - category: "Music", - run: async (client, interaction, args, utils) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - interaction.followUp({ - embeds: [ - new EmbedBuilder() - .setAuthor( - `Current song playing:`, - client.user.displayAvatarURL({ - dynamic: true, - }) - ) - .addField( - "šŸ•°ļø Duration: ", - `${ - utils.progressBar( - player.position, - player.queue.current.duration, - 15 - ).Bar - } \`${utils.prettyMs(player.position, { - colonNotation: true, - })} / ${utils.prettyMs(player.queue.current.duration, { - colonNotation: true, - })}\`` - ) - .setThumbnail(player.queue.current.displayThumbnail()) - .setURL(player.queue.current.uri) - .setColor(client.color) - .setTitle(`šŸŽ¶ **${player.queue.current.title}** šŸŽ¶`) - .addField(`šŸŽ¼ Song By: `, `\`${player.queue.current.author}\``, true) - .addField( - `šŸ”¢ Queue length: `, - `\`${player.queue.length} Songs\``, - true - ) - .setFooter( - `Requested by: ${player.queue.current.requester.tag}`, - player.queue.current.requester.displayAvatarURL({ - dynamic: true, - }) - ), - ], - }); - }, -}; diff --git a/unused/commands/Music/pause.js b/unused/commands/Music/pause.js @@ -1,29 +0,0 @@ -module.exports = { - name: "pause", - description: "Pauses the current playing music", - category: "Music", - run: async (client, interaction, args) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - return client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - return client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - - if (!player) client.err(interaction, "**Nothing is playing right now**"); - if (player.paused) { - client.err(interaction, "Music is already paused"); - } else { - player.pause(true); - client.se(interaction, "**āÆ Paused!**"); - } - }, -}; diff --git a/unused/commands/Music/play.js b/unused/commands/Music/play.js @@ -1,145 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "play", - description: "Plays your favourite music from YouTube or Spotify", - usage: "(Song/Song URL)", - category: "Music", - options: [ - { - type: 3, - name: "song", - description: "Play song or a playlist in the voice channel", - required: true, - }, - ], - run: async (client, interaction, args, utils) => { - const voiceChannel = interaction.member.voice.channel; - if (!voiceChannel) { - client.err( - interaction, - "**You must be in a voice channel to use this command**" - ); - } else { - const player = client.manager.create({ - guild: interaction.guild.id, - voiceChannel: voiceChannel.id, - textChannel: interaction.channel.id, - selfDeafen: true, - volume: 100, - }); - if (player.state != "CONNECTED") await player.connect(); - const search = args[0]; - let res; - try { - res = await player.search(search, interaction.user); - if (res.loadType === "LOAD_FAILED") { - if (!player.queue.current) player.destroy(); - client.err(interaction, "**There was an error while searching**"); - } - } catch { - client.err(interaction, "**There was an error while searching**"); - } - switch (res.loadType) { - case "NO_MATCHES": - if (!player.queue.current) player.destroy(); - client.err(interaction, "**No results were found**"); - break; - case "TRACK_LOADED": - player.queue.add(res.tracks[0]); - if (!player.playing && !player.paused && !player.queue.length) { - player.play(); - } - const SongAddedEmbed = new EmbedBuilder() - .setAuthor(`Added to queue`, client.user.displayAvatarURL()) - .setThumbnail(res.tracks[0].displayThumbnail()) - .setColor(client.color) - .setDescription(`[${res.tracks[0].title}](${res.tracks[0].uri})`) - .addField( - "Duration", - `\`${utils.prettyMs(res.tracks[0].duration, { - colonNotation: true, - })}\``, - true - ); - if (player.queue.totalSize > 1) { - SongAddedEmbed.addField( - "Position in queue", - `${player.queue.size - 0}`, - true - ); - } - interaction.followUp({ embeds: [SongAddedEmbed] }); - break; - case "PLAYLIST_LOADED": - player.queue.add(res.tracks); - await player.play(); - const SongAdded = new EmbedBuilder() - .setAuthor( - `Playlist added to queue`, - client.user.displayAvatarURL() - ) - .setThumbnail(res.tracks[0].displayThumbnail()) - .setColor(client.color) - .setDescription(`[${res.playlist.name}](${args[0]})`) - .addField("Enqueued", `\`${res.tracks.length}\` songs`, false) - .addField( - "Playlist duration", - `\`${utils.prettyMs(res.playlist.duration, { - colonNotation: true, - })}\``, - false - ); - interaction.followUp({ embeds: [SongAdded] }); - break; - case "SEARCH_RESULT": - const track = res.tracks[0]; - player.queue.add(track); - if (!player.playing && !player.paused && !player.queue.length) { - const SongAddedEmbed = new EmbedBuilder() - .setAuthor(`Added to queue`, client.user.displayAvatarURL()) - .setThumbnail(track.displayThumbnail()) - .setColor(client.color) - .setDescription(`[${track.title}](${track.uri})`) - .addField( - "Duration", - `\`${utils.prettyMs(track.duration, { - colonNotation: true, - })}\``, - true - ); - if (player.queue.totalSize > 1) { - SongAddedEmbed.addField( - "Position in queue", - `${player.queue.size - 0}`, - true - ); - } - player.play(); - interaction.followUp({ embeds: [SongAddedEmbed] }); - } else { - const SongAddedEmbed = new EmbedBuilder() - .setAuthor(`Added to queue`, client.user.displayAvatarURL()) - .setThumbnail(track.displayThumbnail()) - .setColor(client.color) - .setDescription(`[${track.title}](${track.uri})`) - .addField( - "Duration", - `\`${utils.prettyMs(track.duration, { - colonNotation: true, - })}\``, - true - ); - if (player.queue.totalSize > 1) { - SongAddedEmbed.addField( - "Position in queue", - `${player.queue.size - 0}`, - true - ); - } - interaction.followUp({ embeds: [SongAddedEmbed] }); - break; - } - } - } - }, -}; diff --git a/unused/commands/Music/queue.js b/unused/commands/Music/queue.js @@ -1,114 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const { Pagination } = require("cath"); -module.exports = { - name: "queue", - description: "To show the songs queue", - category: "Music", - run: async (client, interaction, args, utils) => { - const pagination = new Pagination(); - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - if (!player.queue || !player.queue.length || player.queue === 0) { - const QueueEmbed = new EmbedBuilder() - .setAuthor( - "Currently playing", - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor(client.color) - .setDescription( - `[${player.queue.current.title}](${player.queue.current.uri})` - ) - .addField("Requested by", `${player.queue.current.requester}`, true) - .addField( - "Duration", - `${ - utils.progressBar( - player.position, - player.queue.current.duration, - 15 - ).Bar - } \`[${utils.prettyMs(player.position, { - colonNotation: true, - })} / ${utils.prettyMs(player.queue.current.duration, { - colonNotation: true, - })}]\`` - ) - .setTimestamp() - .setThumbnail(player.queue.current.displayThumbnail()); - interaction.followUp({ embeds: [QueueEmbed] }); - } - const queue = player.queue.map((t, i) => { - t.index = i; - return t; - }); - const mapped = queue.map((t, i) => { - if (i == 0) { - return `**Up Next:** \n\`${t.index + 1}:\` [${t.title}](${ - t.uri - }) \n\`${utils.prettyMs(t.duration, { - colonNotation: true, - })}\` **|** Requested by: ${t.requester}\n`; - } else { - return `\n\`${t.index + 1}:\` [${t.title}](${ - t.uri - }) \n\`${utils.prettyMs(t.duration, { - colonNotation: true, - })}\` **|** Requested by: ${t.requester}\n`; - } - }); - - const c = pagination.chunk(mapped, 10).map(x => x.join("\n")); - const embed = new EmbedBuilder() - .setAuthor( - `Queue for ${interaction.guild.name}`, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor(client.color) - .setDescription(c[0]) - .addField("Total songs: \n", `\`${player.queue.totalSize - 1}\``, true) - .addField( - "Total length: \n", - `\`${utils.prettyMs(player.queue.duration, { - colonNotation: true, - })}\``, - true - ) - .addField("Requested by:", `${player.queue.current.requester}`, true) - .addField( - "Current song duration:", - `${ - utils.progressBar(player.position, player.queue.current.duration, 15) - .Bar - } \`[${utils.prettyMs(player.position, { - colonNotation: true, - })} / ${utils.prettyMs(player.queue.current.duration, { - colonNotation: true, - })}]\`` - ) - .addField( - "**Currently Playing:**", - `[${player.queue.current.title}](${player.queue.current.uri})`, - true - ) - .setTimestamp() - .setFooter({ text: `Page 1 of ${c.length}` }) - .setThumbnail(player.queue.current.displayThumbnail()); - const msg = await interaction.followUp({ - embeds: [embed], - }); - pagination.pagination(msg, interaction.user, c); - }, -}; diff --git a/unused/commands/Music/remove.js b/unused/commands/Music/remove.js @@ -1,42 +0,0 @@ -module.exports = { - name: "remove", - description: "Remove a song from the queue", - category: "Music", - options: [ - { - type: 4, - name: "track", - description: "Remove a song from the queue", - required: true, - }, - ], - run: async (client, interaction, args) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - if (args[0] > player.queue.length) { - client.err( - interaction, - `The queue has only **${player?.queue.length}** songs` - ); - } else { - client.se( - interaction, - `āœ… | **Removed track** \`${parseInt(args[0])}\` from the queue!` - ); - player.queue.remove(parseInt(args[0]) - 1); - } - }, -}; diff --git a/unused/commands/Music/resume.js b/unused/commands/Music/resume.js @@ -1,28 +0,0 @@ -module.exports = { - name: "resume", - description: "Pauses the current playing music", - category: "Music", - run: async (client, interaction) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - if (player.playing) { - client.err(interaction, "**Music is already resumed!**"); - } else { - player.pause(false); - client.se(interaction, "**āÆ Resumed!**"); - } - }, -}; diff --git a/unused/commands/Music/seek.js b/unused/commands/Music/seek.js @@ -1,53 +0,0 @@ -module.exports = { - name: "seek", - description: "seek the current playing music", - category: "Music", - usage: "(Number)", - options: [ - { - type: 3, - name: "position", - description: "Enter a timestamp you want to seek to. Example - 2m 10s", - required: true, - }, - ], - run: async (client, interaction, args, utils) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - const SeekTo = utils.parseTimestring(args[0]); - if (SeekTo < 0 || SeekTo >= player.queue.current.duration / 1000) { - client.err( - interaction, - `You may seek from \`0\` - \`${player.queue.current.duration}\`\nExample - 2m 10s` - ); - } - if (!player.queue.current.isSeekable) { - client.err(interaction, "**I'm not able to seek this song**"); - } - if (!SeekTo) { - client.err( - interaction, - `You may seek from \`0\` - \`${player.queue.current.duration}\`\nExample - 2m 10s` - ); - } - player.seek(SeekTo * 1000); - client.se( - interaction, - "āœ… | **Successfully moved the song to **", - `\`${SeekTo}\`` - ); - }, -}; diff --git a/unused/commands/Music/shuffle.js b/unused/commands/Music/shuffle.js @@ -1,27 +0,0 @@ -module.exports = { - name: "shuffle", - description: "Music shuffle", - category: "Music", - run: async (client, interaction) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - if (!player.queue || !player.queue.length || player.queue.length === 0) { - client.err(interaction, "**Not enough songs in the queue to shuffle**"); - } - player.queue.shuffle(); - client.se(interaction, "āœ… | Shuffled the queue"); - }, -}; diff --git a/unused/commands/Music/skip.js b/unused/commands/Music/skip.js @@ -1,38 +0,0 @@ -module.exports = { - name: "skip", - description: "Skips to a song in a queue", - category: "Music", - options: [ - { - type: 4, - name: "position", - description: "Skips to a specific song in the queue", - required: true, - }, - ], - run: async (client, interaction, args) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player?.queue?.current) { - client.err(interaction, "**Nothing is playing right now**"); - } - const skipTo = args[0]; - if (skipTo < 1 || skipTo > player.queue.length) { - client.err(interaction, "āŒ | **Invalid number to skip!**"); - } - player.stop(skipTo); - client.se(interaction, `ā­ Skipped \`${Number(skipTo)}\` songs`); - }, -}; diff --git a/unused/commands/Music/volume.js b/unused/commands/Music/volume.js @@ -1,37 +0,0 @@ -module.exports = { - name: "volume", - description: "To change the server song queue volume", - category: "Music", - description: "Set volume level of the music", - options: [ - { - type: 4, - name: "volume", - description: "The volume of the player. Default is 100", - required: true, - }, - ], - run: async (client, interaction) => { - const player = await client.manager.get(interaction.guild.id); - const channel = interaction.member.voice.channel.id; - if (!channel) { - client.err( - interaction, - "**You must be in a voice channel to use this command.**" - ); - } - if (player.voiceChannel !== channel) { - client.err( - interaction, - "**You must be in the same voice channel as me to use this command**" - ); - } - if (!player) client.err(interaction, "**Nothing is playing right now**"); - const vol = parseInt(args[0]); - player.setVolume(vol); - client.se( - interaction, - `šŸ”‰ | The player's volume has been set to \`${player.volume}\`` - ); - }, -}; diff --git a/unused/commands/Utilities/add.js b/unused/commands/Utilities/add.js @@ -1,68 +0,0 @@ -module.exports = { - name: "economy", - category: "Owner", - description: "Add/Remove coins from someone", - Owner: true, - options: [ - { - type: 1, - 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: 1, - 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, - }, - ], - }, - ], - 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`, - }); - } - }, -}; diff --git a/unused/commands/Utilities/afk.js b/unused/commands/Utilities/afk.js @@ -1,38 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -module.exports = { - name: "afk", - description: "Tell someone you are AFK.", - usage: "{Status}", - category: "Utilities", - - options: [ - { - type: 3, - name: "status", - description: "The status that shows to user while you are AFK", - required: false, - }, - ], - run: async (client, interaction, args) => { - const uuser = interaction.guild.members.cache.get(interaction.user.id); - const content = args[0] || "No status provided."; - uuser.setNickname(`[AFK] ${interaction.user.username}`).catch(); - await client.data.AFK(interaction.user.id, content); - const embed = new EmbedBuilder() - .setDescription( - `${interaction.user.username} is set into AFK.\nStatus : ${content}` - ) - .setTimestamp() - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setColor(client.color) - .setAuthor({ - text: interaction.user.username, - iconURL: interaction.user.displayAvatarURL({ dynamic: true }), - }) - .setURL(client.web); - interaction.followUp({ embeds: [embed] }); - }, -}; diff --git a/unused/commands/Utilities/codebin.js b/unused/commands/Utilities/codebin.js @@ -1,17 +0,0 @@ -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 }); - } - }, -}; diff --git a/unused/commands/Utilities/draw.js b/unused/commands/Utilities/draw.js @@ -1,85 +0,0 @@ -const { EmbedBuilder, MessageActionRow, MessageButton } = require("discord.js"); -const draws = require("../../../util/Data/draws.json"); -module.exports = { - name: "draw", - description: "Buy a lucky draw", - run: async (client, message, args, utils) => { - const embed = new EmbedBuilder() - .setTitle("**__Daily Lucky Draw__**") - .setColor(client.color) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setDescription( - "Welcome to the Lucky Draw,\nclick `Spin`, so that the draw spins and hits a random item.\nClick `Info` to find out how high the probability is\n that a particular item will be unlocked" - ) - .addFields( - draws[0].map(c => { - return { name: c.name, value: c.emoji, inline: true }; - }) - ); - - const button1 = new MessageButton() - .setStyle("SUCCESS") - .setEmoji("šŸ”„") - .setLabel("Spin") - .setCustomId("spin"); - const button2 = new MessageButton() - .setStyle("PRIMARY") - .setEmoji("894962394932064346") - .setLabel("Info") - .setCustomId("spininfo"); - - const row = new MessageActionRow().addComponents([button1, button2]); - const msg = await message.channel.send({ - embeds: [embed], - components: [row], - }); - const filter = i => - ["spin", "spininfo"].includes(i.customId) && - i.user.id === message.author.id; - const collector = msg.createMessageComponentCollector({ - filter, - time: 999999, - }); - function select() { - let pick = Math.floor(Math.random() * 100); - for (const g in draws[0]) { - pick -= draws[0][g].percent; - if (pick <= 0) { - return `You got **${draws[0][g].name}** with propability **${draws[0][g].percent}%**`; - } - } - } - console.log(utils.colorize("test").magenta); - collector.on("collect", i => { - if (i.customId === "spin") { - i.reply({ - content: select(), - }); - } - if (i.customId === "spininfo") { - i.reply({ - embeds: [ - new EmbedBuilder() - .setTitle("**__Information Table__**") - .addFields( - draws[0].map(c => { - return { - name: `**${c.name}**`, - value: `Percentage: ${c.percent}%`, - inline: true, - }; - }) - ) - .addField("Name:", "**Item 1**") - .addField("Percent:", "**69**") - .addField("Emoji:", ":bughuntergold:"), - ], - }); - } - }); - }, -}; diff --git a/unused/commands/Utilities/emoji.js b/unused/commands/Utilities/emoji.js @@ -1,83 +0,0 @@ -const { Util } = require("discord.js"); -module.exports = { - name: "emoji", - usage: "(Emoji)", - description: "Show an emoji URL", - category: "Utilities", - - options: [ - { - type: 3, - name: "first", - description: "The first emoji", - required: true, - }, - { - type: 3, - name: "second", - description: "The second emoji", - required: false, - }, - { - type: 3, - name: "third", - description: "The third emoji", - required: false, - }, - { - type: 3, - name: "forth", - description: "The forth emoji", - required: false, - }, - { - type: 3, - name: "fifth", - description: "The fifth emoji", - required: false, - }, - { - type: 3, - name: "sixth", - description: "The sixth emoji", - required: false, - }, - { - type: 3, - name: "seventh", - description: "The seventh emoji", - required: false, - }, - { - type: 3, - name: "eighth", - description: "The eighth emoji", - required: false, - }, - { - type: 3, - name: "ninth", - description: "The ninth emoji", - required: false, - }, - { - type: 3, - name: "tenth", - description: "The tenth emoji", - required: false, - }, - ], - run: async (client, interaction, args) => { - await interaction.deleteReply(); - for (const rawEmoji of args) { - const parsedEmoji = Util.parseEmoji(rawEmoji); - if (parsedEmoji.id) { - const extension = parsedEmoji.animated ? ".gif" : ".png"; - const url = `https://cdn.discordapp.com/emojis/${ - parsedEmoji.id + extension - }`; - await interaction.channel.send({ content: `Emoji URL:\n${url}` }); - } - } - }, -}; diff --git a/unused/commands/Utilities/emojiadd.js b/unused/commands/Utilities/emojiadd.js @@ -1,38 +0,0 @@ -module.exports = { - name: "emojiadd", - usage: "(Link) (Name)", - description: "Show an emoji URL or add the emoji to the server", - category: "Utilities", - UserPerms: ["MANAGE_EMOJIS_AND_STICKERS"], - BotPerms: ["MANAGE_EMOJIS_AND_STICKERS"], - options: [ - { - type: 3, - name: "link", - description: "The link you want to add", - required: true, - }, - { - type: 3, - name: "name", - description: "The emoji name you want to add", - required: true, - }, - ], - run: async (client, interaction, args) => { - try { - if (args[1].length < 2 || args[1].match(/\W/)) { - interaction.followUp({ - content: - "The emoji name must have at least 2 charcter and must only contain alphanumeric characters & underscore", - }); - } - interaction.guild.emojis.create(args[0], args[1]).then(() => { - const em = interaction.guild.emojis.cache.find(a => a.name == args[1]); - interaction.followUp(`Added <:${em.name}:${em.id}> to the server`); - }); - } catch (e) { - console.log(e); - } - }, -}; diff --git a/unused/commands/Utilities/emojify.js b/unused/commands/Utilities/emojify.js @@ -1,44 +0,0 @@ -module.exports = { - name: "emojify", - description: "Emojify", - options: [ - { - type: 3, - name: "word", - description: "word", - required: true, - }, - ], - run: async (client, interaction, args) => { - const s = { - 0: ":zero:", - 1: ":one:", - 2: ":two:", - 3: ":three:", - 4: ":four:", - 5: ":five:", - 6: ":six:", - 7: ":seven:", - 8: ":eight:", - 9: ":nine:", - "#": ":hash:", - "*": ":asterisk:", - "!": ":grey_exclamation:", - "?": ":grey_question:", - " ": " ", - }; - let ar = args - .join(" ") - .toLowerCase() - .split("") - .map(l => { - if (/[a-z]/g.test(l)) { - return `:regional_indicator_${l}:`; - } else if (s[l]) { - return `${s[l]}`; - } - }) - .join(""); - interaction.followUp({ content: ar }); - }, -}; diff --git a/unused/commands/Utilities/esnipe.js b/unused/commands/Utilities/esnipe.js @@ -1,131 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const moment = require("moment"); -module.exports = { - name: "editsnipe", - description: "Snipes a edited message", - category: "Utilities", - options: [ - { - type: 7, - name: "channel", - description: "The sniped channel", - required: true, - channelTypes: [0], - }, - { - type: 4, - name: "message", - description: "The sniped message", - required: false, - }, - ], - run: async (client, interaction, args) => { - var i = 0; - let description = ""; - const embed = new EmbedBuilder() - .setAuthor( - `Sniped by ${interaction.user.tag}`, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor(client.color) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setURL(client.web); - const snipes = client.esnipes.get(args[0]) || []; - if (interaction.guild.channels.cache.get(args[0]).type !== "GUILD_TEXT") { - interaction.followUp({ content: "Please provide a text channel" }); - } else if (args[1]) { - const msg = snipes[args[1] - 1]; - if (!msg) { - snipes.forEach(m => { - const map = []; - for (var i = 0; i < m.attachment?.length; i++) { - map.push( - `**Attchment ${i + 1}:** [Click to view](${m.attachment[i]})` - ); - } - if (m.author !== "No Author") { - description += `\n\n**Author:** ${m.author.username}#${ - m.author.discriminator - } (Deleted ${moment(m.date).fromNow()})\n**ID:** ${ - m.author.id - }\n**Old Content:** ${m.oldContent}\n**New Content:** ${ - m.newContent - }\n${map ? map.join("\n") : ""}`; - i++; - } else { - description += `\n\n**Author:** None (Deleted ${moment( - m.date - ).fromNow()})\n\n**Old Content:** ${ - m.oldContent - }\n**New Content:** ${m.newContent}\n${map ? map.join("\n") : ""}`; - i++; - } - }); - embed.setDescription(description); - return interaction.followUp({ embeds: [embed] }); - } else { - const map = []; - for (var i = 0; i < msg.attachment?.length; i++) { - map.push( - `**Attchment ${i + 1}:** [Click to view](${msg.attachment[i]})` - ); - } - if (msg.author !== "No Author") { - description += `\n\n**Author:** ${msg.author.username}#${ - msg.author.discriminator - } (Deleted ${moment(msg.date).fromNow()})\n**ID:** ${ - msg.author.id - }\n**Old Content:** ${m.oldContent}\n**New Content:** ${ - m.newContent - }\n${map ? map.join("\n") : ""}`; - i++; - } else { - description += `\n\n**Author:** None (Deleted ${moment( - msg.date - ).fromNow()})\n\n**Old Content:** ${m.oldContent}\n**New Content:** ${ - m.newContent - }\n${map ? map.join("\n") : ""}`; - i++; - } - embed.setDescription(description); - return interaction.followUp({ embeds: [embed] }); - } - } else if (!snipes.length) { - interaction.followUp({ - content: "There isn't any snipe in this channel yet", - }); - } else { - snipes.forEach(m => { - const map = []; - for (var i = 0; i < m.attachment?.length; i++) { - map.push( - `**Attchment ${i + 1}:** [Click to view](${m.attachment[i]})` - ); - } - if (m.author !== "No Author") { - description += `\n\n**Author:** ${m.author.username}#${ - m.author.discriminator - } (Deleted ${moment(m.date).fromNow()})\n**ID:** ${ - m.author.id - }\n**Old Content:** ${m.oldContent}\n**New Content:** ${ - m.newContent - }\n${map ? map.join("\n") : ""}`; - i++; - } else { - description += `\n\n**Author:** None (Deleted ${moment( - m.date - ).fromNow()})\n\n**Old Content:** ${m.oldContent}\n**New Content:** ${ - m.newContent - }\n${map ? map.join("\n") : ""}`; - i++; - } - }); - embed.setDescription(description); - return interaction.followUp({ embeds: [embed] }); - } - }, -}; diff --git a/unused/commands/Utilities/giveaway.js b/unused/commands/Utilities/giveaway.js @@ -1,144 +0,0 @@ -const GiveawaysClient = require("../../client/GiveawaysClient"); -module.exports = { - name: "giveaway", - description: "Giveaway", - UserPerms: ["MANAGE_MESSAGES"], - options: [ - { - type: 1, - 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: [0], - }, - { - 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: 1, - name: "reroll", - description: "Reroll a giveaway", - options: [ - { - type: 3, - name: "message", - description: "The message ID of the giveaway", - required: true, - choices: [], - }, - ], - }, - { - type: 1, - 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); - } - } - }, -}; diff --git a/unused/commands/Utilities/lyrics.js b/unused/commands/Utilities/lyrics.js @@ -1,58 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const axios = require("axios"); -const { Pagination } = require("cath"); -module.exports = { - name: "lyrics", - description: "Get lyrics for the currently playing song", - category: "Music", - usage: "(Song)", - options: [ - { - type: 3, - name: "song", - description: "The song to search", - required: true, - }, - ], - run: async (client, interaction, args) => { - const splitlyrics = new Pagination(); - const lyricsdata = await axios - .get( - `${process.env.api}/api/v1/lyrics?name=${encodeURIComponent(args[0])}` - ) - .then(res => res.data); - if (!lyricsdata?.lyrics) { - interaction.followUp({ - content: `**No lyrics are found for ${args[0]}**`, - }); - } else { - const splittedLyrics = splitlyrics.chunk(lyricsdata.lyrics, 1024); - const lyricsEmbed = new EmbedBuilder() - .setAuthor(`Lyrics`) - .setColor("YELLOW") - .addFields( - { name: "Song Name", value: lyricsdata.title, inline: true }, - { name: "ā €", value: "ā €", inline: true }, - { - name: "Full Lyrics", - value: `${ - process.env.api - }/api/v1/lyrics/full?name=${encodeURIComponent(args[0])}`, - inline: true, - } - ) - .setDescription(splittedLyrics[0]) - .setFooter({ text: `Page 1 of ${splittedLyrics.length}` }) - .setThumbnail(lyricsdata.image) - .setTimestamp(); - const lyricsMsg = await interaction.followUp({ embeds: [lyricsEmbed] }); - if (splittedLyrics.length > 1) { - await splitlyrics.pagination( - lyricsMsg, - interaction.user, - splittedLyrics - ); - } - } - }, -}; diff --git a/unused/commands/Utilities/modmail.js b/unused/commands/Utilities/modmail.js @@ -1,166 +0,0 @@ -const schema = require("../../models/modmail"); -const { EmbedBuilder, MessageAttachment } = require("discord.js"); -const fs = require("fs"); -module.exports = { - name: "modmail", - BotPerm: "MANAGE_CHANNELS", - description: "Create a modmail thread with moderators in a server", - usage: "(Emoji) (Text)", - category: "Utilities", - run: async (client, interaction, args) => { - try { - const data = await schema.findOne({ Guild: interaction.guild.id }); - if ( - !data || - !data.Role || - !data.Category || - !data.Choices || - !Object.entries(data.Choices).length || - !interaction.guild.roles.cache.has(data.Role) || - !interaction.guild.channels.cache.find( - value => value.type == "GUILD_CATEGORY" && value.id === data.Category - ) - ) { - return interaction.followUp({ - content: `This server isn't setup properly. Please find an administrator or a moderator to specify a category, role and choices for users to create thread. The issue may be caused by invalid role/category.`, - }); - } - interaction.deleteReply(); - const choices = Object.entries(data.Choices); - const embed = new EmbedBuilder() - .setDescription( - `Choices of topic:\n${choices - .map(value => `${value[1].emoji} - ${value[1].text}`) - .join("\n")}` - ) - .setAuthor( - interaction.guild.name, - interaction.guild.iconURL({ dynamic: true }) - ) - .setColor(client.color) - .setTimestamp() - .setTitle(`${interaction.user.tag}'s modmail`); - const msg = await interaction.user.send({ - content: "Please react below", - embeds: [embed], - }); - choices.map(async value => { - await msg.react(value[1].emoji); - }); - const filter = (reaction, user) => { - return ( - choices.map(value => value[1].emoji).includes(reaction.emoji.name) && - user.id !== interaction.user.id - ); - }; - const reactionCollector = msg.createReactionCollector({ - filter, - }); - let type; - reactionCollector - .on("collect", async (reaction, user) => { - type = choices.find(value => value[1].emoji == reaction.emoji.name); - await msg.delete(); - reactionCollector.stop("done"); - }) - .on("end", async (collected, reason) => { - if (reason.toLowerCase() == "time") { - return interaction.user.send({ - content: "You didn't provide a reaction in-time. Cancelled", - }); - } else { - const channel = await interaction.guild.channels.create( - `${interaction.user.username}-${interaction.user.discriminator}`, - { - reason: "Modmail thread", - parent: data.Category, - topic: `${type[1].text}`, - type: "text", - } - ); - const transcript = []; - channel.permissionOverwrites.create(data.Role, { - VIEW_CHANNEL: true, - SEND_MESSAGES: true, - }); - channel.permissionOverwrites.create(interaction.guild.id, { - VIEW_CHANNEL: false, - }); - channel.send({ - content: `A modmail thread has been started by **${interaction.user.tag}** with type: **${type[1].text}**\nUse \`close\` to close the thread`, - }); - interaction.user.send({ - content: "Thread created. Use `close` to close the thread.", - }); - const filter = m => !m.author.bot; - const channelCollector = channel.createMessageCollector({ filter }); - const dmCollector = - interaction.user.dmChannel.createMessageCollector({ - filter, - }); - channelCollector.on("collect", async m => { - if (m.content.toLowerCase().startsWith("close")) { - interaction.user.send({ - content: `Admin has closed the thread`, - }); - channel.send({ content: "Closing.." }); - dmCollector.stop("done"); - channelCollector.stop("done"); - fs.writeFileSync( - `./${interaction.user.id}.txt`, - transcript.join("\n") - ); - const attachment = new MessageAttachment( - fs.createReadStream(`./${interaction.user.id}.txt`), - `Transcript-${interaction.user.id}` - ); - await channel.send({ - content: "Transcript:", - files: [attachment], - }); - fs.unlinkSync(`./transcript-${interaction.user.id}.txt`); - setTimeout(() => { - channel.delete(); - }, 1000 * 10); - } - interaction.user.send({ content: `**Admin**: ${m.content}` }); - transcript.push(`**Admin**: ${m.content}`); - }); - dmCollector.on("collect", async m => { - if (m.content.toLowerCase().startsWith("close")) { - interaction.user.send({ content: "Closed" }); - channel.send({ - content: `${interaction.user.tag} has closed the thread`, - }); - dmCollector.stop("done"); - channelCollector.stop("done"); - fs.writeFileSync( - `./${interaction.user.id}.txt`, - transcript.join("\n") - ); - const attachment = new MessageAttachment( - fs.createReadStream(`./${interaction.user.id}.txt`), - `Transcript-${interaction.user.id}` - ); - await channel.send({ - content: "Transcript:", - files: [attachment], - }); - fs.unlinkSync(`./${interaction.user.id}.txt`); - setTimeout(() => { - channel.delete(); - }, 1000 * 60 * 12); - } - channel.send({ - content: `**${interaction.user.tag}**: ${m.content}`, - }); - transcript.push(`**${interaction.user.tag}**: ${m.content}`); - }); - } - }); - } catch (e) { - console.log(e); - return interaction.followUp({ content: "An error occured" }); - } - }, -}; diff --git a/unused/commands/Utilities/nsfw.js b/unused/commands/Utilities/nsfw.js @@ -1,150 +0,0 @@ -const { getreddit } = require("cath"); -const { MessageActionRow, MessageButton, EmbedBuilder } = require("discord.js"); -module.exports = { - name: "nsfw", - description: "NSFW command", - run: async (client, interaction) => { - const msg = await interaction.channel.send({ content: "Getting images" }); - async function embed() { - if (!interaction.channel.nsfw) { - const embed = new EmbedBuilder() - .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({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp(); - interaction.followUp({ embeds: [embed] }); - } - let subreddits = [ - "GodPussy", - "peachlips", - "vagina", - "GoneWild", - "WorkGoneWild", - "GoneWild30Plus", - "hentai", - "HentaiAnime", - "nekogirls", - "ass", - "BestBooties", - "BootyGIFs", - "booty_queens", - "BlowJob", - "blowjobs", - "blowjobgifs", - "OralSex", - "boobs", - "GrabHerTitties", - "titfuck", - "milf", - "OnlyHotMilfs", - "realmoms", - "thighs", - "PerfectThighs", - "thickthighs", - "PushHerHead", - "ThroatFuck", - ]; - const reddit = subreddits[Math.round(Math.random() * subreddits.length)]; - let data = await getreddit(reddit); - while (data.length === 0) { - while (data.image.length === 0) { - data = await getreddit(reddit); - } - } - let embed1 = null; - embed1 = new EmbedBuilder({ - 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 }), - }, - }); - return embed1; - } - - const row = new MessageActionRow().addComponents( - new MessageButton() - .setCustomId("reload") - .setLabel("Reload") - .setStyle("SUCCESS") - ); - const disabled = new MessageActionRow().addComponents( - new MessageButton() - .setCustomId("reload") - .setLabel("Reload") - .setStyle("SECONDARY") - .setDisabled(true) - ); - await msg.delete(); - let m = await interaction.followUp({ - embeds: [await embed()], - components: [row], - }); - - const collector = m.createMessageComponentCollector({ - componentType: "BUTTON", - time: 120000, - }); - collector.on("collect", async i => { - if (i.user.id === interaction.user.id) { - i.deferUpdate(); - await update(m); - collector.stop(); - } else { - i.reply({ - content: `These buttons aren't for you!`, - ephemeral: true, - }); - } - }); - collector.on("end", (mes, r) => { - if (r == "time") { - m.edit({ - components: [disabled], - }); - } - }); - - async function update(m) { - m.edit({ - embeds: [await embed()], - }).catch(null); - - const collector = m.createMessageComponentCollector({ - componentType: "BUTTON", - time: 120000, - }); - collector.on("collect", async i => { - if (i.user.id === interaction.user.id) { - i.deferUpdate(); - await update(m); - collector.stop(); - } else { - i.reply({ - content: `These buttons aren't for you!`, - ephemeral: true, - }); - } - }); - collector.on("end", (mes, r) => { - if (r == "time") { - m.edit({ - components: [disabled], - }); - } - }); - } - }, -}; diff --git a/unused/commands/Utilities/ship.js b/unused/commands/Utilities/ship.js @@ -1,41 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const block = "ā¬›"; -const heart = "šŸŸ„"; - -module.exports = { - name: "ship", - description: "Ship an user to an user", - usage: "(User) (User)", - category: "Fun", - options: [ - { - type: 6, - name: "1stuser", - description: "The user you want to ship", - required: true, - }, - { - type: 6, - name: "2nduser", - description: "The user you want to ship", - required: true, - }, - ], - run: async (client, interaction, args) => { - const user1 = interaction.guild.members.cache.get(args[0]).user.username; - const user2 = interaction.guild.members.cache.get(args[1]).user.username; - const loveEmbed = new EmbedBuilder() - .setColor("dd2e44") - .setFooter({ text: `Shipped by ${interaction.user.tag}` }) - .setTimestamp() - .setTitle(`šŸ’˜ | Shipping ${user1} and ${user2} | šŸ’˜`) - .setDescription(`šŸ”» | ${user1} \n${ship()}\nšŸ”ŗ | ${user2}`); - interaction.followUp({ embeds: [loveEmbed] }); - }, -}; -function ship() { - const hearts = Math.floor(Math.random() * 100); - const hearte = hearts / 10; - const str = `${heart.repeat(hearte)}${block.repeat(10 - hearte)} ${hearts}%`; - return str; -} diff --git a/unused/commands/Utilities/shorturl.js b/unused/commands/Utilities/shorturl.js @@ -1,35 +0,0 @@ -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}` }); - } - } - }, -}; diff --git a/unused/commands/Utilities/snipe.js b/unused/commands/Utilities/snipe.js @@ -1,125 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const moment = require("moment"); -module.exports = { - name: "snipe", - description: "Snipes a deleted message", - category: "Utilities", - options: [ - { - type: 7, - name: "channel", - description: "The sniped channel", - required: true, - channelTypes: [0], - }, - { - type: 4, - name: "message", - description: "The sniped message", - required: false, - }, - ], - run: async (client, interaction, args) => { - var i = 0; - let description = ""; - const embed = new EmbedBuilder() - .setAuthor( - `Sniped by ${interaction.user.tag}`, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setColor(client.color) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }) - .setTimestamp() - .setURL(client.web); - const snipes = client.snipes.get(args[0]) || []; - if (interaction.guild.channels.cache.get(args[0]).type !== "GUILD_TEXT") { - interaction.followUp({ content: "Please provide a text channel" }); - } else if (args[1]) { - const msg = snipes[args[1] - 1]; - if (!msg) { - snipes.forEach(m => { - const map = []; - for (var i = 0; i < m.attachment?.length; i++) { - map.push( - `**Attchment ${i + 1}:** [Click to view](${m.attachment[i]})` - ); - } - if (m.author !== "No Author") { - description += `\n\n**Author:** ${m.author.username}#${ - m.author.discriminator - } (Deleted ${moment(m.date).fromNow()})\n**ID:** ${ - m.author.id - }\n**Content:** ${m.content}\n${map ? map.join("\n") : ""}`; - i++; - } else { - description += `\n\n**Author:** None (Deleted ${moment( - m.date - ).fromNow()})\n\n**Content:** ${m.content}\n${ - map ? map.join("\n") : "" - }`; - i++; - } - }); - embed.setDescription(description); - return interaction.followUp({ embeds: [embed] }); - } else { - const map = []; - for (var i = 0; i < msg.attachment?.length; i++) { - map.push( - `**Attchment ${i + 1}:** [Click to view](${msg.attachment[i]})` - ); - } - if (msg.author !== "No Author") { - description += `\n\n**Author:** ${msg.author.username}#${ - msg.author.discriminator - } (Deleted ${moment(msg.date).fromNow()})\n**ID:** ${ - msg.author.id - }\n**Content:** ${msg.content}\n${map ? map.join("\n") : ""}`; - i++; - } else { - description += `\n\n**Author:** None (Deleted ${moment( - msg.date - ).fromNow()})\n\n**Content:** ${msg.content}\n${ - map ? map.join("\n") : "" - }`; - i++; - } - embed.setDescription(description); - return interaction.followUp({ embeds: [embed] }); - } - } else if (!snipes.length) { - interaction.followUp({ - content: "There isn't any snipe in this channel yet", - }); - } else { - snipes.forEach(m => { - const map = []; - for (var i = 0; i < m.attachment?.length; i++) { - map.push( - `**Attchment ${i + 1}:** [Click to view](${m.attachment[i]})` - ); - } - if (m.author !== "No Author") { - description += `\n\n**Author:** ${m.author.username}#${ - m.author.discriminator - } (Deleted ${moment(m.date).fromNow()})\n**ID:** ${ - m.author.id - }\n**Content:** ${m.content}\n${map ? map.join("\n") : ""}`; - i++; - } else { - description += `\n\n**Author:** None (Deleted ${moment( - m.date - ).fromNow()})\n\n**Content:** ${m.content}\n${ - map ? map.join("\n") : "" - }`; - i++; - } - }); - embed.setDescription(description); - return interaction.followUp({ embeds: [embed] }); - } - }, -}; diff --git a/unused/err.js b/unused/err.js @@ -1,227 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const client = require(".."); -/** - * @param {String} message - * @param {String} dir - * @param {String} file - * @param {String} err - */ -module.exports = async (message, dir, file, err) => { - switch (err) { - case 101: - err = "Invalid argument"; - break; - case 0: - err = "Missing argument"; - break; - case 1: - err = "Missing 'User' argument"; - break; - case 2: - err = "'User' argument can't be author"; - break; - case 3: - err = "Missing 'Role' argument"; - break; - case 4: - err = "Missing 'Message' argument"; - break; - case 5: - err = "Missing 'Number' argument"; - break; - case 6: - err = "Missing permission"; - break; - case 7: - err = "Invalid number"; - break; - case 8: - err = "User doesn't have enough hierarchy"; - break; - case 9: - err = "Bot doesn't have enough hierarchy"; - break; - case 10: - err = "There isn't any data"; - break; - case 11: - err = "Missing 'Emoji' argument"; - break; - case 12: - err = "Missing 'Text' argument"; - break; - case 13: - err = "'Text' argument must be less than or equal to 100"; - break; - case 14: - err = "The maximum of modmail choices is 5"; - break; - case 15: - err = "Emoji can't be found"; - break; - case 16: - err = "'Time' argument must be larger than 1 second"; - break; - case 17: - err = "Missing 'Command'/'Category' argument"; - break; - case 18: - err = "'Command'/'Category' is already disabled"; - break; - case 19: - err = "Missing 'Time' argument"; - break; - case 20: - err = "Insufficient balance"; - break; - case 21: - err = "Missing 'Item' argument"; - break; - case 22: - err = "Invalid Item"; - break; - case 23: - err = "You didn't have enough item to gift"; - break; - case 24: - err = "Item invalid or you don't have that item"; - break; - case 25: - err = "Inventory is empty"; - break; - case 26: - err = "Giveaway not found"; - break; - case 27: - err = "Missing 'Message ID' argument"; - break; - case 28: - err = "Missing 'Channel' argument"; - break; - case 29: - err = "'Time' argument is invalid"; - break; - case 30: - err = "Missing 'Winners' argument"; - break; - case 31: - err = "'Winner' argument must be a number"; - break; - case 32: - err = "Missing 'Prize' argument"; - break; - case 33: - err = "You cannot hug yourself"; - break; - case 34: - err = "There isn't any song playing in the server currently"; - break; - case 35: - err = "You must be in a voice channel"; - break; - case 36: - err = "The player has stopped and the queue has been cleared"; - break; - case 37: - err = "There is no queue"; - break; - case 38: - err = "Can't find the playlist at YouTube"; - break; - case 39: - err = "Can't join the voice channel"; - break; - case 40: - err = "Left the voice channel since there is no song at the queue"; - break; - case 41: - err = "I am not in a voice channel"; - break; - case 42: - err = "I can't find this song/video"; - break; - case 43: - err = "I can't find the song at SoundCloud"; - break; - case 44: - err = "I can't find the song at YouTube"; - break; - case 45: - err = "Invalid selection"; - break; - case 46: - err = "Missing 'Prefix' argument"; - break; - case 47: - err = "Missing 'Command' argument"; - break; - case 48: - err = "The attachment must be an image"; - break; - case 49: - err = "'Emoji' name must be more than 2 characters"; - break; - case 50: - err = - "The error maybe the link isn't a image, or the image size is too big"; - break; - case 51: - err = "Missing 'Query' argument"; - break; - case 52: - err = "This message doesn't exist in this channel"; - break; - case 53: - err = "Missing 'Code' argument"; - break; - case 54: - err = "'Text' argument must be less than or equal to 2000"; - break; - case 55: - err = "Different channel between user and client"; - break; - case 404: - err = "Error 404 - Not Found"; - break; - case 505: - err = "You have reached the maximum number of premium servers"; - break; - case 506: - err = "This server is already premium"; - break; - case 999: - err = "An unexpected error occured. Please try again."; - break; - default: - "Missing argument"; - break; - } - const pull = require(`../../commands/${dir}/${file}`); - const pre = await client.prefix(message); - const embed = new EmbedBuilder() - .setAuthor( - `Error from ${message.author.tag}`, - message.author.displayAvatarURL({ dynamic: true }) - ) - .setColor("RED") - .setDescription( - `${require("../config").ca}\nUse \`${pre}help ${ - pull.name - }\` to get help\n\n ` - ) - .addField( - `**>Usage**: ${pre}${pull.name} ${pull.usage ? pull.usage : ""}`, - `\`${err}\`` - ) - .setTimestamp() - .setThumbnail(client.user.displayAvatarURL({ dynamic: false })) - .setURL(client.web) - .setFooter({ - text: `Made by ${client.author}`, - iconURL: client.user.displayAvatarURL(), - }); - const msg = await message.reply({ embeds: [embed] }); - setTimeout(function () { - msg.delete(); - }, 15000); -}; diff --git a/unused/events/afk.js b/unused/events/afk.js @@ -1,25 +0,0 @@ -const client = require("../.."); -client.on("messageCreate", async message => { - if (message.author.bot || !message.guild) return; - const dataa = await client.data.getUser(message.author.id); - if (dataa?.AFK) { - message.reply({ - content: `Welcome back <@${dataa.User}>! I have removed your AFK status.`, - }); - const nothahaa = message.guild.members.cache.get(message.author.id); - nothahaa.setNickname(`${message.author.username}`).catch(); - await client.data.DelAFK(message.author.id); - } - if (message.mentions.users.first()?.id) { - const data1 = await client.data.getUser( - message.mentions.members.first()?.id - ); - if (data1?.AFK) { - message.reply({ - content: `**${ - message.mentions.members.first().user.tag - }** is in afk **(${data1.AFK})**`, - }); - } - } -}); diff --git a/unused/events/messageDelete.js b/unused/events/messageDelete.js @@ -1,26 +0,0 @@ -const client = require("../"); -client.on("messageDelete", async message => { - const all = []; - if (message.attachments) { - const files = message.attachments.map(e => e); - for (let i = 0; i < files.length; i++) { - all.push(files[i].url); - } - } - if (message.embeds) { - for (let i = 0; i < message.embeds.length; i++) { - const files = message.embeds.map(e => e.image?.url); - all.push(files); - } - } - const snipes = client.snipes.get(message.channel.id) || []; - snipes.push({ - channel: message.channel, - content: message.content ? message.content : "None", - author: message.author ? message.author : "No Author", - attachment: message.attachments ? all : null, - date: new Date(), - }); - snipes.splice(10); - client.snipes.set(message.channel.id, snipes); -}); diff --git a/unused/events/messageUpdate.js b/unused/events/messageUpdate.js @@ -1,28 +0,0 @@ -const client = require(".."); -client.on("messageUpdate", async (message, newMessage) => { - const all = []; - if (message.attachments) { - const files = message.attachments.map(e => e); - for (var i = 0; i < files.length; i++) { - const file = files[i]; - all.push(file.url); - } - } - if (message.embeds) { - for (var i = 0; i < message.embeds.length; i++) { - const files = message.embeds.map(e => e.image?.url); - all.push(files); - } - } - const esnipes = client.esnipes.get(message.channel.id) || []; - esnipes.push({ - channel: message.channel, - oldContent: message.content ? message.content : "None", - newContent: newMessage.content ? newMessage.content : "None", - author: message.author ? message.author : "No Author", - attachment: message.attachments ? all : null, - date: new Date(), - }); - esnipes.splice(10); - client.esnipes.set(message.channel.id, esnipes); -}); diff --git a/unused/events/raw.js b/unused/events/raw.js @@ -1,2 +0,0 @@ -const client = require("../.."); -client.on("raw", c => client.manager.updateVoiceState(c)); diff --git a/unused/events/starboard.js b/unused/events/starboard.js @@ -1,8 +0,0 @@ -const client = require("../.."); -const starboardclient = require("../client/StarboardClient"); -client.on("messageReactionAdd", async reaction => { - starboardclient.listener(reaction); -}); -client.on("messageReactionRemove", async reaction => { - starboardclient.listener(reaction); -}); diff --git a/unused/events/voiceStateUpdate.js b/unused/events/voiceStateUpdate.js @@ -1,63 +0,0 @@ -const { EmbedBuilder } = require("discord.js"); -const client = require("../.."); -client.on("voiceStateUpdate", async (oldState, newState) => { - const guildId = newState.guild.id; - const player = client.manager.get(guildId); - if (!player || player.state !== "CONNECTED") return; - - const stateChange = {}; - if (oldState.channel === null && newState.channel !== null) { - stateChange.type = "JOIN"; - } - if (oldState.channel !== null && newState.channel === null) { - stateChange.type = "LEAVE"; - } - if (oldState.channel !== null && newState.channel !== null) { - stateChange.type = "MOVE"; - } - if (oldState.channel === null && newState.channel === null) return; - if (newState.serverMute == true && oldState.serverMute == false) { - return player.pause(true); - } - if (newState.serverMute == false && oldState.serverMute == true) { - return player.pause(false); - } - if (stateChange.type === "MOVE") { - if (oldState.channel.id === player.voiceChannel) stateChange.type = "LEAVE"; - if (newState.channel.id === player.voiceChannel) stateChange.type = "JOIN"; - } - if (stateChange.type === "JOIN") stateChange.channel = newState.channel; - if (stateChange.type === "LEAVE") stateChange.channel = oldState.channel; - if (!stateChange.channel || stateChange.channel.id !== player.voiceChannel) { - return; - } - stateChange.members = stateChange.channel.members.filter( - member => !member.user.bot - ); - switch (stateChange.type) { - case "JOIN": - if (stateChange.members.size === 1 && player.paused) { - const emb = new EmbedBuilder() - .setAuthor(`Resumed`, client.user.displayAvatarURL()) - .setColor(client.config.color) - .setDescription( - `Resuming the player as somebody join the voice channel` - ); - client.channels.cache.get(player.textChannel).send({ embeds: [emb] }); - player.pause(false); - } - break; - case "LEAVE": - if (stateChange.members.size === 0 && !player.paused && player.playing) { - player.pause(true); - const emb = new EmbedBuilder() - .setAuthor(`Paused`, client.user.displayAvatarURL()) - .setColor(client.config.color) - .setDescription( - `The player has been paused as nobody is in the voice channel` - ); - client.channels.cache.get(player.textChannel).send({ embeds: [emb] }); - } - break; - } -}); diff --git a/unused/models/custom-commands.js b/unused/models/custom-commands.js @@ -1,11 +0,0 @@ -const mongoose = require("mongoose"); -module.exports = mongoose.model( - "custom-commands", - new mongoose.Schema({ - Guild: String, - Command: String, - Response: Array, - Delete: Boolean, - Random: Boolean, - }), -); diff --git a/unused/models/modmail.js b/unused/models/modmail.js @@ -1,11 +0,0 @@ -const mongoose = require("mongoose"); - -module.exports = mongoose.model( - "modmail", - new mongoose.Schema({ - Guild: String, - Category: String, - Choices: Object, - Role: String, - }), -);