update
This commit is contained in:
parent
91abc5839d
commit
f5955160e3
90 changed files with 8485 additions and 3470 deletions
|
@ -1,5 +1,6 @@
|
|||
TOKEN =
|
||||
MONGO =
|
||||
mongo =
|
||||
CLIENT_SECRET =
|
||||
CLIENT_ID =
|
||||
PORT =
|
||||
|
|
15
.eslintrc.js
Normal file
15
.eslintrc.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
module.exports = {
|
||||
env: {
|
||||
es6: true,
|
||||
node: true,
|
||||
},
|
||||
extends: "eslint:recommended",
|
||||
parserOptions: {
|
||||
ecmaVersion: 2020,
|
||||
sourceType: "module",
|
||||
},
|
||||
rules: {
|
||||
indent: ["error", 2],
|
||||
semi: ["error", "always"],
|
||||
},
|
||||
};
|
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -1,14 +1,2 @@
|
|||
node_modules/
|
||||
/.env
|
||||
commands/CODM/
|
||||
/dashboard/
|
||||
/util/Data/aliases.json
|
||||
/util/Data/attachments.json
|
||||
/util/Data/builds.json
|
||||
/util/Data/data.json
|
||||
/util/Data/perk.json
|
||||
/util/Data/skins.json
|
||||
/util/Data/weapons.json
|
||||
/util/functions/common.js
|
||||
/util/bash.sh
|
||||
/bot.js
|
3
.jshintrc
Normal file
3
.jshintrc
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"esversion": 10
|
||||
}
|
35
README.md
35
README.md
|
@ -1,38 +1,41 @@
|
|||
# cath.exe <img src = "https://cdn.discordapp.com/avatars/800966959268364288/36d6967911a31a638d65d1da472d2e14.png?size=1024" width = "45">
|
||||
|
||||
cath.exe is a CODM-theme based Discord Bot with many categories of commands like Moderation, Music and Economy. It is an open source project based on Project Lighthouse by path.exe, written in node.js(JavaScript), mainly using discord.js and mongoose module.<br><br>If you like this bot, feel free to **star** and **fork** the repository!<br>
|
||||
Click [here](https://discord.com/oauth2/authorize?client_id=800966959268364288&permissions=4231314550&scope=bot%20applications.commands) to invite cath.exe
|
||||
|
||||
[![Discord](https://img.shields.io/discord/718762019586572341?color=46828d&label=Support&style=for-the-badge)](https://discord.gg/SbQHChmGcp)
|
||||
![Support Server](https://img.shields.io/discord/718762019586572341?color=46828d&label=Support&style=for-the-badge)
|
||||
![Repo Stars](https://img.shields.io/github/stars/night0721/cath.exe?color=46828d&style=for-the-badge)
|
||||
|
||||
# How to deploy the bot? <img src = "https://cdn.discordapp.com/emojis/740978278055280722.png" width = "40">
|
||||
|
||||
1. Clone the repository
|
||||
|
||||
```cmd
|
||||
git clone https://github.com/night0721/cath.exe
|
||||
(or)
|
||||
gh repo clone night0721/cath.exe
|
||||
```
|
||||
or
|
||||
|
||||
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/night0721/cath.exe)
|
||||
[![repl.it](https://repl.it/badge/github/night0721/cath.exe)](https://repl.it/github/night0721/cath.exe)
|
||||
ro
|
||||
|
||||
2.Create a .env file from <a href = "https://github.com/night0721/cath.exe/blob/main/.env.example">.env.example </a><br><br>
|
||||
3. Create an application from [Discord Developer Portal](https://discord.com/developers/applications), then copy the
|
||||
- Bot Token<br>
|
||||
- Application ID(Client ID)<br>
|
||||
- Client Secret<br>
|
||||
<br>
|
||||
4. Create a MongoDB Connection URI from [here](https://www.mongodb.com) <br><br>
|
||||
5. Create 5 Webhooks in **Your Discord Server**: <br>
|
||||
- Server Log(Log new Server Added/Premium Server) <br>
|
||||
- Error Log(Log Unhandled Rejection Error) <br>
|
||||
2.Create a .env file from <a href = "https://github.com/night0721/cath.exe/blob/main/.env.example">.env.example</a><br><br> 3. Create an application from [Discord Developer Portal](https://discord.com/developers/applications), then copy the
|
||||
|
||||
- Bot Token<br>
|
||||
- Application ID(Client ID)<br>
|
||||
- Client Secret<br><br>
|
||||
|
||||
4. Create a MongoDB Connection URI from [here](https://www.mongodb.com)<br><br>
|
||||
5. Create 5 Webhooks in**Your Discord Server**:<br>
|
||||
|
||||
- Server Log(Log new Server Added/Premium Server)<br>
|
||||
- Error Log(Log Unhandled Rejection Error)<br>
|
||||
- Ready Log(Log when bot online)<br>
|
||||
- Command Log(Log command usage)<br>
|
||||
- DM Log(Log when someone send DM to Bot)<br><br>
|
||||
<img src = "https://media.discordapp.net/attachments/838006493361471508/853217575986659328/unknown.png" width="300"><br>
|
||||
- DM Log(Log when someone send DM to Bot)<br><br><img src = "https://media.discordapp.net/attachments/838006493361471508/853217575986659328/unknown.png" width="300"><br>
|
||||
|
||||
6. Paste the IDs, Tokens and the Webhooks into the `.env` respectively<br><br>
|
||||
7. After you have done the above steps, run the commands in your **Command Prompt** or **PowerShell**
|
||||
|
||||
```cmd
|
||||
npm install
|
||||
node index.js
|
||||
|
|
20
api/app.js
20
api/app.js
|
@ -1,20 +0,0 @@
|
|||
const express = require("express");
|
||||
const app = express();
|
||||
const port = process.env.PORT || 3001;
|
||||
const routes = require("./routes/routes");
|
||||
const client = require("../bot");
|
||||
client.on("ready", async () => {
|
||||
var users = client.guilds.cache.reduce((a, b) => a + b.memberCount, 0);
|
||||
var guilds = client.guilds.cache.size;
|
||||
const caches = {
|
||||
users: users,
|
||||
guilds: guilds,
|
||||
};
|
||||
app.use("/api", routes);
|
||||
app.use("/client", async (req, res) => {
|
||||
res.status(200).send(caches);
|
||||
});
|
||||
app.listen(port, () => {
|
||||
console.log(`Listen on PORT ${port}`);
|
||||
});
|
||||
});
|
|
@ -1,8 +0,0 @@
|
|||
const { cmds } = require("../../util/dist/cmds");
|
||||
const commands = cmds();
|
||||
const router = require("express").Router();
|
||||
|
||||
router.get("/", async (req, res) => {
|
||||
res.status(200).send(commands);
|
||||
});
|
||||
module.exports = router;
|
|
@ -1,4 +0,0 @@
|
|||
const router = require("express").Router();
|
||||
const cmds = require("./commands");
|
||||
router.use("/commands", cmds);
|
||||
module.exports = router;
|
14
app.js
Normal file
14
app.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
const express = require("express");
|
||||
const app = express();
|
||||
const route1 = require("./api/api");
|
||||
const cors = require("cors");
|
||||
const port = process.env.PORT || 3001;
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
app.use("/api", route1);
|
||||
app.use("/", async (req, res) => {
|
||||
res.send("");
|
||||
});
|
||||
app.listen(port, () => {
|
||||
console.log(`Listen on PORT ${port}`);
|
||||
});
|
109
bot.js
Normal file
109
bot.js
Normal file
|
@ -0,0 +1,109 @@
|
|||
const {
|
||||
Client,
|
||||
Collection,
|
||||
WebhookClient,
|
||||
MessageEmbed,
|
||||
} = require("discord.js");
|
||||
const { GiveawaysManager } = require("discord-giveaways");
|
||||
const fs = require("fs");
|
||||
const config = require("./config.json");
|
||||
require("dotenv").config();
|
||||
const client = new Client({
|
||||
allowedMentions: { parse: ["users", "roles"], repliedUser: true },
|
||||
restTimeOffset: 0,
|
||||
partials: ["MESSAGE", "CHANNEL", "REACTION", "GUILD_MEMBER"],
|
||||
intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_MEMBERS", "GUILD_PRESENCES"],
|
||||
});
|
||||
module.exports = client;
|
||||
client.color = config.color;
|
||||
client.author = "Cath Team";
|
||||
client.invite = "https://discord.gg/SbQHChmGcp";
|
||||
client.web = config.URL;
|
||||
require("./util/dist/cmds").cmds();
|
||||
require("./app");
|
||||
require("./inlinereply");
|
||||
require("./util/functions/economy")(client);
|
||||
require("./util/dist/manager")(client);
|
||||
client.CMDLog = new WebhookClient(
|
||||
process.env.CMDLogID,
|
||||
process.env.CMDLogToken
|
||||
);
|
||||
client.ReadyLog = new WebhookClient(
|
||||
process.env.ReadyLogID,
|
||||
process.env.ReadyLogToken
|
||||
);
|
||||
client.ServerLog = new WebhookClient(
|
||||
process.env.ServerLogID,
|
||||
process.env.ServerLogToken
|
||||
);
|
||||
client.ErrorLog = new WebhookClient(
|
||||
process.env.ErrorLogID,
|
||||
process.env.ErrorLogToken
|
||||
);
|
||||
process.on("unhandledRejection", async err => {
|
||||
if (client.user) {
|
||||
if (client.user.id === client.user.id) {
|
||||
const embed = new MessageEmbed()
|
||||
.setTitle("UnhandledRejection Error")
|
||||
.setDescription(`\`\`\`ini\n${err.stack}\`\`\``)
|
||||
.setTimestamp()
|
||||
.setColor(client.color)
|
||||
.setFooter(client.user.username);
|
||||
client.ErrorLog.send(embed);
|
||||
}
|
||||
}
|
||||
return console.log(err);
|
||||
});
|
||||
client.SuggestionLog = config.Suggestion;
|
||||
client.ReportLog = config.Report;
|
||||
client.DMLog = config.DM;
|
||||
client.commands = new Collection();
|
||||
client.aliases = new Collection();
|
||||
client.events = new Collection();
|
||||
client.snipes = [];
|
||||
client.esnipes = new Collection();
|
||||
client.hide = new Collection();
|
||||
client.queue = new Map();
|
||||
client.Timers = new Map();
|
||||
client.cat = config.ca;
|
||||
client.function = require("./util/functions/function");
|
||||
client.data = require("./util/functions/mongoose");
|
||||
client.err = require("./util/dist/err");
|
||||
client.data
|
||||
.connect(process.env.MONGO)
|
||||
.then(() => console.log("Connected to MongoDB!"))
|
||||
.catch(e => console.log(e));
|
||||
client.owners = [
|
||||
"452076196419600394",
|
||||
"749692825402212494",
|
||||
"766645910087139338",
|
||||
"755476040029306952",
|
||||
"534027706325532694",
|
||||
"381442059111759883",
|
||||
"556808365574193194",
|
||||
];
|
||||
client.currency = "<:cp:840231933933387797>";
|
||||
client.path = [
|
||||
"614423108388126731",
|
||||
"767173194943168542",
|
||||
"783633408738721834",
|
||||
"718762019586572341",
|
||||
"784052348561522730",
|
||||
"840225563193114624",
|
||||
"800396461229080619",
|
||||
];
|
||||
client.giveaways = new GiveawaysManager(client, {
|
||||
storage: "./util/Data/giveaways.json",
|
||||
updateCountdownEvery: 1000,
|
||||
default: {
|
||||
botsCanWin: false,
|
||||
embedColor: client.color,
|
||||
reaction: "🎉",
|
||||
},
|
||||
});
|
||||
client.categories = fs.readdirSync("./commands/");
|
||||
client.paths = fs.readdirSync("./cat/");
|
||||
["command"].forEach(handler => {
|
||||
require(`./util/command-handler`)(client);
|
||||
});
|
||||
client.login(process.env.TOKEN);
|
|
@ -37,6 +37,17 @@ module.exports = {
|
|||
if (!channel) return client.err(message, "Config", "set", 28);
|
||||
await client.data.setWelcome(message.guild.id, channel.id);
|
||||
message.channel.send(`Saved ${channel} as the welcome channel.`);
|
||||
} else if (args[0].toLowerCase() === "level") {
|
||||
if (args[1].toLowerCase() === "on" || args[1].toLowerCase() === "true") {
|
||||
await client.data.setGLevel(message.guild.id, "true");
|
||||
message.channel.send(`Levelling is enabled in this server now.`);
|
||||
} else if (
|
||||
args[1].toLowerCase() === "off" ||
|
||||
args[1].toLowerCase() === "false"
|
||||
) {
|
||||
await client.data.setGLevel(message.guild.id, "false");
|
||||
message.channel.send(`Levelling is disabled in this server now.`);
|
||||
} else return client.err(message, "Config", "set", 45);
|
||||
} else {
|
||||
return client.err(message, "Config", "set", 45);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ module.exports = {
|
|||
r => r.displayName.toLowerCase() === args.join(" ").toLocaleLowerCase()
|
||||
) ||
|
||||
message.member;
|
||||
const bal = await client.data.bal(user.id);
|
||||
const bal = await client.bal(user.id);
|
||||
let embed = new MessageEmbed()
|
||||
.addField(`${client.currency} Balance`, `**${bal}**`)
|
||||
.setColor(client.color)
|
||||
|
|
|
@ -15,7 +15,7 @@ module.exports = {
|
|||
return client.err(message, "Economy", "bet", 7);
|
||||
}
|
||||
const amt = parseInt(args[0]);
|
||||
if ((await client.data.bal(message.author.id)) < amt) {
|
||||
if ((await client.bal(message.author.id)) < amt) {
|
||||
return client.err(message, "Economy", "bet", 20);
|
||||
}
|
||||
if (amt > max) {
|
||||
|
@ -23,26 +23,27 @@ module.exports = {
|
|||
}
|
||||
if (client.function.random() === true) {
|
||||
const winamt = amt * 1;
|
||||
await client.data.add(message.author.id, winamt);
|
||||
await client.add(message.author.id, winamt, message);
|
||||
await client.ADDBWin(message.author.id);
|
||||
const abc = new MessageEmbed()
|
||||
.setColor("GREEN")
|
||||
.setTimestamp()
|
||||
.setTitle(`${message.author.username} wins a gamble game`)
|
||||
.setDescription(
|
||||
`You win\n**${winamt}**${client.currency}\nYou now have **${
|
||||
parseInt(await client.data.bal(message.author.id)) - amt
|
||||
parseInt(await client.bal(message.author.id)) - amt
|
||||
}**${client.currency}`
|
||||
);
|
||||
message.inlineReply(abc);
|
||||
} else {
|
||||
await client.data.rmv(message.author.id, amt);
|
||||
await client.rmv(message.author.id, amt);
|
||||
const cba = new MessageEmbed()
|
||||
.setColor("RED")
|
||||
.setTimestamp()
|
||||
.setTitle(`${message.author.username} loses a gamble game`)
|
||||
.setDescription(
|
||||
`You lost\n**${winamt}**${client.currency}\nYou now have **${
|
||||
parseInt(await client.data.bal(message.author.id)) - amt
|
||||
`You lost\n**${amt}**${client.currency}\nYou now have **${
|
||||
parseInt(await client.bal(message.author.id)) - amt
|
||||
}**${client.currency}`
|
||||
);
|
||||
message.inlineReply(cba);
|
||||
|
|
|
@ -5,14 +5,14 @@ module.exports = {
|
|||
usage: "(Number)",
|
||||
description: "Play a blackjack game to win money",
|
||||
category: "Economy",
|
||||
timeout: 10000,
|
||||
//timeout: 10000,
|
||||
run: async (client, message, args) => {
|
||||
const money = parseInt(args[0]);
|
||||
const author = message.author;
|
||||
if (isNaN(money) || !money) {
|
||||
return client.err(message, "Economy", "blackjack", 101);
|
||||
}
|
||||
if ((await client.data.bal(author.id)) < bet) {
|
||||
if ((await client.bal(author.id)) < bet) {
|
||||
client.err(message, "Economy", "blackjack", 20);
|
||||
}
|
||||
var numCardsPulled = 0;
|
||||
|
@ -87,11 +87,11 @@ module.exports = {
|
|||
deck.shuffle();
|
||||
async function bet(outcome) {
|
||||
if (outcome === "win") {
|
||||
client.data.add(author.id, money);
|
||||
//client.ADDbjWin(message.author.id);
|
||||
await client.add(author.id, money, message);
|
||||
await client.ADDBJWin(message.author.id);
|
||||
}
|
||||
if (outcome === "lose") {
|
||||
client.data.rmv(author.id, money);
|
||||
await client.rmv(author.id, money);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -135,12 +135,11 @@ module.exports = {
|
|||
}
|
||||
|
||||
const gambleEmbed = new Discord.MessageEmbed()
|
||||
.setColor(cl)
|
||||
.setColor(cl || client.color)
|
||||
.setTitle(message.author.username + `'s Blackjack game`)
|
||||
.addField("You", cardsMsg, true)
|
||||
.addField("cath.exe", dealerMsg, true)
|
||||
.addField(f, msg);
|
||||
|
||||
message.channel.send(gambleEmbed);
|
||||
}
|
||||
|
||||
|
@ -213,11 +212,7 @@ module.exports = {
|
|||
dealer.score < 21
|
||||
) {
|
||||
gameOver = true;
|
||||
await endMsg(
|
||||
`Tie! UwU`,
|
||||
`cath.exe had ${dealer.score.toString()}`,
|
||||
`RED`
|
||||
);
|
||||
await endMsg(`Tie!`, `cath.exe had ${dealer.score.toString()}`, `RED`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -254,7 +249,11 @@ module.exports = {
|
|||
async function loop() {
|
||||
if (gameOver) return;
|
||||
|
||||
endMsg("To hit type `h`, for stand type `s`", `GoodLuck ;)`, `GRAY`);
|
||||
endMsg(
|
||||
"To hit type `h`, for stand type `s`",
|
||||
`GoodLuck ;)`,
|
||||
client.color
|
||||
);
|
||||
|
||||
let filter = m => m.author.id === message.author.id;
|
||||
message.channel
|
||||
|
@ -265,11 +264,17 @@ module.exports = {
|
|||
})
|
||||
.then(message => {
|
||||
message = message.first();
|
||||
if (message.content === "h" || message.content === "hit") {
|
||||
if (
|
||||
message.content.toLowerCase() === "h" ||
|
||||
message.content.toLowerCase() === "hit"
|
||||
) {
|
||||
hit();
|
||||
loop();
|
||||
return;
|
||||
} else if (message.content === "s" || message.content === "stand") {
|
||||
} else if (
|
||||
message.content.toLowerCase() === "s" ||
|
||||
message.content.toLowerCase() === "stand"
|
||||
) {
|
||||
stand();
|
||||
loop();
|
||||
return;
|
||||
|
|
|
@ -24,7 +24,7 @@ module.exports = {
|
|||
const itemPrice = items.find(
|
||||
item => item.alias.toLowerCase() === itemToBuy
|
||||
).price;
|
||||
if ((await client.data.bal(message.author.id)) < itemPrice)
|
||||
if ((await client.bal(message.author.id)) < itemPrice)
|
||||
return client.err(message, "Economy", "buy", 20);
|
||||
const params = {
|
||||
User: message.author.id,
|
||||
|
@ -60,7 +60,7 @@ module.exports = {
|
|||
.setColor("GREEN")
|
||||
.setURL(client.web)
|
||||
);
|
||||
await client.data.rmv(message.author.id, itemPrice);
|
||||
await client.rmv(message.author.id, itemPrice);
|
||||
});
|
||||
},
|
||||
};
|
||||
|
|
|
@ -22,7 +22,7 @@ module.exports = {
|
|||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp();
|
||||
await client.data.add(message.author.id, money);
|
||||
await client.add(message.author.id, money, message);
|
||||
return message.inlineReply(pre_embed);
|
||||
} else {
|
||||
money = 10000;
|
||||
|
@ -38,7 +38,7 @@ module.exports = {
|
|||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp();
|
||||
await client.data.add(message.author.id, money);
|
||||
await client.add(message.author.id, money, message);
|
||||
return message.inlineReply(norm_embed);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
require("../../inlinereply");
|
||||
module.exports = {
|
||||
name: "drop",
|
||||
usage: "{Channel} (Number)",
|
||||
|
@ -12,7 +11,7 @@ module.exports = {
|
|||
if (!coinsAmount) {
|
||||
return client.err(message, "Economy", "drop", 5);
|
||||
}
|
||||
if ((await client.data.bal(message.author.id)) < coinsAmount) {
|
||||
if ((await client.bal(message.author.id)) < coinsAmount) {
|
||||
return client.err(message, "Economy", "drop", 20);
|
||||
}
|
||||
const filter = msg =>
|
||||
|
@ -21,11 +20,11 @@ module.exports = {
|
|||
channel.send(
|
||||
`${message.author.username} has dropped a ${client.currency} bomb! Use ${p}claim to claim ${client.currency}!!`
|
||||
);
|
||||
client.data.rmv(message.author.id, parseInt(coinsAmount));
|
||||
client.rmv(message.author.id, parseInt(coinsAmount));
|
||||
channel.awaitMessages(filter, { max: 1, time: 60000 }).then(async msg => {
|
||||
const id = msg.first().author.id;
|
||||
const coinsToClaim = parseInt(coinsAmount);
|
||||
await client.data.add(id, coinsToClaim);
|
||||
await client.add(id, coinsToClaim, message);
|
||||
msg
|
||||
.first()
|
||||
.inlineReply(
|
||||
|
|
|
@ -62,6 +62,7 @@ module.exports = {
|
|||
if (data.Inventory[itemName] <= 0) {
|
||||
return client.err(message, "Economy", "gift", 23);
|
||||
} else {
|
||||
data.CP+=0
|
||||
data.Inventory[itemName]--;
|
||||
message.channel.send(
|
||||
new MessageEmbed()
|
||||
|
@ -88,6 +89,7 @@ module.exports = {
|
|||
} else {
|
||||
new inventory({
|
||||
User: user.id,
|
||||
CP: 0,
|
||||
Inventory: {
|
||||
[itemName]: 1,
|
||||
},
|
||||
|
|
|
@ -21,11 +21,11 @@ module.exports = {
|
|||
if (isNaN(parsed)) return client.err(message, "Economy", "give", 7);
|
||||
if (user.id === message.author.id)
|
||||
return client.err(message, "Economy", "give", 2);
|
||||
if (parsed > (await client.data.bal(message.author.id))) {
|
||||
if (parsed > (await client.bal(message.author.id))) {
|
||||
return client.err(message, "Economy", "give", 20);
|
||||
}
|
||||
await client.data.rmv(message.author.id, parsed);
|
||||
await client.data.add(user.id, parsed);
|
||||
await client.rmv(message.author.id, parsed);
|
||||
await client.add(user.id, parsed, message);
|
||||
message.channel.send(
|
||||
new MessageEmbed()
|
||||
.setColor(client.color)
|
||||
|
@ -33,7 +33,7 @@ module.exports = {
|
|||
.setDescription(
|
||||
`**${message.author.username}** has given **${
|
||||
user.username
|
||||
}** **${parsed.toLocaleString()}**${client.currrency}`
|
||||
}** **${parsed.toLocaleString()}**${client.currency}`
|
||||
)
|
||||
);
|
||||
},
|
||||
|
|
|
@ -22,11 +22,20 @@ module.exports = {
|
|||
) ||
|
||||
message.member;
|
||||
inv.findOne({ User: user.id }, async (err, data) => {
|
||||
if (data) {
|
||||
if (!data.Inventory)
|
||||
return client.err(message, "Economy", "inventory", 25);
|
||||
return client.err(message, "Economy", "inv", 25);
|
||||
if (data.Inventory === undefined) return client.err(message, "Economy", "inv", 25)
|
||||
const mappedData = Object.keys(data.Inventory).map(key => {
|
||||
if (data.Inventory[key] == 0) {
|
||||
return;
|
||||
}
|
||||
return `\n**${key}** — ${data.Inventory[key]}`;
|
||||
});
|
||||
|
||||
if (mappedData.length == 0) {
|
||||
return client.err(message, "Economy", "inv", 25);
|
||||
}
|
||||
const c = util.chunk(mappedData, 5).map(x => x.join("\n"));
|
||||
const embed = new MessageEmbed()
|
||||
.setTimestamp()
|
||||
|
@ -41,6 +50,8 @@ module.exports = {
|
|||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
else return client.err(message, "Economy", "inv", 25);
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@ module.exports = {
|
|||
timeout: 5000,
|
||||
usage: "Check the leaderboard of a server",
|
||||
category: "Economy",
|
||||
Level: true,
|
||||
run: async (client, message, args) => {
|
||||
const rawLeaderboard = await Levels.fetchLeaderboard(message.guild.id, 10);
|
||||
if (rawLeaderboard.length < 1)
|
||||
|
|
47
commands/Economy/profile.js
Normal file
47
commands/Economy/profile.js
Normal file
|
@ -0,0 +1,47 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "profile",
|
||||
usage: "(User)",
|
||||
description: "Check an user economy profile",
|
||||
category: "Economy",
|
||||
run: async (client, message, args, data, utils) => {
|
||||
const user =
|
||||
message.mentions.members.first() ||
|
||||
message.guild.members.cache.get(args[0]) ||
|
||||
message.guild.members.cache.find(
|
||||
r =>
|
||||
r.user.username.toLowerCase() === args.join(" ").toLocaleLowerCase()
|
||||
) ||
|
||||
message.guild.members.cache.find(
|
||||
r => r.displayName.toLowerCase() === args.join(" ").toLocaleLowerCase()
|
||||
) ||
|
||||
message.member;
|
||||
const bjwin = await client.bjWin(message.author.id);
|
||||
const swin = await client.sWin(message.author.id);
|
||||
const bwin = await client.bWin(message.author.id);
|
||||
const cmdused = await client.cmdsUSED(message.author.id);
|
||||
const bal = await client.bal(message.author.id);
|
||||
const multi = await client.multi(message);
|
||||
const game = new MessageEmbed()
|
||||
.setFooter(
|
||||
`Requested by ${message.author.tag}`,
|
||||
message.author.displayAvatarURL({ dynamic: true, size: 4096 })
|
||||
)
|
||||
.setColor("7196ef")
|
||||
.setTitle(`${user.displayName}'s profile`)
|
||||
.addField(
|
||||
"**Stats**\n",
|
||||
`🃏 Blackjack wins: \`${bjwin}\`\n` +
|
||||
`🎰 Slots wins: \`${swin}\`\n` +
|
||||
`🕹 Bet wins: \`${bwin}\`\n` +
|
||||
`⌨️Commands used: \`${cmdused}\`\n` +
|
||||
`Totalwins: \`${bjwin + swin + bwin}\``,
|
||||
true
|
||||
)
|
||||
.addField(
|
||||
"**Balance**\n",
|
||||
`💲CP: \`${bal}\`\n` + `➕Multiplier: \`${`1.${multi}x`}\``
|
||||
);
|
||||
message.inlineReply(game);
|
||||
},
|
||||
};
|
|
@ -8,10 +8,9 @@ module.exports = {
|
|||
run: async (client, message, args) => {
|
||||
const max = 1000000;
|
||||
const slots = [
|
||||
"<:dumbcat:818913965353730068>",
|
||||
"<:nicecat:740978278055280722>",
|
||||
"<:wah:836951911729987597>",
|
||||
"<:startledcat:836619417550061580>",
|
||||
"<:blushca:852174555513618502>",
|
||||
"<:abusecat:853501068074942464>",
|
||||
"<:dumbcat:855462498550415362>",
|
||||
];
|
||||
const slotOne = slots[Math.floor(Math.random() * slots.length)];
|
||||
const slotTwo = slots[Math.floor(Math.random() * slots.length)];
|
||||
|
@ -26,7 +25,7 @@ module.exports = {
|
|||
if (isNaN(args[0])) return client.err(message, "Economy", "slots", 7);
|
||||
const amt = parseInt(args[0]);
|
||||
if (amt > max) return client.err(message, "Economy", "slots", 101);
|
||||
if ((await client.data.bal(message.author.id)) < amt) {
|
||||
if ((await client.bal(message.author.id)) < amt) {
|
||||
return client.err(message, "Economy", "slots", 20);
|
||||
}
|
||||
if (
|
||||
|
@ -35,7 +34,8 @@ module.exports = {
|
|||
(slotseven === sloteight && slotseven === slotnine)
|
||||
) {
|
||||
const winamt = Math.floor(Math.random() * 2 * amt);
|
||||
await client.data.add(message.author.id, winamt);
|
||||
await client.add(message.author.id, winamt, message);
|
||||
await client.ADDSWin(message.author.id);
|
||||
const won = new MessageEmbed()
|
||||
.setColor("GREEN")
|
||||
.addField(
|
||||
|
@ -53,13 +53,12 @@ module.exports = {
|
|||
.setTitle(`${message.author.username} wins a slots game`)
|
||||
.setDescription(
|
||||
`You win\n**${winamt}**${client.currency}\nYou now have **${
|
||||
parseInt(await client.data.bal(message.author.id)) - amt
|
||||
parseInt(await client.bal(message.author.id)) - amt
|
||||
}**${client.currency}`
|
||||
);
|
||||
message.inlineReply(won);
|
||||
console.log(`Coins: ${await client.data.bal(message.author.id)}`);
|
||||
} else {
|
||||
await client.data.rmv(message.author.id, amt);
|
||||
await client.rmv(message.author.id, amt);
|
||||
const lost = new MessageEmbed()
|
||||
.setColor("RED")
|
||||
.addField(
|
||||
|
@ -77,7 +76,7 @@ module.exports = {
|
|||
.setTitle(`${message.author.username} loses a slots game`)
|
||||
.setDescription(
|
||||
`You lost\n**${amt}**${client.currency}\nYou now have **${
|
||||
parseInt(await client.data.bal(message.author.id)) - amt
|
||||
parseInt(await client.bal(message.author.id)) - amt
|
||||
}**${client.currency}`
|
||||
);
|
||||
message.inlineReply(lost);
|
||||
|
|
|
@ -37,7 +37,7 @@ module.exports = {
|
|||
new db({
|
||||
User: message.author.id,
|
||||
CP: 0,
|
||||
Inventory: "",
|
||||
Inventory: {},
|
||||
}).save();
|
||||
return client.err(message, "Economy", "steal", 20);
|
||||
} else if (data) {
|
||||
|
@ -49,7 +49,7 @@ module.exports = {
|
|||
new db({
|
||||
User: tryrob.id,
|
||||
CP: 0,
|
||||
Inventory: "",
|
||||
Inventory: {},
|
||||
}).save();
|
||||
return message.inlineReply(
|
||||
new MessageEmbed()
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
require("../../inlinereply");
|
||||
module.exports = {
|
||||
name: "work",
|
||||
description: "Work to earn money",
|
||||
|
@ -18,7 +17,9 @@ module.exports = {
|
|||
];
|
||||
const earning = client.function.rndint(5000, 3000);
|
||||
const jobs = job[Math.floor(Math.random() * job.length)];
|
||||
await client.data.add(message.author.id, earning);
|
||||
return message.inlineReply(`You worked as a ${jobs} and earned ${earning}`);
|
||||
await client.add(message.author.id, earning, message);
|
||||
return message.inlineReply(
|
||||
`You worked as a **${jobs}** and earned **${earning}${client.currency}**`
|
||||
);
|
||||
},
|
||||
};
|
||||
|
|
21
commands/Fun/ascii.js
Normal file
21
commands/Fun/ascii.js
Normal file
|
@ -0,0 +1,21 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "ascii",
|
||||
description: "Converts text into ASCII art",
|
||||
category: "Fun",
|
||||
/**
|
||||
* @param {Client} client
|
||||
* @param {Message} message
|
||||
* @param {String[]} args
|
||||
*/
|
||||
run: async (client, message, args) => {
|
||||
const figlet = require("figlet");
|
||||
if (!args[0]) return client.err(message, "Fun", "ascii", 12);
|
||||
let msg = args.slice(0).join(" ");
|
||||
figlet.text(msg, async (err, data) => {
|
||||
if (err) console.log(err);
|
||||
if (data.length > 2000) return client.err(message, "Fun", "ascii", 54);
|
||||
message.channel.send(`\`\`\`${data}\`\`\``);
|
||||
});
|
||||
},
|
||||
};
|
102
commands/Fun/dino.js
Normal file
102
commands/Fun/dino.js
Normal file
|
@ -0,0 +1,102 @@
|
|||
const Discord = require("discord.js");
|
||||
const ms = require("ms");
|
||||
|
||||
module.exports = {
|
||||
name: "dinochrome",
|
||||
aliases: ["dino"],
|
||||
category: "Fun",
|
||||
description: "Dinosaur in Chrome",
|
||||
run: async (client, message, args) => {
|
||||
let msg = await message.channel.send(`---------------🦖`);
|
||||
let time = 1 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`-----------🦖----`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`----------🦖------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`--------🦖--------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`------🦖-----------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`-------🦖-----------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`---🌵-----🦖---------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`---🌵-🦖-------------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`🦖\n ---🌵--------------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`------🦖---🌵--------------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`----🦖-----🌵----------------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`-🌵🌵-----🦖-------🌵--------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`----🌵🌵-🦖----------🌵------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`🦖\n ---🌵🌵-------------🌵---`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`-----🦖---🌵🌵-------------🌵--`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`-------🦖-----🌵🌵-------------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`🎂----🦖--------🌵🌵-----------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`---🎂--🦖----------🌵🌵---------`);
|
||||
}, time);
|
||||
time += 1.5 * 1000;
|
||||
|
||||
setTimeout(function () {
|
||||
msg.edit(`**Ⓜⓘⓢⓢⓘⓞⓝ Ⓒⓞⓜⓟⓛⓔⓣⓔⓓ !**\n ---🎂🦖----------🌵🌵-------------`);
|
||||
}, time);
|
||||
},
|
||||
};
|
40
commands/Fun/emojify.js
Normal file
40
commands/Fun/emojify.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
module.exports = {
|
||||
name: "emojify",
|
||||
usage: "(Word)",
|
||||
description: "Emojify a sentence",
|
||||
run: async (client, message, args) => {
|
||||
const mapping = {
|
||||
" ": " ",
|
||||
0: ":zero:",
|
||||
1: ":one:",
|
||||
2: ":two:",
|
||||
3: ":three:",
|
||||
4: ":four:",
|
||||
5: ":five:",
|
||||
6: ":six:",
|
||||
7: ":seven:",
|
||||
8: ":eight:",
|
||||
9: ":nine:",
|
||||
"!": ":grey_exclamation:",
|
||||
"?": ":grey_question:",
|
||||
"#": ":hash:",
|
||||
"*": ":asterisk:",
|
||||
};
|
||||
|
||||
"abcdefghijklmnopqrstuvwxyz".split("").forEach(c => {
|
||||
mapping[c] = mapping[c.toUpperCase()] = ` :regional_indicator_${c}:`;
|
||||
});
|
||||
|
||||
if (!args[0]) {
|
||||
return client.err(message, "Fun", "emojify", 12);
|
||||
}
|
||||
message.channel.send(
|
||||
args
|
||||
.slice(0)
|
||||
.join(" ")
|
||||
.split("")
|
||||
.map(c => mapping[c] || c)
|
||||
.join("")
|
||||
);
|
||||
},
|
||||
};
|
129
commands/Fun/hack.js
Normal file
129
commands/Fun/hack.js
Normal file
|
@ -0,0 +1,129 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "hack",
|
||||
description: "Hack a user",
|
||||
usage: "(User)",
|
||||
category: "Fun",
|
||||
run: async (client, message, args) => {
|
||||
let answers = [
|
||||
"@yousuck.noob",
|
||||
"@hesnoob.haha",
|
||||
"@thisguy.suck",
|
||||
"@paypal.removed",
|
||||
"@noob.haha",
|
||||
"@hacked.xyz",
|
||||
"@susmate.com",
|
||||
"@gmail.sus",
|
||||
"@why-im.withyou",
|
||||
"@someone-end.me",
|
||||
"@isnoob.io",
|
||||
"@username-is.noob",
|
||||
"@hahaget.lost",
|
||||
"@yahoo.sus",
|
||||
"@botmail.zip",
|
||||
"@gmail.com",
|
||||
"@yahoo.com",
|
||||
];
|
||||
let passwords = [
|
||||
"Disb****",
|
||||
"disc******",
|
||||
"pass**********",
|
||||
"get****",
|
||||
"mails***",
|
||||
"endm****",
|
||||
"gamer***********",
|
||||
"asegeio*********",
|
||||
"whys*******",
|
||||
"Brot******",
|
||||
"imwith*******",
|
||||
"luckyyougotthispasswordlolnocencor",
|
||||
"starb*******",
|
||||
"egghunt2***",
|
||||
"secr*****",
|
||||
];
|
||||
let ips = [
|
||||
"10.313.523.502.00.1",
|
||||
"25.537.753.462.29.2",
|
||||
"21.175.866.974.07.08",
|
||||
"32.653.587.825.35.5",
|
||||
"12.172.764.781.22.8",
|
||||
"91.723.242.452.09.3",
|
||||
"92.743.116.896.85.6",
|
||||
"84.091.000.853.54.7",
|
||||
"51.071.124.129.12.0",
|
||||
];
|
||||
const answer = answers[Math.floor(Math.random() * answers.length)];
|
||||
const passwrd = passwords[Math.floor(Math.random() * passwords.length)];
|
||||
const ip = ips[Math.floor(Math.random() * ips.length)];
|
||||
const taggedUser = message.mentions.users.first();
|
||||
if (!taggedUser) {
|
||||
return client.err(message, "Fun", "hack", 1);
|
||||
}
|
||||
message.channel.send(`Hacking ${taggedUser.username}...`);
|
||||
message.channel.send("Status: ■□□□□□□□□□□ 0%").then(msg => {
|
||||
client.function.sleep(100);
|
||||
msg.edit("Status: ■■□□□□□□□□□ 7%: Hacking Email...");
|
||||
client.function.sleep(600);
|
||||
msg.edit(
|
||||
`Status: ■■■□□□□□□□□ 8%:\n \`Email: ${taggedUser.username}@yousuck.noob\`\n \`Password: ${passwrd}\` `
|
||||
);
|
||||
client.function.sleep(600);
|
||||
msg.edit("Status: ■■□□□□□□□□□ 9%: Logging in to the Email...");
|
||||
client.function.sleep(2000);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 12%: Turning off the antivirus");
|
||||
client.function.sleep(1000);
|
||||
msg.edit("Status: ■■■■□□□□□□ 14%: Downloading SYNAPSE X");
|
||||
client.function.sleep(100);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 17%: Deleting Captcha...");
|
||||
client.function.sleep(100);
|
||||
msg.edit("Status: ■■□□□□□□□□□ 20%: Deleting Paypal account...");
|
||||
client.function.sleep(10);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 21%");
|
||||
client.function.sleep(12);
|
||||
msg.edit("Status: ■■■■□□□□□□□ 22%");
|
||||
client.function.sleep(100);
|
||||
msg.edit("Status: ■■■■■□□□□□□ 24%: Paypal account deleted");
|
||||
client.function.sleep(1000);
|
||||
msg.edit("Status: ■■■■□□□□□□ 29%: Hacking is almost ready...");
|
||||
client.function.sleep(80);
|
||||
msg.edit("Status: ■■■□□□□□□□□ 31%");
|
||||
client.function.sleep(80);
|
||||
msg.edit("Status: ■■■■□□□□□□□ 36%");
|
||||
client.function.sleep(40);
|
||||
msg.edit("Status: ■■■■■□□□□□□ 41%");
|
||||
client.function.sleep(60);
|
||||
msg.edit("Status: ■■■■□□□□□□□ 47%");
|
||||
client.function.sleep(50);
|
||||
msg.edit("Status: ■■■■■■□□□□□ 53%");
|
||||
client.function.sleep(3000);
|
||||
msg.edit(
|
||||
`Status: ■■■■■■■□□□□ 58%: Email password changed so ${taggedUser.username} can not login`
|
||||
);
|
||||
client.function.sleep(500);
|
||||
msg.edit("Status: ■■■■■■□□□□□ 66%");
|
||||
client.function.sleep(60);
|
||||
msg.edit("Status: ■■■■■□□□□□□ 74%");
|
||||
client.function.sleep(20);
|
||||
msg.edit(`Status: ■■■■■□□□□□□ 79%: IP address found: ${ip}`);
|
||||
client.function.sleep(83);
|
||||
msg.edit("Status: ■■■■■■□□□□ 80%");
|
||||
client.function.sleep(50);
|
||||
msg.edit("Status: ■■■■■■■□□□ 85%");
|
||||
client.function.sleep(14);
|
||||
msg.edit("Status: ■■■■■■■■■□□ 93%");
|
||||
client.function.sleep(70);
|
||||
msg.edit("Status: ■■■■■■■■■■□ 97%");
|
||||
client.function.sleep(90);
|
||||
msg.edit("Status: ■■■■■■■■■■■ 100%").then(() => {
|
||||
const embed = new MessageEmbed()
|
||||
.setDescription(`${taggedUser} has been hacked!`)
|
||||
.addField("Email", `${taggedUser.username}${answer}`)
|
||||
.addField("Password", `${passwrd}`)
|
||||
.addField("IP address", `${ip}`)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setColor("020203a");
|
||||
message.channel.send(embed);
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
|
@ -8,7 +8,7 @@ module.exports = {
|
|||
category: "Fun",
|
||||
run: async (client, message, args) => {
|
||||
if (playing.has(message.channel.id))
|
||||
return message.reply("Only one game may be occurring per channel.");
|
||||
return message.inlineReply("Only one game may be occurring per channel.");
|
||||
playing.add(message.channel.id);
|
||||
try {
|
||||
const { body } = await get("https://emilia-api.xyz/api/hangman").set(
|
||||
|
@ -55,7 +55,7 @@ module.exports = {
|
|||
});
|
||||
//m.delete();
|
||||
if (!guess.size) {
|
||||
await message.reply("Sorry, time is up!");
|
||||
await message.inlineReply("Sorry, time is up!");
|
||||
break;
|
||||
}
|
||||
const choice = guess.first().content.toLowerCase();
|
||||
|
|
45
commands/Fun/obama.js
Normal file
45
commands/Fun/obama.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
const o = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⠛⠛⠉⠉⠉⠋⠛⠛⠛⠻⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const b = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠛⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const a = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const m = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠏⠄⠄⠄⠄⠄⠄⠄⠂⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠹⣿⣿⣿⣿⣿⣿⣿";
|
||||
const a2 = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢻⣿⣿⣿⣿⣿";
|
||||
const aa = "⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⢠⠄⠄⡀⠄⠄⢀⠂⠄⠄⠄⠄⠄⠄⠄⠄⠄⡁⠄⠄⢛⣿⣿⣿⣿";
|
||||
const ab = "⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⡈⢔⠸⣐⢕⢕⢵⢰⢱⢰⢐⢤⡡⡢⣕⢄⢢⢠⠄⠄⠄⠄⠄⠄⠙⣿⣿⣿";
|
||||
const ac = "⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡁⠂⠅⢕⠌⡎⡎⣎⢎⢮⢮⣳⡳⣝⢮⢺⢜⢕⢕⢍⢎⠪⡐⠄⠁⠄⠸⣿⣿";
|
||||
const ad = "⣿⣿⣿⣿⣿⣿⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠄⠄⢅⠣⡡⡣⣣⡳⡵⣝⡮⣗⣗⡯⣗⣟⡮⡮⣳⣣⣳⢱⢱⠱⣐⠄⠂⠄⢿⣿";
|
||||
const ae = "⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠂⠄⠄⠄⠄⠄⠄⢂⢈⠢⡱⡱⡝⣮⣿⣟⣿⣽⣷⣿⣯⣿⣷⣿⣿⣿⣾⣯⣗⡕⡇⡇⠄⠂⡀⢹⣿";
|
||||
const af = "⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⠄⠂⠄⠄⠄⠄⠄⠄⠐⢀⢂⢕⢸⢨⢪⢳⡫⣟⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡺⡮⡣⡣⠠⢂⠒⢸⣿";
|
||||
const ag = "⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠐⠄⡂⠆⡇⣗⣝⢮⢾⣻⣞⣿⣿⣿⣿⣿⣿⣿⣿⢿⣽⣯⡯⣺⢸⢘⠨⠔⡅⢨⣿";
|
||||
const ah = "⣿⣿⠋⠉⠙⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⡂⡪⡪⡪⡮⡮⡯⣻⣽⣾⣿⣿⣿⣟⣿⣿⣿⣽⣿⣿⡯⣯⡺⡸⡰⡱⢐⡅⣼⣿";
|
||||
const ai = "⣿⠡⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠈⠆⠱⠑⠝⠜⠕⡝⡝⣞⢯⢿⣿⣿⡿⣟⣿⣿⣿⡿⡿⣽⣷⣽⡸⡨⡪⣂⠊⣿⣿";
|
||||
const aj = "⣿⠡⠄⡨⣢⠐⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠍⡓⣗⡽⣝⠽⠍⠅⠑⠁⠉⠘⠘⠘⠵⡑⢜⢀⢀⢉⢽";
|
||||
const ak = "⣿⠁⠠⢱⢘⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠈⠱⣁⠜⡘⠌⠄⠄⡪⣳⣟⡮⢅⠤⠠⠄⠄⣀⣀⡀⡀⠄⠈⡂⢲⡪⡠⣿";
|
||||
const al = "⣿⡇⠨⣺⢐⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡀⠄⠄⠄⠤⡠⡢⢒⠦⠠⠄⠄⠄⡸⢽⣟⢮⠢⡂⡐⠄⡈⡀⠤⡀⠄⠑⢄⠨⢸⡺⣐⣿";
|
||||
const am = "⣿⣿⠈⠕⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡂⡪⡐⡥⢤⣰⣰⣰⡴⡮⠢⠂⠄⠄⡊⢮⢺⢕⢵⢥⡬⣌⣒⡚⣔⢚⢌⢨⢚⠌⣾⡪⣾⣿";
|
||||
const an = "⣿⣿⣆⠄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡑⢕⢕⡯⡷⣕⢧⢓⢭⠨⡀⠄⡂⠨⡨⣪⡳⣝⢝⡽⣻⣻⣞⢽⣲⢳⢱⢡⠱⠨⣟⢺⣿⣿";
|
||||
const ao = "⣿⣿⣿⡆⠄⡅⠇⡄⠄⠄⠄⠄⠄⠄⠄⠐⠨⢪⢹⢽⢽⣺⢝⠉⠁⠁⠄⠄⠄⢌⢎⡖⡯⡎⡗⢝⠜⣶⣯⣻⢮⡻⣟⣳⡕⠅⣷⣿⣿⣿";
|
||||
const ap = "⣿⣿⣿⣿⣶⣶⣿⣷⠄⠄⠄⠄⠄⠄⠄⠄⠈⠔⡑⠕⠝⠄⡀⠄⠄⠊⢆⠂⠨⡪⣺⣮⣿⡾⡜⣜⡜⣄⠙⢞⣿⢿⡿⣗⢝⢸⣾⣿⣿⣿";
|
||||
const aq = "⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⡀⠄⠄⠄⠄⢀⠄⠠⠄⠠⠄⠄⠄⠄⠄⠄⠊⠺⡹⠳⡙⡜⡓⡭⡺⡀⠄⠣⡻⡹⡸⠨⣣⣿⣿⣿⣿";
|
||||
const ar = "⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠠⠄⠄⣂⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢄⠤⡤⡄⡆⡯⡢⡣⡣⡓⢕⠽⣄⠄⠨⡂⢌⣼⣿⣿⣿⣿⣿";
|
||||
const a_ = "⣿⣿⣿⣿⣿⣿⣿⣿⡆⠄⠄⠄⠄⠈⠆⠄⠸⡂⠄⠄⠄⢀⠄⢀⠈⠄⠂⠁⠙⠝⠼⠭⠣⠣⠣⠑⠌⠢⠣⡣⡠⡘⣰⣱⣿⣿⣿⣿⣿⣿";
|
||||
const at = "⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⢑⠄⠈⡱⠄⢘⠄⡀⠨⢐⣧⣳⣷⣶⣦⣤⣴⣶⣶⣶⡶⠄⡠⡢⡕⣜⠎⡮⣣⣿⣿⣿⣿⣿⣿⣿";
|
||||
const au = "⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠢⠄⠨⠄⠄⠣⡀⠄⢀⢀⢙⠃⡿⢿⠿⡿⡿⢟⢋⢔⡱⣝⢜⡜⡪⡪⣵⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const av = "⣿⣿⣿⣿⣿⣿⣿⣿⡁⠄⠄⠄⠄⠄⠄⠄⠅⠄⠡⠄⠄⠡⢀⢂⠢⡡⠡⠣⡑⣏⢯⡻⡳⣹⡺⡪⢎⠎⡆⢣⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const aw = "⣿⣿⣿⣿⣿⣿⣿⣿⣇⠄⠄⠄⠄⠄⠄⠄⠐⠄⠄⠁⠄⢈⠄⢂⠕⡕⡝⢕⢎⢎⢮⢎⢯⢺⢸⢬⠣⢃⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const ax = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠨⡐⠌⢆⢇⢧⢭⣣⡳⣵⢫⣳⢱⠱⢑⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const ay = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⡊⢌⢢⢡⢣⢪⡺⡪⡎⡎⡎⡚⣨⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const az = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠕⡅⢗⢕⡳⡭⣳⢕⠕⡱⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const ba = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠌⠄⠑⠩⢈⢂⣱⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const bb = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⡀⢄⠄⣀⠄⡀⣀⢠⢄⣖⣖⣞⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
const bc = "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣱⡐⡕⡕⡽⣝⣟⣮⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿";
|
||||
|
||||
module.exports = {
|
||||
name: "obama",
|
||||
category: "Utilities",
|
||||
description: "Obama",
|
||||
run: async (client, message, args) => {
|
||||
message.inlineReply(
|
||||
`${o}\n${b}\n${a}\n${m}\n${a2}\n${aa}\n${ab}\n${ac}\n${ad}\n${ae}\n${af}\n${ag}\n${ah}\n${ai}\n${aj}\n${ak}\n${al}\n${am}\n${an}\n${ao}\n${ap}\n${aq}\n${ar}\n${a_}\n${at}\n${au}\n${av}\n${aw}\n${ax}\n${ay}\n${az}\n${ba}\n${bb}\n${bc}`
|
||||
);
|
||||
},
|
||||
};
|
91
commands/Fun/rps.js
Normal file
91
commands/Fun/rps.js
Normal file
|
@ -0,0 +1,91 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "rps",
|
||||
aliases: ["rockpapersscissors"],
|
||||
description: "Play a rock paper scissors game",
|
||||
category: "Fun",
|
||||
run: async (client, message, args) => {
|
||||
let embed = new MessageEmbed()
|
||||
.setTitle("RPS GAME")
|
||||
.setAuthor(
|
||||
message.author.tag,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setDescription(
|
||||
"```Add a reaction to one of these emojis to play the game!```"
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp();
|
||||
let msg = await message.channel.send(embed);
|
||||
await msg.react("✊");
|
||||
await msg.react("✂");
|
||||
await msg.react("📄");
|
||||
const filter = (reaction, user) => {
|
||||
return (
|
||||
["✊", "✂", "📄"].includes(reaction.emoji.name) &&
|
||||
user.id === message.author.id
|
||||
);
|
||||
};
|
||||
const choices = ["✊", "✂", "📄"];
|
||||
const me = choices[Math.floor(Math.random() * choices.length)];
|
||||
msg
|
||||
.awaitReactions(filter, { max: 1, time: 60000, error: ["time"] })
|
||||
.then(async collected => {
|
||||
const reaction = collected.first();
|
||||
if (
|
||||
(me === "✊" && reaction.emoji.name === "✂") ||
|
||||
(me === "📄" && reaction.emoji.name === "✊") ||
|
||||
(me === "✂" && reaction.emoji.name === "📄")
|
||||
) {
|
||||
const reaction = collected.first();
|
||||
let result = new MessageEmbed()
|
||||
.setTitle("You lost!")
|
||||
.setColor("RED")
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp()
|
||||
.setAuthor(
|
||||
message.author.tag,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.addField("Your choice", `${reaction.emoji.name}`)
|
||||
.addField("My choice", `${me}`);
|
||||
await msg.edit("", result);
|
||||
} else if (me === reaction.emoji.name) {
|
||||
const reaction = collected.first();
|
||||
let result = new MessageEmbed()
|
||||
.setTitle("Tie!")
|
||||
.setColor("GREY")
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp()
|
||||
.setAuthor(
|
||||
message.author.tag,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.addField("Your choice", `${reaction.emoji.name}`)
|
||||
.addField("My choice", `${me}`);
|
||||
await msg.edit("", result);
|
||||
} else {
|
||||
const reaction = collected.first();
|
||||
let result = new MessageEmbed()
|
||||
.setTitle("You won!")
|
||||
.setColor("GREEN")
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp()
|
||||
.setAuthor(
|
||||
message.author.tag,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.addField("Your choice", `${reaction.emoji.name}`)
|
||||
.addField("My choice", `${me}`);
|
||||
await msg.edit("", result);
|
||||
}
|
||||
})
|
||||
.catch(r => {
|
||||
console.log(r);
|
||||
message.inlineReply(
|
||||
"Your game has lost since you didn't response in time"
|
||||
);
|
||||
});
|
||||
},
|
||||
};
|
31
commands/Fun/ship.js
Normal file
31
commands/Fun/ship.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
const block = "⬛";
|
||||
const heart = "🟥";
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: "ship",
|
||||
aliases: ["love", "loverate", "shipping"],
|
||||
description: "Ship to you an user",
|
||||
usage: "(Text) (Text)",
|
||||
category: "Fun",
|
||||
run: async (client, message, args) => {
|
||||
const msg = await message.channel.send("Shipping...");
|
||||
const user1 = args[0];
|
||||
const user2 = args[1];
|
||||
if (!user1) return client.err(message, "Fun", "ship", 12);
|
||||
if (!user2) return client.err(message, "Fun", "ship", 12);
|
||||
let loveEmbed = new MessageEmbed()
|
||||
.setColor("dd2e44")
|
||||
.setFooter(`Shipped by ${message.author.tag}`)
|
||||
.setTimestamp()
|
||||
.setTitle(`💘 | Shipping ${user1} and ${user2} | 💘`)
|
||||
.setDescription(`🔻 | ${user1} \n${ship()}\n🔺 | ${user2}`);
|
||||
msg.edit("", 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;
|
||||
}
|
33
commands/Music/bassboost.js
Normal file
33
commands/Music/bassboost.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
const levels = {
|
||||
0: 0.0,
|
||||
1: 0.5,
|
||||
2: 1.0,
|
||||
3: 2.0,
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
name: "bassboost",
|
||||
aliases: ["bb", "bassboost"],
|
||||
description: "Set filter/bassboost level",
|
||||
category: "Music",
|
||||
usage: "(Number)",
|
||||
Premium: true,
|
||||
run: async (client, message, args) => {
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "bassboost", 34);
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "bassboost", 35);
|
||||
if (channel.id !== player.voiceChannel)
|
||||
return client.err(message, "Music", "bassboost", 55);
|
||||
let level = "0";
|
||||
if (args.length && args[0].toLowerCase() in levels)
|
||||
level = args[0].toLowerCase();
|
||||
const bands = new Array(3)
|
||||
.fill(null)
|
||||
.map((_, i) => ({ band: i, gain: levels[level] }));
|
||||
player.setEQ(...bands);
|
||||
return message.inlineReply(
|
||||
`The player's bassboost level has been set to ${level}`
|
||||
);
|
||||
},
|
||||
};
|
|
@ -1,30 +0,0 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "disconnect",
|
||||
aliases: ["dc"],
|
||||
description: "Leave The Voice Channel",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
let channel = message.member.voice.channel;
|
||||
if (!channel) return client.err(message, "Music", "leave", 35);
|
||||
if (!message.guild.me.voice.channel)
|
||||
return client.err(message, "Music", "leave", 41);
|
||||
try {
|
||||
await message.guild.me.voice.channel.leave();
|
||||
} catch (error) {
|
||||
await message.guild.me.voice.kick(message.guild.me.id);
|
||||
}
|
||||
|
||||
const Embed = new MessageEmbed()
|
||||
.setAuthor("Left Voice Channel", client.user.displayAvatarURL())
|
||||
.setColor("GREEN")
|
||||
.setTitle(
|
||||
`By user: ${message.author.tag}`,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setDescription("🎶 Left The Voice Channel.")
|
||||
.setTimestamp();
|
||||
|
||||
return message.channel.send(Embed);
|
||||
},
|
||||
};
|
|
@ -1,21 +1,22 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "loop",
|
||||
aliases: ["repeat"],
|
||||
description: "Music loop",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (serverQueue) {
|
||||
serverQueue.loop = !serverQueue.loop;
|
||||
return message.channel.send({
|
||||
embed: {
|
||||
color: "GREEN",
|
||||
description: `🔁 **|** Loop is ${
|
||||
serverQueue.loop === true ? "enabled" : "disabled"
|
||||
}`,
|
||||
},
|
||||
});
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "loop", 34);
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "loop", 35);
|
||||
if (channel.id !== player.voiceChannel)
|
||||
return client.err(message, "Music", "loop", 55);
|
||||
if (args.length && /queue/i.test(args[0])) {
|
||||
player.setQueueRepeat(!player.queueRepeat);
|
||||
const queueRepeat = player.queueRepeat ? "enabled" : "disabled";
|
||||
return message.inlineReply(`Queue repeat is ${queueRepeat}`);
|
||||
}
|
||||
return client.err(message, "Music", "loop", 34);
|
||||
player.setTrackRepeat(!player.trackRepeat);
|
||||
const trackRepeat = player.trackRepeat ? "enabled" : "disabled";
|
||||
return message.inlineReply(`Queue repeat is ${trackRepeat}`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,30 +1,23 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
const lyricsFinder = require("lyrics-finder");
|
||||
const splitlyrics = require("../../util/pagination/pagination");
|
||||
|
||||
module.exports = {
|
||||
name: "lyrics",
|
||||
description: "Get lyrics for the currently playing song",
|
||||
category: "Music",
|
||||
usage: "(Song)",
|
||||
run: async (client, message, args) => {
|
||||
const queue = message.client.queue.get(message.guild.id);
|
||||
if (!queue) return client.err(message, "Music", "lyrics", 34);
|
||||
let lyrics = null;
|
||||
try {
|
||||
lyrics = await lyricsFinder(queue.songs[0].title, "");
|
||||
lyrics = await lyricsFinder(args.slice(0).join(" "), "");
|
||||
if (!lyrics)
|
||||
lyrics = `**No lyrics are found for ${queue.songs[0].title}.**`;
|
||||
lyrics = `**No lyrics are found for ${args.slice(0).join(" ")}.**`;
|
||||
} catch (error) {
|
||||
lyrics = `**No lyrics are found for ${queue.songs[0].title}.**`;
|
||||
lyrics = `**No lyrics are found for ${args.slice(0).join(" ")}.**`;
|
||||
}
|
||||
const splittedLyrics = splitlyrics.chunk(lyrics, 1024);
|
||||
|
||||
let lyricsEmbed = new MessageEmbed()
|
||||
.setAuthor(
|
||||
`${queue.songs[0].title} — Lyrics`,
|
||||
"https://i.imgur.com/qHPXWxN.gif"
|
||||
)
|
||||
.setThumbnail(queue.songs[0].img)
|
||||
.setAuthor(`Lyrics`)
|
||||
.setColor("YELLOW")
|
||||
.setDescription(splittedLyrics[0])
|
||||
.setFooter(`Page 1 of ${splittedLyrics.length}.`)
|
||||
|
|
|
@ -1,20 +1,114 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: "nowplaying",
|
||||
description: "To show the music which is currently playing in this server",
|
||||
aliases: ["np"],
|
||||
description: "Show now playing music info",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (!serverQueue) return client.err(message, "Music", "nowplaying", 34);
|
||||
let song = serverQueue.songs[0];
|
||||
let thing = new MessageEmbed()
|
||||
.setAuthor("Now Playing", "https://i.imgur.com/qHPXWxN.gif")
|
||||
.setThumbnail(song.img)
|
||||
.setColor("client.color")
|
||||
.addField("Name:", `**${song.title}**`, true)
|
||||
.addField("Duration:", `**${song.duration}**`, true)
|
||||
.addField("Requested by:", `**${song.req.tag}**`, true)
|
||||
.setFooter(`Views:${song.views} | ${song.ago}`);
|
||||
return message.channel.send(thing);
|
||||
try {
|
||||
function format(millis) {
|
||||
try {
|
||||
var h = Math.floor(millis / 3600000),
|
||||
m = Math.floor(millis / 60000),
|
||||
s = ((millis % 60000) / 1000).toFixed(0);
|
||||
if (h < 1)
|
||||
return (
|
||||
(m < 10 ? "0" : "") +
|
||||
m +
|
||||
":" +
|
||||
(s < 10 ? "0" : "") +
|
||||
s +
|
||||
" | " +
|
||||
Math.floor(millis / 1000) +
|
||||
" Seconds"
|
||||
);
|
||||
else
|
||||
return (
|
||||
(h < 10 ? "0" : "") +
|
||||
h +
|
||||
":" +
|
||||
(m < 10 ? "0" : "") +
|
||||
m +
|
||||
":" +
|
||||
(s < 10 ? "0" : "") +
|
||||
s +
|
||||
" | " +
|
||||
Math.floor(millis / 1000) +
|
||||
" Seconds"
|
||||
);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
function createBar(player) {
|
||||
try {
|
||||
if (!player.queue.current)
|
||||
return `**"[""▇""—".repeat(size - 1)}]**\n**00:00:00 / 00:00:00**`;
|
||||
let current =
|
||||
player.queue.current.duration !== 0
|
||||
? player.position
|
||||
: player.queue.current.duration;
|
||||
let total = player.queue.current.duration;
|
||||
let size = 15;
|
||||
let bar =
|
||||
String("|") +
|
||||
String("▇").repeat(Math.round(size * (current / total))) +
|
||||
String("—").repeat(size - Math.round(size * (current / total))) +
|
||||
String("|");
|
||||
return `**${bar}**\n**${
|
||||
new Date(player.position).toISOString().substr(11, 8) +
|
||||
" / " +
|
||||
(player.queue.current.duration == 0
|
||||
? " ◉ LIVE"
|
||||
: new Date(player.queue.current.duration)
|
||||
.toISOString()
|
||||
.substr(11, 8))
|
||||
}**`;
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player.queue.current)
|
||||
return client.err(message, "Music", "nowplaying", 37);
|
||||
return message.channel.send(
|
||||
new MessageEmbed()
|
||||
.setAuthor(
|
||||
`Current song playing:`,
|
||||
message.client.user.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
.setThumbnail(
|
||||
`https://img.youtube.com/vi/${player.queue.current.identifier}/mqdefault.jpg`
|
||||
)
|
||||
.setURL(player.queue.current.uri)
|
||||
.setColor("GREEN")
|
||||
.setTitle(`🎶 **${player.queue.current.title}** 🎶`)
|
||||
.addField(
|
||||
`🕰️ Duration: `,
|
||||
`\`${format(player.queue.current.duration)}\``,
|
||||
true
|
||||
)
|
||||
.addField(`🎼 Song By: `, `\`${player.queue.current.author}\``, true)
|
||||
.addField(
|
||||
`🔢 Queue length: `,
|
||||
`\`${player.queue.length} Songs\``,
|
||||
true
|
||||
)
|
||||
.addField(`🎛️ Progress: `, createBar(player))
|
||||
.setFooter(
|
||||
`Requested by: ${player.queue.current.requester.tag}`,
|
||||
player.queue.current.requester.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return client.err(message, "Music", "nowplaying", 999);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,24 +1,18 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "pause",
|
||||
description: "To pause the current music in the server",
|
||||
aliases: ["ps"],
|
||||
description: "Pauses the current playing music",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (serverQueue && serverQueue.playing) {
|
||||
serverQueue.playing = false;
|
||||
try {
|
||||
serverQueue.connection.dispatcher.pause();
|
||||
} catch (error) {
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "pause", 36);
|
||||
}
|
||||
let xd = new MessageEmbed()
|
||||
.setDescription(`⏸ Paused the music for ${message.author.username}`)
|
||||
.setColor("YELLOW")
|
||||
.setTitle("Music has been paused.");
|
||||
return message.channel.send(xd);
|
||||
}
|
||||
return client.err(message, "Music", "pause", 34);
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "pause", 34);
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "pause", 35);
|
||||
if (channel.id !== player.voiceChannel)
|
||||
return client.err(message, "Music", "pause", 55);
|
||||
if (player.paused)
|
||||
return message.inlineReply("The player is already paused");
|
||||
player.pause(true);
|
||||
return message.inlineReply("The player is paused");
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,199 +1,144 @@
|
|||
const { Client, Message, MessageEmbed, Util } = require("discord.js");
|
||||
const ytdl = require("ytdl-core");
|
||||
const ytdlDiscord = require("discord-ytdl-core");
|
||||
const yts = require("yt-search");
|
||||
const scdl = require("soundcloud-downloader").default;
|
||||
const config = require("../../config.json");
|
||||
const Discord = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: "play",
|
||||
description: "Play songs",
|
||||
usage: "(YouTube_URL)/(Song Name)",
|
||||
aliases: ["p"],
|
||||
description: "Plays your favourite music from YouTube or Spotify",
|
||||
usage: "(Song/Song URL)",
|
||||
category: "Music",
|
||||
BotPerm: ["CONNECT", "SPEAK"],
|
||||
run: async (client, message, args) => {
|
||||
let channel = message.member.voice.channel;
|
||||
try {
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "play", 35);
|
||||
var searchString = args.join(" ");
|
||||
if (!searchString) return client.err(message, "Music", "play", 0);
|
||||
const url = args[0] ? args[0].replace(/<(.+)>/g, "$1") : "";
|
||||
var serverQueue = message.client.queue.get(message.guild.id);
|
||||
|
||||
let songInfo;
|
||||
let song;
|
||||
if (
|
||||
url.match(/^(https?:\/\/)?(www\.)?(m\.)?(youtube\.com|youtu\.?be)\/.+$/gi)
|
||||
) {
|
||||
if (!args.length) return client.err(message, "Music", "play", 0);
|
||||
const player = message.client.manager.create({
|
||||
guild: message.guild.id,
|
||||
voiceChannel: channel.id,
|
||||
textChannel: message.channel.id,
|
||||
selfDeafen: true,
|
||||
});
|
||||
if (player.state !== "CONNECTED") player.connect();
|
||||
const search = args.join(" ");
|
||||
let res;
|
||||
try {
|
||||
songInfo = await ytdl.getInfo(url);
|
||||
if (!songInfo) return client.err(message, "Music", "play", 42);
|
||||
song = {
|
||||
id: songInfo.videoDetails.videoId,
|
||||
title: songInfo.videoDetails.title,
|
||||
url: songInfo.videoDetails.video_url,
|
||||
img: songInfo.player_response.videoDetails.thumbnail.thumbnails[0]
|
||||
.url,
|
||||
duration: songInfo.videoDetails.lengthSeconds,
|
||||
ago: songInfo.videoDetails.publishDate,
|
||||
views: String(songInfo.videoDetails.viewCount).padStart(10, " "),
|
||||
req: message.author,
|
||||
};
|
||||
} catch (error) {
|
||||
res = await player.search(search, message.author);
|
||||
if (res.loadType === "LOAD_FAILED") {
|
||||
if (!player.queue.current) player.destroy();
|
||||
throw res.exception;
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return client.err(message, "Music", "play", 999);
|
||||
}
|
||||
} else if (url.match(/^https?:\/\/(soundcloud\.com)\/(.*)$/gi)) {
|
||||
try {
|
||||
songInfo = await scdl.getInfo(url);
|
||||
if (!songInfo) return client.err(message, "Music", "play", 43);
|
||||
song = {
|
||||
id: songInfo.permalink,
|
||||
title: songInfo.title,
|
||||
url: songInfo.permalink_url,
|
||||
img: songInfo.artwork_url,
|
||||
ago: songInfo.last_modified,
|
||||
views: String(songInfo.playback_count).padStart(10, " "),
|
||||
duration: Math.ceil(songInfo.duration / 1000),
|
||||
req: message.author,
|
||||
};
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return client.err(message, "Music", "play", 999);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
var searched = await yts.search(searchString);
|
||||
if (searched.videos.length === 0)
|
||||
return client.err(message, "Music", "play", 44);
|
||||
songInfo = searched.videos[0];
|
||||
song = {
|
||||
id: songInfo.videoId,
|
||||
title: Util.escapeMarkdown(songInfo.title),
|
||||
views: String(songInfo.views).padStart(10, " "),
|
||||
url: songInfo.url,
|
||||
ago: songInfo.ago,
|
||||
duration: songInfo.duration.toString(),
|
||||
img: songInfo.image,
|
||||
req: message.author,
|
||||
};
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return client.err(message, "Music", "play", 999);
|
||||
}
|
||||
}
|
||||
|
||||
if (serverQueue) {
|
||||
serverQueue.songs.push(song);
|
||||
let thing = new MessageEmbed()
|
||||
switch (res.loadType) {
|
||||
case "NO_MATCHES":
|
||||
if (!player.queue.current) player.destroy();
|
||||
return message.inlineReply("No result is found");
|
||||
case "TRACK_LOADED":
|
||||
const playmusic = new Discord.MessageEmbed()
|
||||
.setColor("#00f70c")
|
||||
.setAuthor(
|
||||
"Song has been added to queue",
|
||||
"https://i.imgur.com/qHPXWxN.gif"
|
||||
`Enqueuing:`,
|
||||
message.client.user.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
.setThumbnail(song.img)
|
||||
.setColor("YELLOW")
|
||||
.addField("Name:", `**${song.title}**`, true)
|
||||
.addField("Duration:", `**${song.duration}**`, true)
|
||||
.addField("Requested by:", `**${song.req.tag}**`, true)
|
||||
.setFooter(`Views:${song.views} | ${song.ago}`);
|
||||
return message.channel.send(thing);
|
||||
}
|
||||
.setDescription(`${res.tracks[0].title}`)
|
||||
.setTimestamp();
|
||||
player.queue.add(res.tracks[0]);
|
||||
if (!player.playing && !player.paused && !player.queue.size)
|
||||
player.play();
|
||||
return message.channel.send(playmusic);
|
||||
case "PLAYLIST_LOADED":
|
||||
player.queue.add(res.tracks);
|
||||
const playlist = new Discord.MessageEmbed()
|
||||
.setColor("#00f70c")
|
||||
.setAuthor(
|
||||
`Enqueuing playlist:`,
|
||||
message.client.user.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
.setDescription(
|
||||
`${res.playlist.name}\` with ${res.tracks.length} tracks`
|
||||
)
|
||||
.setTimestamp();
|
||||
if (
|
||||
!player.playing &&
|
||||
!player.paused &&
|
||||
player.queue.totalSize === res.tracks.length
|
||||
)
|
||||
player.play();
|
||||
return message.channel.send(playlist);
|
||||
case "SEARCH_RESULT":
|
||||
let max = 5,
|
||||
collected,
|
||||
filter = m =>
|
||||
m.author.id === message.author.id &&
|
||||
/^(\d+|end)$/i.test(m.content);
|
||||
if (res.tracks.length < max) max = res.tracks.length;
|
||||
|
||||
const queueConstruct = {
|
||||
textChannel: message.channel,
|
||||
voiceChannel: channel,
|
||||
connection: null,
|
||||
songs: [],
|
||||
volume: 80,
|
||||
playing: true,
|
||||
loop: false,
|
||||
};
|
||||
message.client.queue.set(message.guild.id, queueConstruct);
|
||||
queueConstruct.songs.push(song);
|
||||
|
||||
const play = async song => {
|
||||
const queue = message.client.queue.get(message.guild.id);
|
||||
if (!song) {
|
||||
message.guild.me.voice.channel.leave(); //If you want your bot stay in vc 24/7 remove this line :D
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "play", 40);
|
||||
}
|
||||
let stream;
|
||||
let streamType;
|
||||
const results = res.tracks
|
||||
.slice(0, max)
|
||||
.map(
|
||||
(track, index) =>
|
||||
`${++index} - ` + `[${track.title}](${track.uri})`
|
||||
)
|
||||
.join("\n");
|
||||
|
||||
const searchResult = new Discord.MessageEmbed()
|
||||
.setColor("#00f70c")
|
||||
.setTitle("Search Results: ")
|
||||
.setDescription(results)
|
||||
.addField(
|
||||
"Cancel Search: ",
|
||||
"Type end or any other number to cancel the search",
|
||||
true
|
||||
)
|
||||
.setTimestamp();
|
||||
message.channel.send(searchResult);
|
||||
try {
|
||||
if (song.url.includes("soundcloud.com")) {
|
||||
try {
|
||||
stream = await scdl.downloadFormat(
|
||||
song.url,
|
||||
scdl.FORMATS.OPUS,
|
||||
config.soundcloud
|
||||
);
|
||||
} catch (error) {
|
||||
stream = await scdl.downloadFormat(
|
||||
song.url,
|
||||
scdl.FORMATS.MP3,
|
||||
config.soundcloud
|
||||
);
|
||||
streamType = "unknown";
|
||||
}
|
||||
} else if (song.url.includes("youtube.com")) {
|
||||
stream = await ytdlDiscord(song.url, {
|
||||
filter: "audioonly",
|
||||
quality: "highestaudio",
|
||||
highWaterMark: 1 << 25,
|
||||
opusEncoded: true,
|
||||
collected = await message.channel.awaitMessages(filter, {
|
||||
max: 1,
|
||||
time: 30e3,
|
||||
errors: ["time"],
|
||||
});
|
||||
streamType = "opus";
|
||||
stream.on("error", function (er) {
|
||||
if (er) {
|
||||
if (queue) {
|
||||
queue.songs.shift();
|
||||
play(queue.songs[0]);
|
||||
return client.err(message, "Music", "play", 999);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
if (queue) {
|
||||
queue.songs.shift();
|
||||
play(queue.songs[0]);
|
||||
}
|
||||
}
|
||||
queue.connection.on("disconnect", () =>
|
||||
message.client.queue.delete(message.guild.id)
|
||||
} catch (e) {
|
||||
if (!player.queue.current) player.destroy();
|
||||
return message.inlineReply(
|
||||
"You didn't provide a selection. Cancelled"
|
||||
);
|
||||
const dispatcher = queue.connection
|
||||
.play(stream, { type: streamType })
|
||||
.on("finish", () => {
|
||||
const shiffed = queue.songs.shift();
|
||||
if (queue.loop === true) {
|
||||
queue.songs.push(shiffed);
|
||||
}
|
||||
play(queue.songs[0]);
|
||||
});
|
||||
const first = collected.first().content;
|
||||
|
||||
dispatcher.setVolumeLogarithmic(queue.volume / 100);
|
||||
let thing = new MessageEmbed()
|
||||
.setAuthor(`Playing song`, "https://i.imgur.com/qHPXWxN.gif")
|
||||
.setThumbnail(song.img)
|
||||
.setColor("client.color")
|
||||
.addField("Name:", `**${song.title}**`, true)
|
||||
.addField("Duration:", `**${song.duration}**`, true)
|
||||
.addField("Requested by:", `**${song.req.tag}**`, true)
|
||||
.setFooter(`Views:${song.views} | ${song.ago}`);
|
||||
queue.textChannel.send(thing);
|
||||
};
|
||||
if (first.toLowerCase() === "end") {
|
||||
if (!player.queue.current) player.destroy();
|
||||
return message.channel.send("Cancelled selection");
|
||||
}
|
||||
|
||||
try {
|
||||
const connection = await channel.join();
|
||||
queueConstruct.connection = connection;
|
||||
play(queueConstruct.songs[0]);
|
||||
} catch (error) {
|
||||
const index = Number(first) - 1;
|
||||
if (index < 0 || index > max - 1)
|
||||
return message.inlineReply(
|
||||
`The number that you provided too small or too big (1-${max})`
|
||||
);
|
||||
const track = res.tracks[index];
|
||||
player.queue.add(track);
|
||||
const trackadd = new Discord.MessageEmbed()
|
||||
.setColor("#00f70c")
|
||||
.setAuthor(
|
||||
`Added To Queue`,
|
||||
message.client.user.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
.setDescription(`[${track.title}](${track.uri})`)
|
||||
.addField(`Requested By : `, `${track.requester}`, true);
|
||||
if (!player.playing && !player.paused && !player.queue.size)
|
||||
player.play();
|
||||
return message.channel.send(trackadd);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
message.client.queue.delete(message.guild.id);
|
||||
await channel.leave();
|
||||
return client.err(message, "Music", "play", 39);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,196 +0,0 @@
|
|||
const { Client, Message, MessageEmbed, Util } = require("discord.js");
|
||||
const yts = require("yt-search");
|
||||
const ytdlDiscord = require("discord-ytdl-core");
|
||||
var ytpl = require("ytpl");
|
||||
const scdl = require("soundcloud-downloader").default;
|
||||
const config = require("../../config.json");
|
||||
module.exports = {
|
||||
name: "playlist",
|
||||
description: "Play songs",
|
||||
usage: "(YouTube Playlist URL)/(Playlist Name)",
|
||||
category: "Music",
|
||||
BotPerm: ["CONNECT", "SPEAK"],
|
||||
run: async (client, message, args) => {
|
||||
const channel = message.member.voice.channel;
|
||||
if (!channel) return client.err(message, "Music", "playlist", 35);
|
||||
const url = args[0] ? args[0].replace(/<(.+)>/g, "$1") : "";
|
||||
var searchString = args.join(" ");
|
||||
if (!searchString || !url)
|
||||
return client.err(message, "Music", "playlist", 0);
|
||||
if (url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
|
||||
try {
|
||||
const playlist = await ytpl(url.split("list=")[1]);
|
||||
if (!playlist) return client.err(messgae, "Music", "playlist", 404);
|
||||
const videos = await playlist.items;
|
||||
for (const video of videos) {
|
||||
await handleVideo(video, message, channel, true);
|
||||
}
|
||||
return message.channel.send({
|
||||
embed: {
|
||||
color: "GREEN",
|
||||
description: `✅ **|** Playlist: **\`${videos[0].title}\`** has been added to the queue`,
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return client.err(message, "Music", "playlist", 999);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
var searched = await yts.search(searchString);
|
||||
if (searched.playlists.length === 0)
|
||||
return client.err(message, "Music", "playlist", 38);
|
||||
var songInfo = searched.playlists[0];
|
||||
let listurl = songInfo.listId;
|
||||
const playlist = await ytpl(listurl);
|
||||
const videos = await playlist.items;
|
||||
for (const video of videos) {
|
||||
// eslint-disable-line no-await-in-loop
|
||||
await handleVideo(video, message, channel, true); // eslint-disable-line no-await-in-loop
|
||||
}
|
||||
let thing = new MessageEmbed()
|
||||
.setAuthor(
|
||||
"Playlist has been added to queue",
|
||||
"https://i.imgur.com/qHPXWxN.gif"
|
||||
)
|
||||
.setThumbnail(songInfo.thumbnail)
|
||||
.setColor("GREEN")
|
||||
.setDescription(
|
||||
`✅ **|** Playlist: **\`${songInfo.title}\`** has been added \`${songInfo.videoCount}\` video to the queue.`
|
||||
);
|
||||
return message.channel.send(thing);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return client.err(message, "Music", "playlist", 999);
|
||||
}
|
||||
}
|
||||
async function handleVideo(video, message, channel, playlist = false) {
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
const song = {
|
||||
id: video.id,
|
||||
title: Util.escapeMarkdown(video.title),
|
||||
views: video.views ? video.views : "-",
|
||||
ago: video.ago ? video.ago : "-",
|
||||
duration: video.duration,
|
||||
url: `https://www.youtube.com/watch?v=${video.id}`,
|
||||
img: video.thumbnail,
|
||||
req: message.author,
|
||||
};
|
||||
if (!serverQueue) {
|
||||
const queueConstruct = {
|
||||
textChannel: message.channel,
|
||||
voiceChannel: channel,
|
||||
connection: null,
|
||||
songs: [],
|
||||
volume: 80,
|
||||
playing: true,
|
||||
loop: false,
|
||||
};
|
||||
message.client.queue.set(message.guild.id, queueConstruct);
|
||||
queueConstruct.songs.push(song);
|
||||
|
||||
try {
|
||||
var connection = await channel.join();
|
||||
queueConstruct.connection = connection;
|
||||
play(message.guild, queueConstruct.songs[0]);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "playlist", 39);
|
||||
}
|
||||
} else {
|
||||
serverQueue.songs.push(song);
|
||||
if (playlist) return;
|
||||
let thing = new MessageEmbed()
|
||||
.setAuthor(
|
||||
"Song has been added to queue",
|
||||
"https://i.imgur.com/qHPXWxN.gif"
|
||||
)
|
||||
.setThumbnail(song.img)
|
||||
.setColor("YELLOW")
|
||||
.addField("Name:", `**${song.title}**`, true)
|
||||
.addField("Duration:", `**${song.duration}**`, true)
|
||||
.addField("Requested by:", `**${song.req.tag}**`, true)
|
||||
.setFooter(`Views:${song.views} | ${song.ago}`);
|
||||
return message.channel.send(thing);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
async function play(guild, song) {
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (!song) {
|
||||
message.guild.me.voice.channel.leave();
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "playlist", 40);
|
||||
}
|
||||
let stream;
|
||||
let streamType;
|
||||
|
||||
try {
|
||||
if (song.url.includes("soundcloud.com")) {
|
||||
try {
|
||||
stream = await scdl.downloadFormat(
|
||||
song.url,
|
||||
scdl.FORMATS.OPUS,
|
||||
config.soundcloud
|
||||
);
|
||||
} catch (error) {
|
||||
stream = await scdl.downloadFormat(
|
||||
song.url,
|
||||
scdl.FORMATS.MP3,
|
||||
config.soundcloud
|
||||
);
|
||||
streamType = "unknown";
|
||||
}
|
||||
} else if (song.url.includes("youtube.com")) {
|
||||
stream = await ytdlDiscord(song.url, {
|
||||
filter: "audioonly",
|
||||
quality: "highestaudio",
|
||||
highWaterMark: 1 << 25,
|
||||
opusEncoded: true,
|
||||
});
|
||||
streamType = "opus";
|
||||
stream.on("error", function (er) {
|
||||
if (er) {
|
||||
if (serverQueue) {
|
||||
serverQueue.songs.shift();
|
||||
play(serverQueue.songs[0]);
|
||||
return client.err(message, "Music", "playlist", 999);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
if (serverQueue) {
|
||||
console.log(error);
|
||||
serverQueue.songs.shift();
|
||||
play(serverQueue.songs[0]);
|
||||
}
|
||||
}
|
||||
serverQueue.connection.on("disconnect", () =>
|
||||
message.client.queue.delete(message.guild.id)
|
||||
);
|
||||
const dispatcher = serverQueue.connection
|
||||
.play(stream, { type: streamType })
|
||||
.on("finish", () => {
|
||||
const shiffed = serverQueue.songs.shift();
|
||||
if (serverQueue.loop === true) {
|
||||
serverQueue.songs.push(shiffed);
|
||||
}
|
||||
play(guild, serverQueue.songs[0]);
|
||||
});
|
||||
|
||||
dispatcher.setVolume(serverQueue.volume / 100);
|
||||
let thing = new MessageEmbed()
|
||||
.setAuthor("Playing music", "https://i.imgur.com/qHPXWxN.gif")
|
||||
.setThumbnail(song.img)
|
||||
.setColor("BLUE")
|
||||
.addField("Name:", `**${song.title}**`, true)
|
||||
.addField("Duration:", `**${song.duration}**`, true)
|
||||
.addField("Requested by:", `**${song.req.tag}**`, true)
|
||||
.setFooter(`Views:${song.views} | ${song.ago}`);
|
||||
serverQueue.textChannel.send(thing);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,47 +1,44 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
const util = require("../../util/pagination/pagination");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "queue",
|
||||
description: "To show the songs queue",
|
||||
aliases: ["q"],
|
||||
category: "Music",
|
||||
BotPerm: ["MANAGE_MESSAGES", "ADD_REACTIONS"],
|
||||
run: async (client, message, args) => {
|
||||
const queue = message.client.queue.get(message.guild.id);
|
||||
if (!queue) return client.err(message, "Music", "queue", 34);
|
||||
const que = queue.songs.map(
|
||||
(t, i) => `\`${++i}.\` | [\`${t.title}\`](${t.url}) - [<@${t.req.id}>]`
|
||||
);
|
||||
const chunked = util.chunk(que, 10).map(x => x.join("\n"));
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "queue", 34);
|
||||
const queue = player.queue;
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor("Songs Queue", "https://i.imgur.com/qHPXWxN.gif")
|
||||
.setThumbnail(message.guild.iconURL())
|
||||
.setColor("client.color")
|
||||
.setDescription(chunked[0])
|
||||
.addField(
|
||||
"Now Playing",
|
||||
`[${queue.songs[0].title}](${queue.songs[0].url})`,
|
||||
true
|
||||
.setAuthor(
|
||||
message.author.tag,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.addField("Text Channel", queue.textChannel, true)
|
||||
.addField("Voice Channel", queue.voiceChannel, true)
|
||||
.setFooter(
|
||||
`Currently Server Volume is ${queue.volume} | Page 1 of ${chunked.length}.`
|
||||
);
|
||||
if (queue.songs.length === 1)
|
||||
embed.setDescription(
|
||||
`**No songs to play next. Add songs by \`\`${await client.prefix(
|
||||
message
|
||||
)}play <song_name>\`\`**`
|
||||
.setTitle(`Queue for ${message.guild.name}`)
|
||||
.setTimestamp()
|
||||
.setColor("RANDOM");
|
||||
const multiple = 10;
|
||||
const page = args.length && Number(args[0]) ? Number(args[0]) : 1;
|
||||
const end = page * multiple;
|
||||
const start = end - multiple;
|
||||
const tracks = queue.slice(start, end);
|
||||
if (queue.current)
|
||||
embed.addField(
|
||||
"Current",
|
||||
`[${queue.current.title}](${queue.current.uri})`
|
||||
);
|
||||
|
||||
try {
|
||||
const queueMsg = await message.channel.send(embed);
|
||||
if (chunked.length > 1)
|
||||
await util.pagination(queueMsg, message.author, chunked);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return client.err(message, "Music", "queue", 999);
|
||||
}
|
||||
if (!tracks.length)
|
||||
embed.setDescription(
|
||||
`No tracks in ${page > 1 ? `page ${page}` : "the queue"}.`
|
||||
);
|
||||
else
|
||||
embed.setDescription(
|
||||
tracks
|
||||
.map((track, i) => `${start + ++i} - [${track.title}](${track.uri})`)
|
||||
.join("\n")
|
||||
);
|
||||
const maxPages = Math.ceil(queue.length / multiple);
|
||||
embed.setFooter(`Page ${page > maxPages ? maxPages : page} of ${maxPages}`);
|
||||
return message.inlineReply(embed);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "remove",
|
||||
description: "Remove song from the queue",
|
||||
usage: "(Number)",
|
||||
aliases: ["rm"],
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
const queue = message.client.queue.get(message.guild.id);
|
||||
if (!queue) return client.err(message, "Music", "remove", 37);
|
||||
if (!args.length) return client.err(message, "Music", "remove", 101);
|
||||
if (isNaN(args[0])) return client.err(message, "Music", "remove", 7);
|
||||
if (queue.songs.length == 1)
|
||||
return client.err(message, "Music", "remove", 37);
|
||||
if (args[0] > queue.songs.length)
|
||||
return client.err(message, "Music", "remove", 101);
|
||||
try {
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(client.color)
|
||||
.setDescription(`❌ **|** Removed: **${song[0].title}** from the queue`)
|
||||
.setTimestamp(`Made by ${client.author}`);
|
||||
const song = queue.songs.splice(args[0] - 1, 1);
|
||||
message.inlineReply(embed);
|
||||
message.react("✅");
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return client.err(message, "Music", "remove", 999);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,24 +1,17 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "resume",
|
||||
description: "To resume the paused music",
|
||||
aliases: ["continue"],
|
||||
description: "Pauses the current playing music",
|
||||
category: "Music",
|
||||
|
||||
run: async (client, message, args) => {
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (serverQueue && !serverQueue.playing) {
|
||||
serverQueue.playing = true;
|
||||
serverQueue.connection.dispatcher.resume();
|
||||
let xd = new MessageEmbed()
|
||||
.setDescription(`▶ Resumed the music for ${message.author.username}`)
|
||||
.setColor("YELLOW")
|
||||
.setAuthor(
|
||||
"Music has been resumed.",
|
||||
"https://i.imgur.com/qHPXWxN.gif"
|
||||
);
|
||||
return message.channel.send(xd);
|
||||
}
|
||||
return client.err(message, "Music", "resume", 34);
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "resume", 34);
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "resume", 35);
|
||||
if (channel.id !== player.voiceChannel)
|
||||
return client.err(message, "Music", "resume", 55);
|
||||
if (player.paused == false)
|
||||
return message.inlineReply("The player is already playing");
|
||||
player.pause(false);
|
||||
return message.inlineReply("The player is resumed");
|
||||
},
|
||||
};
|
||||
|
|
103
commands/Music/seek.js
Normal file
103
commands/Music/seek.js
Normal file
|
@ -0,0 +1,103 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: "seek",
|
||||
description: "seek the current playing music",
|
||||
category: "Music",
|
||||
usage: "(Number)",
|
||||
run: async (client, message, args) => {
|
||||
try {
|
||||
function createBar(player) {
|
||||
try {
|
||||
if (!player.queue.current)
|
||||
return `**[""🔘""▬".repeat(size - 1)}]**\n**00:00:00 / 00:00:00**`;
|
||||
let current =
|
||||
player.queue.current.duration !== 0
|
||||
? player.position
|
||||
: player.queue.current.duration;
|
||||
let total = player.queue.current.duration;
|
||||
let size = 15;
|
||||
let bar =
|
||||
String("| ") +
|
||||
String("🔘").repeat(Math.round(size * (current / total))) +
|
||||
String("▬").repeat(size - Math.round(size * (current / total))) +
|
||||
String(" |");
|
||||
return `**${bar}**\n**${
|
||||
new Date(player.position).toISOString().substr(11, 8) +
|
||||
" / " +
|
||||
(player.queue.current.duration == 0
|
||||
? " ◉ LIVE"
|
||||
: new Date(player.queue.current.duration)
|
||||
.toISOString()
|
||||
.substr(11, 8))
|
||||
}**`;
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
function format(millis) {
|
||||
try {
|
||||
var h = Math.floor(millis / 3600000),
|
||||
m = Math.floor(millis / 60000),
|
||||
s = ((millis % 60000) / 1000).toFixed(0);
|
||||
if (h < 1)
|
||||
return (
|
||||
(m < 10 ? "0" : "") +
|
||||
m +
|
||||
":" +
|
||||
(s < 10 ? "0" : "") +
|
||||
s +
|
||||
" | " +
|
||||
Math.floor(millis / 1000) +
|
||||
" Seconds"
|
||||
);
|
||||
else
|
||||
return (
|
||||
(h < 10 ? "0" : "") +
|
||||
h +
|
||||
":" +
|
||||
(m < 10 ? "0" : "") +
|
||||
m +
|
||||
":" +
|
||||
(s < 10 ? "0" : "") +
|
||||
s +
|
||||
" | " +
|
||||
Math.floor(millis / 1000) +
|
||||
" Seconds"
|
||||
);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (
|
||||
Number(args[0]) < 0 ||
|
||||
Number(args[0]) >= player.queue.current.duration / 1000
|
||||
)
|
||||
return message.channel.send(
|
||||
new MessageEmbed()
|
||||
.setColor("RED")
|
||||
.setTitle(
|
||||
` Error | You may seek from \`0\` - \`${player.queue.current.duration}\``
|
||||
)
|
||||
.setAuthor(
|
||||
message.author.tag,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setTimestamp()
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
);
|
||||
|
||||
player.seek(Number(args[0]) * 1000);
|
||||
return message.channel.send(
|
||||
new MessageEmbed()
|
||||
.setTitle(`Seeked song to: ${format(Number(args[0]) * 1000)}`)
|
||||
.addField(`Progress: `, createBar(player))
|
||||
.setColor("GREEN")
|
||||
);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return client.err(message, "Music", "seek", 999);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,24 +0,0 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "shuffle",
|
||||
description: "Shuffle queue",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (!serverQueue) return client.err(message, "Music", "shuffle", 37);
|
||||
try {
|
||||
let songs = serverQueue.songs;
|
||||
for (let i = songs.length - 1; i > 1; i--) {
|
||||
let j = 1 + Math.floor(Math.random() * i);
|
||||
[songs[i], songs[j]] = [songs[j], songs[i]];
|
||||
}
|
||||
serverQueue.songs = songs;
|
||||
message.client.queue.set(message.guild.id, serverQueue);
|
||||
message.react("✅");
|
||||
} catch (error) {
|
||||
message.guild.me.voice.channel.leave();
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "shuffle", 36);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -1,32 +1,18 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "skip",
|
||||
description: "To skip the current music",
|
||||
aliases: ["sk"],
|
||||
description: "Skips the current playing music",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
const channel = message.member.voice.channel;
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "skip", 34);
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "skip", 35);
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (!serverQueue) return client.err(message, "Music", "skip", 34);
|
||||
if (!serverQueue.connection) return;
|
||||
if (!serverQueue.connection.dispatcher) return;
|
||||
if (serverQueue && !serverQueue.playing) {
|
||||
serverQueue.playing = true;
|
||||
serverQueue.connection.dispatcher.resume();
|
||||
let xd = new MessageEmbed()
|
||||
.setDescription(`▶ Skipped the music for ${message.author.username}`)
|
||||
.setColor("YELLOW")
|
||||
.setTitle("Music has been skipped");
|
||||
return message.channel.send(xd).catch(err => console.log(err));
|
||||
}
|
||||
|
||||
try {
|
||||
serverQueue.connection.dispatcher.end();
|
||||
} catch (error) {
|
||||
serverQueue.voiceChannel.leave();
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "skip", 36);
|
||||
}
|
||||
message.react("✅");
|
||||
if (channel.id !== player.voiceChannel)
|
||||
return client.err(message, "Music", "skip", 55);
|
||||
if (!player.queue.current) return client.err(message, "Music", "skip", 34);
|
||||
const { title } = player.queue.current;
|
||||
player.stop();
|
||||
return message.inlineReply(`**${title}** was skipped`);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "skipto",
|
||||
description: "Skip to the selected queue number",
|
||||
usage: "(Number)",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
if (!args.length || isNaN(args[0]))
|
||||
return client.err(message, "Music", "skipto", 101);
|
||||
const queue = message.client.queue.get(message.guild.id);
|
||||
if (!queue) return client.err(message, "Music", "skipto", 37);
|
||||
if (args[0] > queue.songs.length)
|
||||
return client.err(message, "Music", "skipto", 101);
|
||||
queue.playing = true;
|
||||
|
||||
if (queue.loop) {
|
||||
for (let i = 0; i < args[0] - 2; i++) {
|
||||
queue.songs.push(queue.songs.shift());
|
||||
}
|
||||
} else {
|
||||
queue.songs = queue.songs.slice(args[0] - 2);
|
||||
}
|
||||
try {
|
||||
queue.connection.dispatcher.end();
|
||||
} catch (error) {
|
||||
queue.voiceChannel.leave();
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "skipto", 36);
|
||||
}
|
||||
|
||||
queue.textChannel
|
||||
.send({
|
||||
embed: {
|
||||
color: "GREEN",
|
||||
description: `${message.author} ⏭ skipped ${args[0] - 1} songs`,
|
||||
},
|
||||
})
|
||||
.catch(console.error);
|
||||
message.react("✅");
|
||||
},
|
||||
};
|
|
@ -1,24 +1,17 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "stop",
|
||||
aliases: ["dc"],
|
||||
description: "To stop the music and clear the queue",
|
||||
category: "Music",
|
||||
run: async (client, message, args) => {
|
||||
const channel = message.member.voice.channel;
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "stop", 34);
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "stop", 35);
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (!serverQueue) return client.err(message, "Music", "stop", 34);
|
||||
if (!serverQueue.connection) return;
|
||||
if (!serverQueue.connection.dispatcher) return;
|
||||
try {
|
||||
serverQueue.connection.dispatcher.end();
|
||||
} catch (error) {
|
||||
message.guild.me.voice.channel.leave();
|
||||
message.client.queue.delete(message.guild.id);
|
||||
return client.err(message, "Music", "stop", 36);
|
||||
}
|
||||
message.client.queue.delete(message.guild.id);
|
||||
serverQueue.songs = [];
|
||||
if (channel.id !== player.voiceChannel)
|
||||
return client.err(message, "Music", "stop", 55);
|
||||
player.destroy();
|
||||
message.react("✅");
|
||||
return message.inlineReply("The player has been destroyed");
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,30 +1,25 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "volume",
|
||||
description: "To change the server song queue volume",
|
||||
usage: "(Number)",
|
||||
aliases: ["vol"],
|
||||
aliases: ["vol", "v"],
|
||||
category: "Music",
|
||||
description: "Set volume level of the music",
|
||||
run: async (client, message, args) => {
|
||||
const channel = message.member.voice.channel;
|
||||
const player = message.client.manager.get(message.guild.id);
|
||||
if (!player) return client.err(message, "Music", "volume", 34);
|
||||
if (!args.length)
|
||||
return message.inlineReply(`The player volume is \`${player.volume}\``);
|
||||
const { channel } = message.member.voice;
|
||||
if (!channel) return client.err(message, "Music", "volume", 35);
|
||||
const serverQueue = message.client.queue.get(message.guild.id);
|
||||
if (!serverQueue) return client.err(message, "Music", "volume", 34);
|
||||
if (!serverQueue.connection)
|
||||
return client.err(message, "Music", "volume", 34);
|
||||
if (!args[0])
|
||||
return message.channel.send(
|
||||
`The current volume is: **${serverQueue.volume}**`
|
||||
);
|
||||
if (isNaN(args[0])) return client.err(message, "Music", "volume", 101);
|
||||
if (parseInt(args[0]) > 150 || args[0] < 0)
|
||||
if (channel.id !== player.voiceChannel)
|
||||
return client.err(message, "Music", "volume", 55);
|
||||
const volume = Number(args[0]);
|
||||
if (!volume || volume < 1 || volume > 100 || isNaN(volume))
|
||||
return client.err(message, "Music", "volume", 101);
|
||||
serverQueue.volume = args[0];
|
||||
serverQueue.connection.dispatcher.setVolumeLogarithmic(args[0] / 100);
|
||||
let xd = new MessageEmbed()
|
||||
.setDescription(`Tuned the volume to: **${args[0] / 1}/100**`)
|
||||
.setAuthor("Server Volume Manager", "https://i.imgur.com/qHPXWxN.gif")
|
||||
.setColor("client.color");
|
||||
return message.channel.send(xd);
|
||||
player.setVolume(volume);
|
||||
return message.inlineReply(
|
||||
`The player's volume has been set to \`${volume}\`.`
|
||||
);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -10,7 +10,7 @@ module.exports = {
|
|||
const acceptQuery =
|
||||
args.slice(1).join(" ") || `They didn't leave any message.`;
|
||||
|
||||
if (!MessageID) return message.reply("Please specify a valid ID");
|
||||
if (!MessageID) return message.inlineReply("Please specify a valid ID");
|
||||
try {
|
||||
const suggestionChannel = message.guild.channels.cache.get(
|
||||
client.SuggestionLog
|
||||
|
|
|
@ -9,7 +9,7 @@ module.exports = {
|
|||
if (!args[0] || isNaN(args[0]))
|
||||
return message.channel.send("Number of coins?");
|
||||
const user = message.mentions.members.first() || message.author;
|
||||
client.data.add(user.id, parseInt(args[0]));
|
||||
client.add(user.id, parseInt(args[0]), message);
|
||||
message.react("<a:a_yes:808683134786863124>");
|
||||
},
|
||||
};
|
||||
|
|
|
@ -10,7 +10,7 @@ module.exports = {
|
|||
const denyQuery =
|
||||
args.slice(1).join(" ") || `They didn't leave any message.`;
|
||||
|
||||
if (!MessageID) return message.reply("Please specify a valid ID");
|
||||
if (!MessageID) return message.inlineReply("Please specify a valid ID");
|
||||
try {
|
||||
const suggestionChannel = message.guild.channels.cache.get(
|
||||
client.SuggestionLog
|
||||
|
|
58
commands/Owner/edit.js
Normal file
58
commands/Owner/edit.js
Normal file
|
@ -0,0 +1,58 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: "edit",
|
||||
/**
|
||||
* @param {Client} client
|
||||
* @param {Message} message
|
||||
* @param {String[]} args
|
||||
*/
|
||||
run: async (client, message, args) => {
|
||||
const embed = new MessageEmbed()
|
||||
.setAuthor(
|
||||
"Ń1ght and Cath Nation",
|
||||
message.guild.iconURL({ dynamic: true, size: 4096 })
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setDescription(
|
||||
"*Welcome to Ń1ght and Cath Nation*.\n**Please get a role below by reacting!**\n**[Invite](https://discord.com/api/oauth2/authorize?client_id=800966959268364288&permissions=4231314550&scope=bot%20applications.commands) | [Support](https://discord.gg/SbQHChmGcp) | [YouTube](https://youtube.com/c/Kirito01) | [Website](https://www.cath.gq)**"
|
||||
)
|
||||
.addFields(
|
||||
{
|
||||
name: "Gold<:gold:841194046419370024>",
|
||||
value: "<@&841200768706543636>",
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Platinum<:platinum:841194040165924865>",
|
||||
value: "<@&840536973126270976>",
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Updates<:Update:841196992385253408>",
|
||||
value: "<@&841200845885538325>",
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Announcements<:announce_dark:841195615458951168>",
|
||||
value: "<@&841026716181069824>",
|
||||
inline: false,
|
||||
},
|
||||
{
|
||||
name: "YouTube<:YouTube:841186450497339412>",
|
||||
value: "<@&841026772790673448>",
|
||||
inline: true,
|
||||
}
|
||||
)
|
||||
.setThumbnail(client.user.displayAvatarURL())
|
||||
.setURL(client.web)
|
||||
.setFooter(
|
||||
"Ń1ght#0001",
|
||||
message.author.displayAvatarURL({ dynamic: true, size: 4096 })
|
||||
)
|
||||
.setTimestamp();
|
||||
const ch = message.guild.channels.cache.get(message.channel.id);
|
||||
const msgs = await ch.messages.fetch(args[0]);
|
||||
msgs.edit("", embed);
|
||||
},
|
||||
};
|
|
@ -6,7 +6,7 @@ module.exports = {
|
|||
const embed = new MessageEmbed()
|
||||
.setAuthor(
|
||||
"Ń1ght and Cath Nation",
|
||||
"https://images-ext-2.discordapp.net/external/JyjN4pXpaLIaSOSszAR9dyp03Hf3ouzjUb8kRa0OFiE/%3Fsize%3D2048/https/cdn.discordapp.com/icons/718762019586572341/c35c387563c7527f056276f2a16f526b.webp"
|
||||
message.guild.iconURL({ dynamic: true, size: 4096 })
|
||||
)
|
||||
.setColor(client.color)
|
||||
.setDescription(
|
||||
|
@ -43,7 +43,7 @@ module.exports = {
|
|||
.setURL(client.web)
|
||||
.setFooter(
|
||||
"Ń1ght#0001",
|
||||
"https://images-ext-2.discordapp.net/external/JyjN4pXpaLIaSOSszAR9dyp03Hf3ouzjUb8kRa0OFiE/%3Fsize%3D2048/https/cdn.discordapp.com/icons/718762019586572341/c35c387563c7527f056276f2a16f526b.webp"
|
||||
message.author.displayAvatarURL({ dynamic: true, size: 4096 })
|
||||
)
|
||||
.setTimestamp();
|
||||
message.channel.send(embed);
|
||||
|
|
|
@ -9,7 +9,7 @@ module.exports = {
|
|||
if (!args[0] || isNaN(args[0]))
|
||||
return message.channel.send("Number of coins?");
|
||||
const user = message.mentions.members.first() || message.author;
|
||||
client.data.rmv(user.id, parseInt(args[0]));
|
||||
await client.rmv(user.id, parseInt(args[0]));
|
||||
message.react("<a:a_yes:808683134786863124>");
|
||||
},
|
||||
};
|
||||
|
|
32
commands/Owner/test.js
Normal file
32
commands/Owner/test.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
// const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
// const db = require("../../models/bot");
|
||||
// module.exports = {
|
||||
// name: "test",
|
||||
// Owner: true,
|
||||
// /**
|
||||
// * @param {Client} client
|
||||
// * @param {Message} message
|
||||
// * @param {String[]} args
|
||||
// */
|
||||
// run: async (client, message, args) => {
|
||||
// db.findOne({ Bot: client.user.id }, async (err, data) => {
|
||||
// let cmdstatus;
|
||||
// if (!data) {
|
||||
// return;
|
||||
// } else {
|
||||
// data.Commands.map(x => {
|
||||
// const arr = Object.values(x.commands);
|
||||
// const finded = arr.find(a => a.name == args[0].toLowerCase());
|
||||
// if (!finded) return;
|
||||
// else cmdstatus = finded.status;
|
||||
// });
|
||||
// data.Commands.commands.status = false;
|
||||
|
||||
// if (cmdstatus === true) {
|
||||
// cmdstatus = false;
|
||||
// await db.findOneAndUpdate({ Bot: client.user.id }, data);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// },
|
||||
// };
|
|
@ -27,7 +27,6 @@ module.exports = {
|
|||
collector.stop("fulfilled");
|
||||
});
|
||||
|
||||
const chan = client.channels.cache.get(Suggestion);
|
||||
collector.on("end", (collected, reason) => {
|
||||
if (reason === "fulfilled") {
|
||||
const msss = collected.map(msg => {
|
||||
|
@ -52,7 +51,7 @@ module.exports = {
|
|||
}
|
||||
});
|
||||
} catch (err) {
|
||||
message.channel.send(`Please enable your DM allowance`);
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const { Client, Message, MessageEmbed, Util } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "emojiadd",
|
||||
usage: "(Link/Photo)",
|
||||
usage: "(Link/Photo) (Name)",
|
||||
aliases: ["addemoji"],
|
||||
description: "Show an emoji URL or add the emoji to the server",
|
||||
category: "Utilities",
|
||||
|
|
|
@ -15,7 +15,7 @@ module.exports = {
|
|||
page = 0,
|
||||
reactions = ["◀️", "⏪", "⏩", "▶️"];
|
||||
if (!snipes)
|
||||
return message.reply(
|
||||
return message.inlineReply(
|
||||
`No snipes have been found for the channel \`${channel.name}\``
|
||||
);
|
||||
|
||||
|
|
30
commands/Utilities/messageinfo.js
Normal file
30
commands/Utilities/messageinfo.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "messageinfo",
|
||||
run: async (client, message, args) => {
|
||||
try {
|
||||
if (!args[0]) return client.err(message, "Utilities", "Fun", 27);
|
||||
await message.channel.messages.fetch(args[0]).catch(err => {
|
||||
return message.inlineReply("Message not found in this channel..");
|
||||
});
|
||||
const msg = await message.channel.messages.cache.get(args[0]);
|
||||
console.log(msg);
|
||||
const hasImage = msg.attachments.size && msg.attachments.first().width;
|
||||
const embed = new MessageEmbed()
|
||||
.setColor(msg.member ? msg.member.displayHexColor : client.color)
|
||||
.setImage(hasImage ? msg.attachments.first().url : null)
|
||||
.setAuthor(
|
||||
msg.author.tag,
|
||||
msg.author.displayAvatarURL({ format: "png", dynamic: true })
|
||||
)
|
||||
.addField("Content", msg.content)
|
||||
.setTimestamp(msg.createdAt)
|
||||
.addField("ID", msg.id)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.addField("Jump", `[Click Here to Jump](${msg.url})`);
|
||||
return message.inlineReply(embed);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
};
|
|
@ -132,7 +132,7 @@ module.exports = {
|
|||
}
|
||||
});
|
||||
} catch {
|
||||
return message.reply("please let me send DM to you.");
|
||||
return message.inlineReply("please let me send DM to you.");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
28
commands/Utilities/ping.js
Normal file
28
commands/Utilities/ping.js
Normal file
|
@ -0,0 +1,28 @@
|
|||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "ping",
|
||||
description: "Check bot latency to Discord API",
|
||||
run: async (client, message, args) => {
|
||||
const msg = await message.channel.send("Pinging...");
|
||||
const messageping = msg.createdTimestamp - message.createdTimestamp;
|
||||
const Embed = new MessageEmbed()
|
||||
.setTitle("🏓 Pong!")
|
||||
.setAuthor(
|
||||
`${message.author.username}`,
|
||||
message.author.displayAvatarURL()
|
||||
)
|
||||
.setDescription(
|
||||
`📨 • **Message Latency** \`${Math.floor(
|
||||
messageping
|
||||
)}ms\`\n🛰️ • **Bot Latency** \`${Math.round(client.ws.ping)}ms\``
|
||||
)
|
||||
.setColor(
|
||||
messageping < 350
|
||||
? "GREEN"
|
||||
: messageping < 500 && messageping > 350
|
||||
? "YELLOW"
|
||||
: "RED"
|
||||
);
|
||||
msg.edit("", Embed);
|
||||
},
|
||||
};
|
|
@ -1,75 +1,24 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
const { Suggestion } = require("../../config.json");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = {
|
||||
name: "poll",
|
||||
description: "Join a poll for develop of this bot",
|
||||
description: "Start a poll in a channel",
|
||||
category: "Utilities",
|
||||
Owner: true,
|
||||
run: async (client, message, args) => {
|
||||
const questions = [
|
||||
"Which statistic of gun you want to see?",
|
||||
//"question 2"
|
||||
];
|
||||
let collectCounter = 0;
|
||||
let endCounter = 0;
|
||||
const filter = m => m.author.id === message.author.id;
|
||||
message.reply("check your dm.");
|
||||
const appStart = await message.author.send(
|
||||
new MessageEmbed()
|
||||
.setAuthor(message.author.username, message.author.displayAvatarURL())
|
||||
.setDescription(questions[collectCounter++])
|
||||
.setFooter(client.user.username)
|
||||
let pollDescription = `
|
||||
${message.author} asks: ${args.slice(1).join(" ")}
|
||||
`;
|
||||
const channel = message.mentions.channels.first();
|
||||
if (!channel) return client.err(message, "Utilities", "poll", 28);
|
||||
if (!pollDescription) return client.err(message, "Utilities", "poll", 12);
|
||||
let embedPoll = new MessageEmbed()
|
||||
.setTitle(`${message.author.username} made a poll`)
|
||||
.setDescription(pollDescription)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp()
|
||||
);
|
||||
const channel = appStart.channel;
|
||||
|
||||
const collector = channel.createMessageCollector(filter);
|
||||
|
||||
collector.on("collect", () => {
|
||||
if (collectCounter < questions.length) {
|
||||
channel.send(
|
||||
new MessageEmbed()
|
||||
.setAuthor(
|
||||
message.author.username,
|
||||
message.author.displayAvatarURL()
|
||||
)
|
||||
.setDescription(questions[collectCounter++])
|
||||
.setFooter(client.user.username)
|
||||
.setTimestamp()
|
||||
);
|
||||
} else {
|
||||
channel.send(
|
||||
new MessageEmbed()
|
||||
.setTitle("SUCCESS!")
|
||||
.setDescription("You have joined the poll.")
|
||||
.setColor("GREEN")
|
||||
);
|
||||
collector.stop("fulfilled");
|
||||
}
|
||||
});
|
||||
|
||||
const appsChannel = client.channels.cache.get(Suggestion);
|
||||
collector.on("end", (collected, reason) => {
|
||||
if (reason === "fulfilled") {
|
||||
let index = 1;
|
||||
const mapedResponses = collected
|
||||
.map(msg => {
|
||||
return `${questions[endCounter++]}**\n->** ${msg.content}`;
|
||||
})
|
||||
.join("\n\n");
|
||||
|
||||
appsChannel.send(
|
||||
new MessageEmbed()
|
||||
.setAuthor(
|
||||
message.author.tag,
|
||||
message.author.displayAvatarURL({ dynamic: true })
|
||||
)
|
||||
.setTitle("New Apllication")
|
||||
|
||||
.setDescription(mapedResponses)
|
||||
.setColor("ORANGE")
|
||||
.setTimestamp()
|
||||
);
|
||||
}
|
||||
});
|
||||
.setColor("GREEN");
|
||||
let msgEmbed = await channel.send(embedPoll);
|
||||
await msgEmbed.react("👍");
|
||||
await msgEmbed.react("👎");
|
||||
},
|
||||
};
|
||||
|
|
|
@ -7,6 +7,7 @@ module.exports = {
|
|||
usage: "{User}",
|
||||
timeout: 5000,
|
||||
category: "Utilities",
|
||||
Level: true,
|
||||
run: async (client, message, args) => {
|
||||
if (!message.guild) return;
|
||||
if (message.author.bot) return;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const { Client, Message, MessageEmbed } = require("discord.js");
|
||||
require("../../inlinereply");
|
||||
|
||||
module.exports = {
|
||||
name: "report",
|
||||
|
|
|
@ -9,7 +9,7 @@ module.exports = {
|
|||
.setTitle(`Icon of ${message.guild.name}`)
|
||||
.setURL(client.web)
|
||||
.setTimestamp()
|
||||
.setFooter(`Requested by ${message.authpr.tag}`)
|
||||
.setFooter(`Requested by ${message.author.tag}`)
|
||||
.setImage(message.guild.iconURL({ dynamic: true, size: 2048 }));
|
||||
message.inlineReply(Embed);
|
||||
},
|
||||
|
|
|
@ -69,6 +69,9 @@ module.exports = {
|
|||
)} ${moment(message.guild.createdTimestamp).format("LL")} ${moment(
|
||||
message.guild.createdTimestamp
|
||||
).fromNow()}`,
|
||||
`**❯ Community Features:** ${
|
||||
message.guild.features.join(", ") || "No Community Features!"
|
||||
}`,
|
||||
"\u200b",
|
||||
])
|
||||
.addField("Statistics", [
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"prefix": "C.",
|
||||
"mongo": "mongodb://127.0.0.1:27017/cath",
|
||||
"mongo": "mongodb://127.0.0.1:27017/test",
|
||||
"URL": "https://cath.gq/",
|
||||
"color": "02023a",
|
||||
"soundcloud": "dmDh7QSlmGpzH9qQoH1YExYCGcyYeYYC",
|
||||
"ca": "**[Invite](https://discord.com/api/oauth2/authorize?client_id=800966959268364288&permissions=4231314550&scope=bot%20applications.commands) | [Support](https://discord.gg/SbQHChmGcp) | [YouTube](https://youtube.com/Kirito01) | [Website](https://www.cath.gq)**",
|
||||
"ca": "**[Invite](https://discord.com/api/oauth2/authorize?client_id=800966959268364288&permissions=mongodb+srv://cath_exe:SKS_2021@cath-exe.iolb7.mongodb.net/Data4231314550&scope=bot%20applications.commands) | [Support](https://discord.gg/SbQHChmGcp) | [YouTube](https://youtube.com/Kirito01) | [Website](https://www.cath.gq)**",
|
||||
"cat": "**[Invite](https://discord.com/api/oauth2/authorize?client_id=800966959268364288&permissions=4231314550&scope=bot%20applications.commands) | [Support](https://discord.gg/SbQHChmGcp) | [YouTube](https://youtube.com/Kirito01) | [Website](https://www.cath.gq)**\n\n",
|
||||
"Suggestion": "853319776034226186",
|
||||
"Report": "853319776034226186",
|
||||
"Welcome": "837913442228371456"
|
||||
"Welcome": "837913442228371456",
|
||||
"DM": "850434924536135690"
|
||||
}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
const Levels = require("discord-xp");
|
||||
const client = require("../bot");
|
||||
const users = require("../models/users");
|
||||
Levels.setURL(require("../config.json").mongo);
|
||||
require("dotenv").config();
|
||||
Levels.setURL(process.env.MONGO);
|
||||
client.on("message", async message => {
|
||||
if (!message.guild) return;
|
||||
if (message.author.bot) return;
|
||||
const guild = await client.data.getGuild(message.guild.id);
|
||||
if (guild.Level == false) return;
|
||||
const user = await client.data.getUser(message.author.id);
|
||||
var max = 30;
|
||||
if (user) {
|
||||
|
@ -15,7 +17,6 @@ client.on("message", async message => {
|
|||
}
|
||||
}
|
||||
const randomAmountOfXp = client.function.rndint(10, max);
|
||||
if (client.xp.includes(message.guild.id)) return;
|
||||
const hasLeveledUp = await Levels.appendXp(
|
||||
message.author.id,
|
||||
message.guild.id,
|
||||
|
|
447
events/log.js
447
events/log.js
|
@ -0,0 +1,447 @@
|
|||
// const Discord = require("discord.js");
|
||||
// const Guild = require("../models/guilds");
|
||||
// const client = require("../bot");
|
||||
// let types = {
|
||||
// text: "Text Channel",
|
||||
// voice: "Voice Channel",
|
||||
// null: "No Type",
|
||||
// news: "News Channel",
|
||||
// store: "Store Channel",
|
||||
// category: "Category",
|
||||
// };
|
||||
// client.on("channelCreate", async channel => {
|
||||
// send_log(
|
||||
// client,
|
||||
// channel.guild,
|
||||
// "GREEN",
|
||||
// "Channel Created",
|
||||
// `Channel Name: \`${channel.name}\`\nChannel ID: \`${
|
||||
// channel.id
|
||||
// }\`\nChannel Type: \`${types[channel.type]}\`\nChannel Position: \`${
|
||||
// channel.rawPosition
|
||||
// }\``
|
||||
// );
|
||||
// });
|
||||
// client.on("channelDelete", async channel => {
|
||||
// send_log(
|
||||
// client,
|
||||
// channel.guild,
|
||||
// "RED",
|
||||
// "Channel Deleted",
|
||||
// `Channel Name: \`${channel.name}\`\nChannel ID: \`${
|
||||
// channel.id
|
||||
// }\`\nChannel Type: \`${types[channel.type]}\`\nChannel Position: \`${
|
||||
// channel.rawPosition
|
||||
// }\``
|
||||
// );
|
||||
// });
|
||||
// client.on("channelPinsUpdate", async (channel, time) => {
|
||||
// send_log(
|
||||
// client,
|
||||
// channel.guild,
|
||||
// "YELLOW",
|
||||
// "Channel Pins Update",
|
||||
// `Channel Name: \`${channel.name}\`\nChannel ID: \`${
|
||||
// channel.id
|
||||
// }\`\nPinned at \`${time.toLocaleString()}\``,
|
||||
// "https://i.stack.imgur.com/d1JEp.png"
|
||||
// );
|
||||
// });
|
||||
// client.on("channelUpdate", function (oldChannel, newChannel) {
|
||||
// let newCat = newChannel.parent ? newChannel.parent.name : "NO PARENT";
|
||||
// let guildChannel = newChannel.guild;
|
||||
// if (!guildChannel || !guildChannel.available) return;
|
||||
// if (oldChannel.name != newChannel.name) {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldChannel.guild,
|
||||
// "YELLOW",
|
||||
// "Channel Updated - Name",
|
||||
// `Channel Name: \`${oldChannel.name}\`\nChannel Id: \`${oldChannel.id}\`\n\n` +
|
||||
// `Channel Name: \`${newChannel.name}\`\nChannel Id: \`${newChannel.id}\``
|
||||
// );
|
||||
// } else if (oldChannel.type != newChannel.type) {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldChannel.guild,
|
||||
// "YELLOW",
|
||||
// "Channel Updated - Type",
|
||||
// `Channel Name: \`${oldChannel.name}\`\nChannel Id: \`${
|
||||
// oldChannel.id
|
||||
// }\`\nChannelTYPE: \`${types[oldChannel.type]}\`\n\n` +
|
||||
// `Channel Name: \`${newChannel.name}\`\nChannel Id: \`${
|
||||
// newChannel.id
|
||||
// }\`\nChannelTYPE: \`${types[newChannel.type]}\``
|
||||
// );
|
||||
// } else if (oldChannel.topic != newChannel.topic) {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldChannel.guild,
|
||||
// "YELLOW",
|
||||
// "Channel UPDATED - TOPIC",
|
||||
// `Channel Name: \`${oldChannel.name}\`\nChannel Id: \`${oldChannel.id}\`\nChannelTOPIC: \`${oldChannel.topic}\`\n\n` +
|
||||
// `Channel Name: \`${newChannel.name}\`\nChannel Id: \`${newChannel.id}\`\nChannelTOPIC: \`${newChannel.topic}\``
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
// client.on("emojiCreate", function (emoji) {
|
||||
// send_log(
|
||||
// client,
|
||||
// emoji.guild,
|
||||
// "GREEN",
|
||||
// "EMOJI CREATED",
|
||||
// `EMOJI: ${emoji}\nEMOJINAME: ${emoji.name}\nEMOJIID: ${emoji.id}\nEMOJIURL: ${emoji.url}`
|
||||
// );
|
||||
// });
|
||||
// client.on("emojiDelete", function (emoji) {
|
||||
// send_log(
|
||||
// client,
|
||||
// emoji.guild,
|
||||
// "RED",
|
||||
// "EMOJI DELETED",
|
||||
// `EMOJI: ${emoji}\nEMOJINAME: ${emoji.name}\nEMOJIID: ${emoji.id}\nEMOJIURL: ${emoji.url}`
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("emojiUpdate", function (oldEmoji, newEmoji) {
|
||||
// if (oldEmoji.name !== newEmoji.name) {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldEmoji.guild,
|
||||
// "ORANGE",
|
||||
// "EMOJI NAME CHANGED",
|
||||
// `__Emoji: ${newEmoji}__ \n\n**Before:** \`${oldEmoji.name}\`\n**After:** \`${newEmoji.name}\`\n**Emoji ID:** \`${newEmoji.id}\``
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
|
||||
// client.on("guildBanAdd", function (guild, user) {
|
||||
// send_log(
|
||||
// client,
|
||||
// guild,
|
||||
// "RED",
|
||||
// "USER BANNED",
|
||||
// `User: ${user} (\`${user.id}\`)\n\`${user.tag}\``,
|
||||
// user.user.displayAvatarURL({ dynamic: true })
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("guildBanRemove", function (guild, user) {
|
||||
// send_log(
|
||||
// client,
|
||||
// guild,
|
||||
// "YELLOW",
|
||||
// "USER UNBANNED",
|
||||
// `User: ${user} (\`${user.id}\`)\n\`${user.tag}\``,
|
||||
// user.user.displayAvatarURL({ dynamic: true })
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("guildMemberAdd", function (member) {
|
||||
// send_log(
|
||||
// member.guild,
|
||||
// client,
|
||||
// "GREEN",
|
||||
// "MEMBER JOINED",
|
||||
// `Member: ${member.user} (\`${member.user.id}\`)\n\`${member.user.tag}\``,
|
||||
// member.user.displayAvatarURL({ dynamic: true })
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("guildMemberRemove", function (member) {
|
||||
// send_log(
|
||||
// client,
|
||||
// member.guild,
|
||||
// "RED",
|
||||
// "MEMBER LEFT",
|
||||
// `Member: ${member.user} (\`${member.user.id}\`)\n\`${member.user.tag}\``,
|
||||
// member.user.displayAvatarURL({ dynamic: true })
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("guildMembersChunk", function (members, guild) {
|
||||
// send_log(
|
||||
// guild,
|
||||
// client,
|
||||
// "RED",
|
||||
// "MEMBER CHUNK / RAID - " + members.length + " Members",
|
||||
// members.map(
|
||||
// (user, index) => `${index}) - ${user} - ${user.tag} - \`${user.id}\``
|
||||
// )
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("guildMemberUpdate", function (oldMember, newMember) {
|
||||
// let options = {};
|
||||
|
||||
// if (options[newMember.guild.id]) {
|
||||
// options = options[newMember.guild.id];
|
||||
// }
|
||||
|
||||
// // Add default empty list
|
||||
// if (typeof options.excludedroles === "undefined")
|
||||
// options.excludedroles = new Array([]);
|
||||
// if (typeof options.trackroles === "undefined") options.trackroles = true;
|
||||
// const oldMemberRoles = oldMember.roles.cache.keyArray();
|
||||
// const newMemberRoles = newMember.roles.cache.keyArray();
|
||||
// const oldRoles = oldMemberRoles
|
||||
// .filter(x => !options.excludedroles.includes(x))
|
||||
// .filter(x => !newMemberRoles.includes(x));
|
||||
// const newRoles = newMemberRoles
|
||||
// .filter(x => !options.excludedroles.includes(x))
|
||||
// .filter(x => !oldMemberRoles.includes(x));
|
||||
// const rolechanged = newRoles.length || oldRoles.length;
|
||||
|
||||
// if (rolechanged) {
|
||||
// let roleadded = "";
|
||||
// if (newRoles.length > 0) {
|
||||
// for (let i = 0; i < newRoles.length; i++) {
|
||||
// if (i > 0) roleadded += ", ";
|
||||
// roleadded += `<@&${newRoles[i]}>`;
|
||||
// }
|
||||
// }
|
||||
// let roleremoved = "";
|
||||
// if (oldRoles.length > 0) {
|
||||
// for (let i = 0; i < oldRoles.length; i++) {
|
||||
// if (i > 0) roleremoved += ", ";
|
||||
// roleremoved += `<@&${oldRoles[i]}>`;
|
||||
// }
|
||||
// }
|
||||
// let text = `${roleremoved ? `❌ ROLE REMOVED: \n${roleremoved}` : ""}${
|
||||
// roleadded ? `✅ ROLE ADDED:\n${roleadded}` : ""
|
||||
// }`;
|
||||
// send_log(
|
||||
// client,
|
||||
// oldMember.guild,
|
||||
// `${roleadded ? "GREEN" : "RED"}`,
|
||||
// "Member Roles Changed",
|
||||
// `Member: ${newMember.user}\nUser: \`${oldMember.user.tag}\`\n\n${text}`
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
|
||||
// client.on("messageDelete", function (message) {
|
||||
// if (message.channel.type !== "text") return;
|
||||
|
||||
// send_log(
|
||||
// client,
|
||||
// message.guild,
|
||||
// "ORANGE",
|
||||
// "Message Deleted",
|
||||
// `
|
||||
// **Author : ** <@${message.author.id}> - *${message.author.tag}*
|
||||
// **Date : ** ${message.createdAt}
|
||||
// **Channel : ** <#${message.channel.id}> - *${message.channel.name}*
|
||||
// **Deleted Message : **
|
||||
// \`\`\`
|
||||
// ${message.content.replace(/`/g, "'")}
|
||||
// \`\`\`
|
||||
// **Attachment URL : **
|
||||
// ${message.attachments.map(x => x.proxyURL)}
|
||||
// `
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("messageDeleteBulk", function (message) {
|
||||
// send_log(
|
||||
// client,
|
||||
// message.guild,
|
||||
// "RED",
|
||||
// message.length + " Message Deleted BULK",
|
||||
// `${message.length} Messages delete in: ${message.channel}`
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("messageUpdate", function (oldMessage, newMessage) {
|
||||
// if (oldMessage.author.bot) return;
|
||||
// if (oldMessage.channel.type !== "text") return;
|
||||
// if (newMessage.channel.type !== "text") return;
|
||||
|
||||
// if (oldMessage.content === newMessage.content) return;
|
||||
// send_log(
|
||||
// client,
|
||||
// oldMessage.guild,
|
||||
// "YELLOW",
|
||||
// "Message Updated",
|
||||
// `
|
||||
// **Author : ** <@${newMessage.member.user.id}> - *${newMessage.member.user.tag}*
|
||||
// **Date : ** ${newMessage.createdAt}
|
||||
// **Channel : ** <#${newMessage.channel.id}> - *${newMessage.channel.name}*
|
||||
// **Orignal Message : **
|
||||
// \`\`\`
|
||||
// ${oldMessage.content.replace(/`/g, "'")}
|
||||
// \`\`\`
|
||||
// **Updated Message : **
|
||||
// \`\`\`
|
||||
// ${newMessage.content.replace(/`/g, "'")}
|
||||
// \`\`\``
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("roleCreate", function (role) {
|
||||
// send_log(
|
||||
// client,
|
||||
// role.guild,
|
||||
// "GREEN",
|
||||
// "ROLE CREATED"`ROLE: ${role}\nROLENAME: ${role.name}\nROLEID: ${role.id}\nHEXCOLOR: ${role.hexColor}\nPOSITION: ${role.position}`
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("roleDelete", function (role) {
|
||||
// send_log(
|
||||
// client,
|
||||
// role.guild,
|
||||
// "RED",
|
||||
// "ROLE DELETED"`ROLE: ${role}\nROLENAME: ${role.name}\nROLEID: ${role.id}\nHEXCOLOR: ${role.hexColor}\nPOSITION: ${role.position}`
|
||||
// );
|
||||
// });
|
||||
|
||||
// client.on("roleUpdate", function (oldRole, newRole) {
|
||||
// let perms = {
|
||||
// 1: "CREATE_INSTANT_INVITE",
|
||||
// 2: "KICK_MEMBERS",
|
||||
// 4: "BAN_MEMBERS",
|
||||
// 8: "ADMINISTRATOR",
|
||||
// 16: "MANAGE_CHANNELS",
|
||||
// 32: "MANAGE_GUILD",
|
||||
// 64: "ADD_REACTIONS",
|
||||
// 128: "VIEW_AUDIT_LOG",
|
||||
// 256: "PRIORITY_SPEAKER",
|
||||
// 1024: "VIEW_CHANNEL",
|
||||
// 1024: "READ_MESSAGES",
|
||||
// 2048: "SEND_MESSAGES",
|
||||
// 4096: "SEND_TTS_MESSAGES",
|
||||
// 8192: "MANAGE_MESSAGES",
|
||||
// 16384: "EMBED_LINKS",
|
||||
// 32768: "ATTACH_FILES",
|
||||
// 65536: "READ_MESSAGE_HISTORY",
|
||||
// 131072: "MENTION_EVERYONE",
|
||||
// 262144: "EXTERNAL_EMOJIS",
|
||||
// 262144: "USE_EXTERNAL_EMOJIS",
|
||||
// 1048576: "CONNECT",
|
||||
// 2097152: "SPEAK",
|
||||
// 4194304: "MUTE_MEMBERS",
|
||||
// 8388608: "DEAFEN_MEMBERS",
|
||||
// 16777216: "MOVE_MEMBERS",
|
||||
// 33554432: "USE_VAD",
|
||||
// 67108864: "CHANGE_NICKNAME",
|
||||
// 134217728: "MANAGE_NICKNAMES",
|
||||
// 268435456: "MANAGE_ROLES",
|
||||
// 268435456: "MANAGE_ROLES_OR_PERMISSIONS",
|
||||
// 536870912: "MANAGE_WEBHOOKS",
|
||||
// "1073741824 ": "MANAGE_EMOJIS",
|
||||
// CREATE_INSTANT_INVITE: "CREATE_INSTANT_INVITE",
|
||||
// KICK_MEMBERS: "KICK_MEMBERS",
|
||||
// BAN_MEMBERS: "BAN_MEMBERS",
|
||||
// ADMINISTRATOR: "ADMINISTRATOR",
|
||||
// MANAGE_CHANNELS: "MANAGE_CHANNELS",
|
||||
// MANAGE_GUILD: "MANAGE_GUILD",
|
||||
// ADD_REACTIONS: "ADD_REACTIONS",
|
||||
// VIEW_AUDIT_LOG: "VIEW_AUDIT_LOG",
|
||||
// PRIORITY_SPEAKER: "PRIORITY_SPEAKER",
|
||||
// VIEW_CHANNEL: "VIEW_CHANNEL",
|
||||
// READ_MESSAGES: "READ_MESSAGES",
|
||||
// SEND_MESSAGES: "SEND_MESSAGES",
|
||||
// SEND_TTS_MESSAGES: "SEND_TTS_MESSAGES",
|
||||
// MANAGE_MESSAGES: "MANAGE_MESSAGES",
|
||||
// EMBED_LINKS: "EMBED_LINKS",
|
||||
// ATTACH_FILES: "ATTACH_FILES",
|
||||
// READ_MESSAGE_HISTORY: "READ_MESSAGE_HISTORY",
|
||||
// MENTION_EVERYONE: "MENTION_EVERYONE",
|
||||
// EXTERNAL_EMOJIS: "EXTERNAL_EMOJIS",
|
||||
// USE_EXTERNAL_EMOJIS: "USE_EXTERNAL_EMOJIS",
|
||||
// CONNECT: "CONNECT",
|
||||
// SPEAK: "SPEAK",
|
||||
// MUTE_MEMBERS: "MUTE_MEMBERS",
|
||||
// DEAFEN_MEMBERS: "DEAFEN_MEMBERS",
|
||||
// MOVE_MEMBERS: "MOVE_MEMBERS",
|
||||
// USE_VAD: "USE_VAD",
|
||||
// CHANGE_NICKNAME: "CHANGE_NICKNAME",
|
||||
// MANAGE_NICKNAMES: "MANAGE_NICKNAMES",
|
||||
// MANAGE_ROLES: "MANAGE_ROLES",
|
||||
// MANAGE_ROLES_OR_PERMISSIONS: "MANAGE_ROLES_OR_PERMISSIONS",
|
||||
// MANAGE_WEBHOOKS: "MANAGE_WEBHOOKS",
|
||||
// MANAGE_EMOJIS: "MANAGE_EMOJIS",
|
||||
// };
|
||||
// if (oldRole.name !== newRole.name) {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldRole.guild,
|
||||
// "ORANGE",
|
||||
// "ROLE NAME CHANGED",
|
||||
// `__ROLE: ${oldRole}__ \n\n**Before:** \`${oldRole.name}\`
|
||||
// **After:** \`${newRole.name}\`
|
||||
// **Role ID:** \`${newRole.id}\``
|
||||
// );
|
||||
// } else if (oldRole.color !== newRole.color) {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldRole.guild,
|
||||
// "ORANGE",
|
||||
// "ROLE COLOR CHANGED",
|
||||
// `__ROLE: ${newRole}__ \n\n**Before:** \`${oldRole.color.toString(16)}\`
|
||||
// **After:** \`${newRole.color.toString(16)}\`
|
||||
// **ROLE ID:** \`${newRole.id}\``
|
||||
// );
|
||||
// } else {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldRole.guild,
|
||||
// "RED",
|
||||
// "ROLE PERMISSIONS CHANGED",
|
||||
// `__ROLE: ${newRole}__ \n**THE PERMISSIONS CHANGED PLEASE CHECK!!!**OLD PERMISSIONS: ${oldRole.permissions.bitfield}
|
||||
// NEW PERMISSIONS: ${newRole.permissions.bitfield}
|
||||
// **Role ID:** \`${newRole.id}\``
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
|
||||
// client.on("userUpdate", async (oldUser, newUser) => {
|
||||
// if (oldUser.username !== newUser.username) {
|
||||
// send_log(
|
||||
// client,
|
||||
// oldUser.guild,
|
||||
// "BLACK",
|
||||
// "Member Username Changed",
|
||||
// `Member: ${newUser}\nOld Username: \`${oldUser.username}\`\nNew Username: \`${newUser.username}\` `
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
// async function send_log(client, guild, color, title, description, thumb) {
|
||||
// try {
|
||||
// const LogEmbed = new Discord.MessageEmbed()
|
||||
// .setColor(color ? color : client.color)
|
||||
// .setDescription(description ? description.substr(0, 2048) : "\u200b")
|
||||
// .setTitle(title ? title.substr(0, 256) : "\u200b")
|
||||
// .setTimestamp()
|
||||
// .setThumbnail(
|
||||
// thumb ? thumb : client.user.displayAvatarURL({ format: "png" })
|
||||
// )
|
||||
// .setFooter(
|
||||
// "Made by Cath Team",
|
||||
// client.user.displayAvatarURL({ format: "png" })
|
||||
// );
|
||||
// const db = await Guild.findOne({ Guild: guild.id }, (err, guild) => {
|
||||
// if (err) throw err;
|
||||
// });
|
||||
// if (!db) return;
|
||||
// const ch = db.Log;
|
||||
// const logger = await client.channels.fetch(ch);
|
||||
// if (!logger) throw new Error("Error 404 - Channel Not Found");
|
||||
// try {
|
||||
// const hook = new Discord.WebhookClient(
|
||||
// db.LogWebhookID,
|
||||
// db.LogWebhookToken
|
||||
// );
|
||||
// hook.send({
|
||||
// username: guild.name,
|
||||
// avatarURL: client.user.displayAvatarURL({ format: "png" }),
|
||||
// embeds: [LogEmbed],
|
||||
// });
|
||||
// } catch {
|
||||
// return;
|
||||
// }
|
||||
// } catch (e) {
|
||||
// console.log(e);
|
||||
// }
|
||||
// }
|
|
@ -5,15 +5,15 @@ const { prefix } = require("../config.json");
|
|||
const guilds = require("../models/guilds");
|
||||
const ms = require("ms");
|
||||
const schema = require("../models/custom-commands");
|
||||
const Timeout = new Collection();
|
||||
const Timeout2 = new Collection();
|
||||
const db = require("../models/status");
|
||||
const db = require("../models/bot");
|
||||
const cooldown = require("../models/cooldown");
|
||||
client.on("message", async message => {
|
||||
const p = await client.prefix(message);
|
||||
if (message.author.bot) return;
|
||||
if (message.content.match(new RegExp(`^<@!?${client.user.id}>( |)$`))) {
|
||||
const _ = new MessageEmbed()
|
||||
.setTitle("cath.exe")
|
||||
.setTitle(client.user.username)
|
||||
.addField("Links:", client.cat)
|
||||
.addField(
|
||||
"Prefix/Usage",
|
||||
|
@ -26,12 +26,11 @@ client.on("message", async message => {
|
|||
.setColor(client.color);
|
||||
return message.inlineReply(_).then(m => m.delete({ timeout: 15000 }));
|
||||
}
|
||||
if (!message.content.toLowerCase().startsWith(p.toLowerCase())) return;
|
||||
if (!message.guild) return;
|
||||
if (!message.content.toLowerCase().startsWith(p.toLowerCase())) return;
|
||||
if (!message.member) {
|
||||
message.member = await message.guild.fetchMember(message);
|
||||
}
|
||||
|
||||
db.findOne({ Bot: client.user.id }, async (err, data) => {
|
||||
if (!data) {
|
||||
new db({
|
||||
|
@ -54,11 +53,16 @@ client.on("message", async message => {
|
|||
if (!guildDB) return;
|
||||
let userDB = await client.data.getUser(message.author.id);
|
||||
if (!userDB) return;
|
||||
let userEconDB = await client.data.getUserEcon(message.author.id);
|
||||
data.Guild = guildDB;
|
||||
data.User = userDB;
|
||||
data.UserEcon = userEconDB;
|
||||
if (!guildDB) {
|
||||
await client.data.CreateGuild(message.guild.id);
|
||||
}
|
||||
if (!userEconDB) {
|
||||
await client.createProfile(message.author.id);
|
||||
}
|
||||
if (data.User) {
|
||||
if (data.User.Blacklist) {
|
||||
return;
|
||||
|
@ -118,7 +122,8 @@ client.on("message", async message => {
|
|||
}
|
||||
if (command.Premium == true) {
|
||||
if (data.User.Premium == false) {
|
||||
return message.inlineReply(
|
||||
return message
|
||||
.inlineReply(
|
||||
new MessageEmbed()
|
||||
.setURL(client.web)
|
||||
.setAuthor(
|
||||
|
@ -131,7 +136,24 @@ client.on("message", async message => {
|
|||
)
|
||||
.setTimestamp()
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
);
|
||||
)
|
||||
.then(m => m.delete({ timeout: 10000 }));
|
||||
}
|
||||
}
|
||||
if (command.Disable == true) {
|
||||
return message
|
||||
.inlineReply(
|
||||
`**${command.name}** command is currently in maintenance.\nYou can use **cath.exe#9686** or **Cath 2#7414** if it is online\nIf you need help, please contact **Cat drinking a cat#0795** or **Ń1ght#0001**`
|
||||
)
|
||||
.then(m => m.delete({ timeout: 10000 }));
|
||||
}
|
||||
if (command.Level == true) {
|
||||
if (data.Guild.Level == false) {
|
||||
return message
|
||||
.inlineReply(
|
||||
`This command is disabled due to levelling system is disabled in this server`
|
||||
)
|
||||
.then(m => m.delete({ timeout: 10000 }));
|
||||
}
|
||||
}
|
||||
if (!message.member.permissions.has(command.UserPerm)) return;
|
||||
|
@ -160,6 +182,92 @@ client.on("message", async message => {
|
|||
} else;
|
||||
}
|
||||
if (command.timeout) {
|
||||
const current_time = Date.now();
|
||||
const cooldown_amount = command.timeout;
|
||||
cooldown.findOne(
|
||||
{ User: message.author.id, CMD: command.name },
|
||||
async (err, dataa) => {
|
||||
if (dataa) {
|
||||
if (data.User.Premium == true) {
|
||||
if (command.timeout > 1000 * 60 * 60) {
|
||||
const expiration_time = dataa.Time + command.timeout;
|
||||
if (current_time < expiration_time) {
|
||||
const time_left = expiration_time - current_time;
|
||||
const slow = [
|
||||
"Keep it slow...",
|
||||
"Calm down",
|
||||
"Stop it get some help",
|
||||
"Too fast",
|
||||
];
|
||||
const slowed =
|
||||
slow[Math.floor(Math.random() * slow.length)];
|
||||
return message.channel
|
||||
.send(
|
||||
new MessageEmbed()
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setTitle(slowed)
|
||||
.setDescription(
|
||||
`Wait **${client.function.timer(
|
||||
time_left
|
||||
)}** to use the command again!\nThe default cooldown is **${client.function.timer(
|
||||
command.timeout
|
||||
)}**`
|
||||
)
|
||||
)
|
||||
.then(m => m.delete({ timeout: 10000 }));
|
||||
} else {
|
||||
await cooldown.findOneAndUpdate(
|
||||
{ User: message.author.id, CMD: command.name },
|
||||
{ Time: current_time }
|
||||
);
|
||||
command.run(client, message, args, data);
|
||||
client.addcmdsused(message.author.id);
|
||||
}
|
||||
} else {
|
||||
const expiration_time = dataa.Time + command.timeout / 2;
|
||||
if (current_time < expiration_time) {
|
||||
const time_left = expiration_time - current_time;
|
||||
const slow = [
|
||||
"Keep it slow...",
|
||||
"Calm down",
|
||||
"Stop it get some help",
|
||||
"Too fast",
|
||||
];
|
||||
const slowed =
|
||||
slow[Math.floor(Math.random() * slow.length)];
|
||||
return message.channel
|
||||
.send(
|
||||
new MessageEmbed()
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setTitle(slowed)
|
||||
.setDescription(
|
||||
`Wait **${client.function.timer(
|
||||
time_left
|
||||
)}** to use the command again!\nThe default cooldown is **${client.function.timer(
|
||||
command.timeout
|
||||
)}**, since you are **[premium](${
|
||||
client.invite
|
||||
})** users, you only need to wait **${client.function.timer(
|
||||
command.timeout / 2
|
||||
)}**`
|
||||
)
|
||||
)
|
||||
.then(m => m.delete({ timeout: 10000 }));
|
||||
} else {
|
||||
await cooldown.findOneAndUpdate(
|
||||
{ User: message.author.id, CMD: command.name },
|
||||
{ Time: current_time }
|
||||
);
|
||||
command.run(client, message, args, data);
|
||||
client.addcmdsused(message.author.id);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const expiration_time = dataa.Time + cooldown_amount;
|
||||
if (current_time < expiration_time) {
|
||||
const time_left = expiration_time - current_time;
|
||||
const slow = [
|
||||
"Keep it slow...",
|
||||
"Calm down",
|
||||
|
@ -167,29 +275,50 @@ client.on("message", async message => {
|
|||
"Too fast",
|
||||
];
|
||||
const slowed = slow[Math.floor(Math.random() * slow.length)];
|
||||
if (Timeout.has(`${command.name}${message.author.id}`))
|
||||
return message.channel.send(
|
||||
return message.channel
|
||||
.send(
|
||||
new MessageEmbed()
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setTitle(slowed)
|
||||
.setDescription(
|
||||
`You are on a \`${ms(
|
||||
Timeout.get(`${command.name}${message.author.id}`) -
|
||||
Date.now(),
|
||||
{ long: true }
|
||||
)}\` cooldown.`
|
||||
`Wait **${client.function.timer(
|
||||
time_left
|
||||
)}** to use the command again!\nThe default cooldown is **${client.function.timer(
|
||||
command.timeout
|
||||
)}**, but **[premium](${
|
||||
client.invite
|
||||
})** users only need to wait **${client.function.timer(
|
||||
command.timeout / 2
|
||||
)}**`
|
||||
)
|
||||
)
|
||||
.then(m => m.delete({ timeout: 10000 }));
|
||||
} else {
|
||||
await cooldown.findOneAndUpdate(
|
||||
{ User: message.author.id, CMD: command.name },
|
||||
{ Time: current_time }
|
||||
);
|
||||
command.run(client, message, args);
|
||||
Timeout.set(
|
||||
`${command.name}${message.author.id}`,
|
||||
Date.now() + command.timeout
|
||||
command.run(client, message, args, data);
|
||||
client.addcmdsused(message.author.id);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
command.run(client, message, args, data);
|
||||
client.addcmdsused(message.author.id);
|
||||
new cooldown({
|
||||
User: message.author.id,
|
||||
CMD: command.name,
|
||||
Time: current_time,
|
||||
Cooldown: command.timeout,
|
||||
}).save();
|
||||
}
|
||||
}
|
||||
);
|
||||
setTimeout(() => {
|
||||
Timeout.delete(`${command.name}${message.author.id}`);
|
||||
}, command.timeout);
|
||||
} else command.run(client, message, args);
|
||||
} else {
|
||||
command.run(client, message, args, data);
|
||||
client.addcmdsused(message.author.id);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (cmddata.Delete === true && cmddata.Random === false) {
|
||||
|
@ -233,19 +362,23 @@ client.on("message", async message => {
|
|||
];
|
||||
const slowed = slow[Math.floor(Math.random() * slow.length)];
|
||||
if (Timeout2.has(`${path.name}${message.author.id}`))
|
||||
return message.channel.send(
|
||||
return message.channel
|
||||
.send(
|
||||
new MessageEmbed()
|
||||
.setColor(client.color)
|
||||
.setTimestamp()
|
||||
.setTitle(slowed)
|
||||
.setDescription(
|
||||
`You are on a \`${ms(
|
||||
Timeout2.get(`${path.name}${message.author.id}`) - Date.now(),
|
||||
{ long: true }
|
||||
)}\` cooldown.`
|
||||
`Wait **${client.function.timer(
|
||||
time_left
|
||||
)}** to use the command again!\nThe default cooldown is **${client.function.timer(
|
||||
command.timeout
|
||||
)}**`
|
||||
)
|
||||
);
|
||||
)
|
||||
.then(m => m.delete({ timeout: 10000 }));
|
||||
path.run(client, message, args);
|
||||
client.addcmdsused(message.author.id);
|
||||
Timeout2.set(
|
||||
`${path.name}${message.author.id}`,
|
||||
Date.now() + path.timeout
|
||||
|
@ -253,7 +386,10 @@ client.on("message", async message => {
|
|||
setTimeout(() => {
|
||||
Timeout2.delete(`${path.name}${message.author.id}`);
|
||||
}, path.timeout);
|
||||
} else path.run(client, message, args);
|
||||
} else {
|
||||
path.run(client, message, args);
|
||||
client.addcmdsused(message.author.id);
|
||||
}
|
||||
}
|
||||
});
|
||||
client.on("message", async message => {
|
||||
|
@ -264,10 +400,16 @@ client.on("message", async message => {
|
|||
!message.author.bot
|
||||
) {
|
||||
var attachment = message.attachments.array();
|
||||
client.DMLog.send(
|
||||
client.channels.cache
|
||||
.get(client.DMLog)
|
||||
.send(
|
||||
`\`${message.author.tag}(${message.author.id})\`: ` + message.content
|
||||
);
|
||||
if (attachment[0]) client.DMLog.send(attachment);
|
||||
if (attachment[1]) client.DMLog.send(attachment);
|
||||
if (attachment[2]) client.DMLog.send(attachment);
|
||||
if (attachment[3]) client.DMLog.send(attachment);
|
||||
if (attachment[4]) client.DMLog.send(attachment);
|
||||
}
|
||||
});
|
||||
/*
|
||||
|
|
2
events/raw.js
Normal file
2
events/raw.js
Normal file
|
@ -0,0 +1,2 @@
|
|||
const client = require("../bot");
|
||||
client.on("raw", d => client.manager.updateVoiceState(d));
|
|
@ -3,32 +3,49 @@ const config = require("../config.json");
|
|||
const prefix = config.prefix;
|
||||
const version = require("../package.json").version;
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
const m = require("../models/status");
|
||||
client.on("ready", () => {
|
||||
const m = require("../models/bot");
|
||||
const test = require("../util/dist/cmds").cmds();
|
||||
client.on("ready", async () => {
|
||||
client.manager.init(client.user.id);
|
||||
var users = client.guilds.cache
|
||||
.reduce((a, b) => a + b.memberCount, 0)
|
||||
.toLocaleString();
|
||||
var playing = [
|
||||
`v${version} | ${prefix}help`,
|
||||
client.web,
|
||||
`with ${users} users`,
|
||||
];
|
||||
var guilds = client.guilds.cache.size.toString();
|
||||
await client.data.botcache(client.user.id, guilds, users);
|
||||
await client.data.commands(client.user.id, test);
|
||||
var playing = [`v${version} | ${prefix}help`, client.web, `${users} users`];
|
||||
async function find() {
|
||||
const statusdb = await m.findOne({
|
||||
Status: "true",
|
||||
});
|
||||
if (statusdb && statusdb.Status == "true") {
|
||||
await client.user.setPresence({ status: "dnd" });
|
||||
client.user.setActivity({
|
||||
client.user.setPresence({
|
||||
activity: [
|
||||
{
|
||||
name: "Under Maintenance",
|
||||
type: "WATCHING",
|
||||
},
|
||||
],
|
||||
status: "dnd",
|
||||
});
|
||||
// client.user.setPresence({
|
||||
// activity: [
|
||||
// {
|
||||
// name: "Under Maintenance",
|
||||
// type: "STREAMING",
|
||||
// url: "https://twtich.tv/thekiritosgaming",
|
||||
// },
|
||||
// ],
|
||||
// status: "dnd",
|
||||
// });
|
||||
} else {
|
||||
var set = setInterval(function () {
|
||||
setInterval(function () {
|
||||
var game = Math.floor(Math.random() * playing.length + 0);
|
||||
client.user.setActivity({
|
||||
name: playing[game],
|
||||
type: "STREAMING",
|
||||
url: "https://www.twitch.tv/thekiritosgaming",
|
||||
url: "https://twitch.tv/thekiritosgaming",
|
||||
//status: "online",
|
||||
});
|
||||
}, 5000);
|
||||
}
|
||||
|
|
10
events/startTyping.js
Normal file
10
events/startTyping.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
const client = require("../bot");
|
||||
client.on("typingStart", async (channel, user) => {
|
||||
if (!user) return;
|
||||
if (user.bot) return;
|
||||
if (!channel) return;
|
||||
if (channel.type != "dm") return;
|
||||
user.send(
|
||||
"```DMs is reserved for bug reports/suggestions/feedbacks/queries and is forwarded to the developers. Please refrain from using it as a clipboard or trying to run commands in here [by violating this condition, you agree to let us sell your data]```"
|
||||
);
|
||||
});
|
9
index.js
9
index.js
|
@ -1,14 +1,15 @@
|
|||
const { ShardingManager } = require("discord.js");
|
||||
const manger = new ShardingManager(`./bot.js`, {
|
||||
token: "NzY1NTQyNDI0OTY4ODIyNzg1.X4WU8Q.gEwsAO8uMyJLZ2v7xq_TSRODvfk",
|
||||
require("dotenv").config();
|
||||
const manager = new ShardingManager(`./bot.js`, {
|
||||
token: process.env.TOKEN,
|
||||
totalShards: `auto`,
|
||||
});
|
||||
|
||||
manger.on(`shardCreate`, shard => {
|
||||
manager.on(`shardCreate`, shard => {
|
||||
console.log(
|
||||
`[${new Date().toString().split(" ", 5).join(" ")}] Spawned shard #${
|
||||
shard.id
|
||||
}`
|
||||
);
|
||||
});
|
||||
manger.spawn(manger.totalShards, 10000);
|
||||
manager.spawn(manager.totalShards, 10000);
|
||||
|
|
|
@ -7,5 +7,17 @@ module.exports = mongoose.model(
|
|||
default: "null",
|
||||
},
|
||||
Status: { type: String, default: "false" },
|
||||
Guilds: {
|
||||
type: String,
|
||||
default: "null",
|
||||
},
|
||||
Users: {
|
||||
type: String,
|
||||
default: "null",
|
||||
},
|
||||
Commands: {
|
||||
type: Array,
|
||||
default: [],
|
||||
},
|
||||
})
|
||||
);
|
22
models/cooldown.js
Normal file
22
models/cooldown.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
const { Schema, model } = require("mongoose");
|
||||
module.exports = model(
|
||||
"cooldown",
|
||||
new Schema({
|
||||
User: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
CMD: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
Time: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
Cooldown: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
})
|
||||
);
|
|
@ -8,8 +8,19 @@ module.exports = model(
|
|||
},
|
||||
CP: {
|
||||
type: Number,
|
||||
required: true,
|
||||
default: 0,
|
||||
},
|
||||
BJWins: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
SlotsWins: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
BetWins: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
Inventory: Object,
|
||||
})
|
||||
);
|
||||
|
|
|
@ -31,5 +31,9 @@ module.exports = mongoose.model(
|
|||
type: Array,
|
||||
default: [],
|
||||
},
|
||||
Level: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
})
|
||||
);
|
||||
|
|
|
@ -27,5 +27,9 @@ module.exports = mongoose.model(
|
|||
type: Array,
|
||||
default: [],
|
||||
},
|
||||
CommandUsed: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
})
|
||||
);
|
||||
|
|
8118
package-lock.json
generated
8118
package-lock.json
generated
File diff suppressed because it is too large
Load diff
46
package.json
46
package.json
|
@ -30,55 +30,45 @@
|
|||
"url": "https://github.com/night0721/cath/issues"
|
||||
},
|
||||
"homepage": "https://github.com/night0721/cath#readme",
|
||||
"devDependencies": {
|
||||
"eslint": "^7.30.0",
|
||||
"eslint-config-google": "^0.14.0",
|
||||
"jshint": "^2.13.0",
|
||||
"prettier": "^2.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@discordjs/opus": "^0.5.0",
|
||||
"@reconlx/discord.js": "^1.1.101",
|
||||
"aesthetically": "0.0.5",
|
||||
"axios": "^0.21.1",
|
||||
"canvacord": "^5.2.1",
|
||||
"canvas": "^2.8.0",
|
||||
"cath": "^1.0.7",
|
||||
"common-tags": "^1.8.0",
|
||||
"connect-mongo": "^4.4.1",
|
||||
"disco-oauth": "^5.1.0",
|
||||
"discord-buttons": "^1.0.4",
|
||||
"cors": "^2.8.5",
|
||||
"discord-canvas": "^1.4.1",
|
||||
"discord-giveaways": "^4.5.1",
|
||||
"discord-player": "^3.4.0",
|
||||
"discord-rpc": "^3.2.0",
|
||||
"discord-xp": "^1.1.14",
|
||||
"discord-ytdl-core": "^5.0.3",
|
||||
"discord.js": "github:reconlx/discord.js",
|
||||
"ejs": "^3.1.6",
|
||||
"discord-xp": "^1.1.16",
|
||||
"discord.js": "^12.5.3",
|
||||
"dotenv": "^10.0.0",
|
||||
"erela.js": "^2.3.3",
|
||||
"erela.js-spotify": "^1.2.0",
|
||||
"express": "^4.17.1",
|
||||
"express-session": "^1.17.2",
|
||||
"ffmpeg": "0.0.4",
|
||||
"ffmpeg-static": "^4.3.0",
|
||||
"figlet": "^1.5.0",
|
||||
"goosecache": "^9.0.14",
|
||||
"imageapi.js": "^1.7.0",
|
||||
"leven": "^3.1.0",
|
||||
"lyrics-finder": "^21.7.0",
|
||||
"method-override": "^3.0.0",
|
||||
"moment": "^2.29.1",
|
||||
"moment-timezone": "^0.5.33",
|
||||
"mongoose": "^5.12.11",
|
||||
"mongoose": "^5.13.2",
|
||||
"ms": "^2.1.3",
|
||||
"node-fetch": "^2.6.1",
|
||||
"node-superfetch": "^0.1.11",
|
||||
"opusscript": "0.0.8",
|
||||
"passport": "^0.4.1",
|
||||
"passport-discord": "^0.1.4",
|
||||
"path": "^0.12.7",
|
||||
"pug": "^3.0.2",
|
||||
"quick.db": "^7.1.3",
|
||||
"quickchart-js": "^1.0.7",
|
||||
"reconlx": "^1.2.41",
|
||||
"quickchart-js": "^1.2.0",
|
||||
"reconlx": "^1.3.3",
|
||||
"soundcloud-downloader": "^0.2.4",
|
||||
"string-toolkit": "^1.4.0",
|
||||
"superscript-text": "^1.0.0",
|
||||
"weky": "^1.4.2",
|
||||
"yt-search": "^2.8.0",
|
||||
"ytdl-core": "^4.8.0",
|
||||
"ytdl-core-discord": "^1.3.0",
|
||||
"ytpl": "^2.2.1"
|
||||
"weky": "^1.9.9"
|
||||
}
|
||||
}
|
||||
|
|
24
util/dist/bash.sh
vendored
24
util/dist/bash.sh
vendored
|
@ -1,24 +0,0 @@
|
|||
export NVM_DIR=/home/runner/nvm
|
||||
export NODE_VERSION=14.17
|
||||
|
||||
if ! ls $NVM_DIR > /dev/null 2>&1
|
||||
then mkdir -p $NVM_DIR
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
|
||||
fi
|
||||
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||
nvm use $NODE_VERSION
|
||||
|
||||
rm -rf node_modules/
|
||||
npm i
|
||||
|
||||
if [ $(npm -v) != "6.14.9" ]
|
||||
then npm i -g npm@6.14.9
|
||||
fi
|
||||
|
||||
npm outdated | grep "MISSING"
|
||||
if [ $? -eq 0 ]
|
||||
then npm i
|
||||
fi
|
||||
|
||||
node .
|
2
util/dist/cmds.js
vendored
2
util/dist/cmds.js
vendored
|
@ -2,7 +2,6 @@ const { readdirSync } = require("fs");
|
|||
const ms = require("ms");
|
||||
function cmds() {
|
||||
let categories = [];
|
||||
|
||||
readdirSync("./commands").forEach(dir => {
|
||||
const dirs = readdirSync(`./commands/${dir}`).filter(file =>
|
||||
file.endsWith(".js")
|
||||
|
@ -26,6 +25,7 @@ function cmds() {
|
|||
UserPermission: file.UserPerm
|
||||
? file.UserPerm
|
||||
: "No required user permission",
|
||||
status: file.status ? file.status : true,
|
||||
});
|
||||
});
|
||||
let data = {
|
||||
|
|
6
util/dist/err.js
vendored
6
util/dist/err.js
vendored
|
@ -174,6 +174,12 @@ module.exports = async (message, dir, file, err) => {
|
|||
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;
|
||||
|
|
86
util/dist/manager.js
vendored
Normal file
86
util/dist/manager.js
vendored
Normal file
|
@ -0,0 +1,86 @@
|
|||
const { Manager } = require("erela.js");
|
||||
const Spotify = require("erela.js-spotify");
|
||||
const { MessageEmbed } = require("discord.js");
|
||||
module.exports = async client => {
|
||||
try {
|
||||
const id = process.env.SPOTIFY_ID;
|
||||
const secret = process.env.SPOTIFY_SECRET;
|
||||
client.manager = new Manager({
|
||||
plugins: [
|
||||
new Spotify({
|
||||
clientID: id,
|
||||
clientSecret: secret,
|
||||
}),
|
||||
],
|
||||
nodes: [
|
||||
{
|
||||
host: process.env.host,
|
||||
port: 80,
|
||||
password: process.env.password,
|
||||
retryDelay: 5000,
|
||||
},
|
||||
],
|
||||
autoPlay: true,
|
||||
send: (id, payload) => {
|
||||
const guild = client.guilds.cache.get(id);
|
||||
if (guild) guild.shard.send(payload);
|
||||
},
|
||||
})
|
||||
.on("nodeConnect", node =>
|
||||
console.log(`Node "${node.options.identifier}" has connected.`)
|
||||
)
|
||||
.on("nodeError", (node, error) =>
|
||||
console.log(
|
||||
`Node "${node.options.identifier}" encountered an error: ${error.message}.`
|
||||
)
|
||||
)
|
||||
.on("trackStart", (player, track) => {
|
||||
const channel = client.channels.cache.get(player.textChannel);
|
||||
const embed = new MessageEmbed()
|
||||
.setColor("02023a")
|
||||
.setAuthor(
|
||||
`Now Playing`,
|
||||
client.user.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp()
|
||||
.setDescription(`[${track.title}](${track.uri})`)
|
||||
.addField(`Requested By : `, `${track.requester}`, true);
|
||||
channel.send(embed);
|
||||
})
|
||||
.on("trackStuck", (player, track) => {
|
||||
const channel = client.channels.cache.get(player.textChannel);
|
||||
const embed = new MessageEmbed()
|
||||
.setColor("02023a")
|
||||
.setAuthor(
|
||||
`Track Stuck`,
|
||||
client.user.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
.setDescription(`${track.title}`)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp();
|
||||
channel.send(embed);
|
||||
})
|
||||
.on("queueEnd", player => {
|
||||
const channel = client.channels.cache.get(player.textChannel);
|
||||
const embed2 = new MessageEmbed()
|
||||
.setColor("02023a")
|
||||
.setAuthor(
|
||||
`Queue has ended`,
|
||||
client.user.displayAvatarURL({
|
||||
dynamic: true,
|
||||
})
|
||||
)
|
||||
.setFooter(`Made by ${client.author}`)
|
||||
.setTimestamp();
|
||||
channel.send(embed2);
|
||||
player.destroy();
|
||||
});
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
};
|
243
util/functions/economy.js
Normal file
243
util/functions/economy.js
Normal file
|
@ -0,0 +1,243 @@
|
|||
module.exports = async (client, message) => {
|
||||
const econ = require("../../models/econ");
|
||||
const user = require("../../models/users");
|
||||
client.createUser = id => {
|
||||
user.findOne({ User: id }, (err, data) => {
|
||||
new user({
|
||||
User: id,
|
||||
}).save();
|
||||
});
|
||||
};
|
||||
client.createProfile = id => {
|
||||
econ.findOne({ User: id }, (err, data) => {
|
||||
new econ({
|
||||
User: id,
|
||||
}).save();
|
||||
});
|
||||
};
|
||||
client.multi = message =>
|
||||
new Promise(async ful => {
|
||||
var multiplier = 0;
|
||||
const b = await user.findOne({ User: message.author.id });
|
||||
if (!b) {
|
||||
client.createUser(message.author.id);
|
||||
}
|
||||
if (b.Tier == 3) {
|
||||
multiplier += 0.1;
|
||||
}
|
||||
if (b.Tier == 2) {
|
||||
multiplier += 0.15;
|
||||
}
|
||||
if (b.Tier == 1) {
|
||||
multiplier += 0.2;
|
||||
}
|
||||
if (client.path.includes(message.guild.id)) {
|
||||
multiplier += 0.15;
|
||||
}
|
||||
if (
|
||||
[
|
||||
"🐱",
|
||||
"😾",
|
||||
"😿",
|
||||
"😽",
|
||||
"🙀",
|
||||
"😼",
|
||||
"😻",
|
||||
"😹",
|
||||
"😸",
|
||||
"😺",
|
||||
"cathexe",
|
||||
"cath",
|
||||
]
|
||||
.map(x => (message.channel.name.includes(x) ? 1 : 0))
|
||||
.filter(x => x).length
|
||||
) {
|
||||
multiplier += 0.1;
|
||||
}
|
||||
if (b.Premium === true) {
|
||||
multiplier += 0.25;
|
||||
}
|
||||
ful(Math.round(multiplier * 10));
|
||||
});
|
||||
|
||||
client.bal = id =>
|
||||
new Promise(async ful => {
|
||||
const data = await econ.findOne({ User: id });
|
||||
if (!data) {
|
||||
client.createProfile(id);
|
||||
}
|
||||
ful(data.CP);
|
||||
});
|
||||
|
||||
client.add = (id, amount, message) => {
|
||||
econ.findOne({ User: id }, async (err, data) => {
|
||||
var multi = 0;
|
||||
if (err) throw err;
|
||||
if (data) {
|
||||
const users = require("../../models/users");
|
||||
users.findOne({ User: id }, (err, b) => {
|
||||
if (!b) {
|
||||
client.createUser(id);
|
||||
}
|
||||
if (b.Tier == 3) {
|
||||
multi += 0.1;
|
||||
}
|
||||
if (b.Tier == 2) {
|
||||
multi += 0.15;
|
||||
}
|
||||
if (b.Tier === 1) {
|
||||
multi += 0.2;
|
||||
}
|
||||
if (client.path.includes(message.guild.id)) {
|
||||
multi += 0.15;
|
||||
}
|
||||
if (
|
||||
[
|
||||
"🐱",
|
||||
"😾",
|
||||
"😿",
|
||||
"😽",
|
||||
"🙀",
|
||||
"😼",
|
||||
"😻",
|
||||
"😹",
|
||||
"😸",
|
||||
"😺",
|
||||
"cathexe",
|
||||
"cath",
|
||||
]
|
||||
.map(x => (message.channel.name.includes(x) ? 1 : 0))
|
||||
.filter(x => x).length
|
||||
) {
|
||||
multi += 0.1;
|
||||
}
|
||||
if (b.Premium === true) {
|
||||
multi += 0.25;
|
||||
}
|
||||
if (multi === 0) {
|
||||
data.CP += amount;
|
||||
data.save();
|
||||
} else {
|
||||
data.CP += Math.round(amount * multi + amount);
|
||||
data.save();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
client.createProfile(id);
|
||||
}
|
||||
});
|
||||
};
|
||||
client.rmv = (id, amount) => {
|
||||
econ.findOne({ User: id }, async (err, data) => {
|
||||
if (err) throw err;
|
||||
if (data) {
|
||||
data.CP -= amount;
|
||||
data.save();
|
||||
} else {
|
||||
client.createProfile(id);
|
||||
}
|
||||
});
|
||||
};
|
||||
client.addItem = (id, item, amount) => {
|
||||
const economy = require("../../models/inventory");
|
||||
economy.findOne({ User: id }, (err, data) => {
|
||||
if (!data) {
|
||||
client.createProfile(id);
|
||||
} else {
|
||||
data[item] += amount;
|
||||
data.save();
|
||||
}
|
||||
});
|
||||
};
|
||||
client.removeItem = (id, item, amount) => {
|
||||
const inventory = require("../../models/inventory");
|
||||
inventory.findOne({ User: id }, (err, data) => {
|
||||
if (!data) {
|
||||
client.createProfile(id);
|
||||
} else {
|
||||
data[item] -= amount;
|
||||
data.save();
|
||||
}
|
||||
});
|
||||
};
|
||||
client.addcmdsused = id => {
|
||||
user.findOne({ User: id }, async (err, data) => {
|
||||
if (err) console.log(err);
|
||||
if (data) {
|
||||
data.CommandUsed++;
|
||||
data.save();
|
||||
} else {
|
||||
client.createUser(id);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
client.ADDBJWin = id => {
|
||||
econ.findOne({ User: id }, async (err, data) => {
|
||||
if (err) throw err;
|
||||
if (data) {
|
||||
data.BJWins++;
|
||||
data.save();
|
||||
} else {
|
||||
client.createProfile(id);
|
||||
}
|
||||
});
|
||||
};
|
||||
client.ADDSWin = id => {
|
||||
econ.findOne({ User: id }, async (err, data) => {
|
||||
if (err) throw err;
|
||||
if (data) {
|
||||
data.SlotsWins++;
|
||||
data.save();
|
||||
} else {
|
||||
client.createProfile(id);
|
||||
}
|
||||
});
|
||||
};
|
||||
client.ADDBWin = id => {
|
||||
econ.findOne({ User: id }, async (err, data) => {
|
||||
if (err) throw err;
|
||||
if (data) {
|
||||
data.BetWins++;
|
||||
data.save();
|
||||
} else {
|
||||
client.createProfile(id);
|
||||
}
|
||||
});
|
||||
};
|
||||
client.cmdsUSED = id =>
|
||||
new Promise(async ful => {
|
||||
const data = await user.findOne({ User: id });
|
||||
if (!data) {
|
||||
client.createProfile(id);
|
||||
}
|
||||
ful(data.CommandUsed);
|
||||
});
|
||||
|
||||
client.bjWin = id =>
|
||||
new Promise(async ful => {
|
||||
const data = await econ.findOne({ User: id });
|
||||
if (!data) {
|
||||
client.createProfile(id);
|
||||
}
|
||||
ful(data.BJWins);
|
||||
});
|
||||
|
||||
client.sWin = id =>
|
||||
new Promise(async ful => {
|
||||
const data = await econ.findOne({ User: id });
|
||||
if (!data) {
|
||||
client.createProfile(id);
|
||||
}
|
||||
ful(data.SlotsWins);
|
||||
});
|
||||
|
||||
client.bWin = id =>
|
||||
new Promise(async ful => {
|
||||
const data = await econ.findOne({ User: id });
|
||||
if (!data) {
|
||||
client.createProfile(id);
|
||||
}
|
||||
ful(data.BetWins);
|
||||
});
|
||||
};
|
|
@ -5,4 +5,45 @@ function random() {
|
|||
const num = Math.floor(Math.random() * 2);
|
||||
return num === 1;
|
||||
}
|
||||
module.exports = { rndint, random };
|
||||
function timer(timestamp) {
|
||||
const timeLeft = timestamp;
|
||||
const days = Math.floor(timeLeft / 86400000);
|
||||
const hours = Math.floor(timeLeft / 3600000) - days * 24;
|
||||
const minutes = Math.floor(timeLeft / 60000) - days * 1440 - hours * 60;
|
||||
const seconds =
|
||||
Math.floor(timeLeft / 1000) - days * 86400 - hours * 3600 - minutes * 60;
|
||||
const mseconds = timeLeft / 1000 - days * 86400 - hours * 3600 - minutes * 60;
|
||||
let string = "";
|
||||
if (days) string = string + `${days} ${days == 1 ? "day " : "days "}`;
|
||||
if (hours) string = string + `${hours} ${hours == 1 ? "hour " : "hours "}`;
|
||||
if (minutes)
|
||||
string = string + `${minutes} ${minutes == 1 ? "minute " : "minutes "}`;
|
||||
if (seconds)
|
||||
string = string + `${seconds} ${seconds == 1 ? "second " : "seconds "}`;
|
||||
if (!string.length) string = `${mseconds.toFixed(1)} second`;
|
||||
return string;
|
||||
}
|
||||
function sleep(ms) {
|
||||
let start = new Date().getTime();
|
||||
let end = start;
|
||||
while (end < start + ms) {
|
||||
end = new Date().getTime();
|
||||
}
|
||||
}
|
||||
function toHHMMSS(str) {
|
||||
var sec_num = parseInt(str, 10);
|
||||
var hours = Math.floor(sec_num / 3600);
|
||||
var minutes = Math.floor((sec_num - hours * 3600) / 60);
|
||||
var seconds = sec_num - hours * 3600 - minutes * 60;
|
||||
if (hours < 10) {
|
||||
hours = "0" + hours;
|
||||
}
|
||||
if (minutes < 10) {
|
||||
minutes = "0" + minutes;
|
||||
}
|
||||
if (seconds < 10) {
|
||||
seconds = "0" + seconds;
|
||||
}
|
||||
return hours + ":" + minutes + ":" + seconds;
|
||||
}
|
||||
module.exports = { rndint, random, timer, sleep, toHHMMSS };
|
||||
|
|
|
@ -6,8 +6,8 @@ const cachegoose = new GooseCache(mongoose, {
|
|||
mongoose.set("useFindAndModify", false);
|
||||
const u = require("../../models/users");
|
||||
const g = require("../../models/guilds");
|
||||
const m = require("../../models/bot");
|
||||
const e = require("../../models/econ");
|
||||
const m = require("../../models/status");
|
||||
module.exports = {
|
||||
/**
|
||||
* @param {String} URI - Mongo Connection URI
|
||||
|
@ -36,6 +36,7 @@ module.exports = {
|
|||
Premium,
|
||||
Category,
|
||||
Commands,
|
||||
Level,
|
||||
} = gg;
|
||||
await gg.save().catch(error => console.log(error));
|
||||
return {
|
||||
|
@ -47,6 +48,7 @@ module.exports = {
|
|||
Premium,
|
||||
Category,
|
||||
Commands,
|
||||
Level,
|
||||
};
|
||||
} else {
|
||||
const Guild = guild.Guild;
|
||||
|
@ -57,6 +59,7 @@ module.exports = {
|
|||
const Premium = guild.Premium;
|
||||
const Category = guild.Category;
|
||||
const Commands = guild.Commands;
|
||||
const Level = guild.Level;
|
||||
return {
|
||||
Guild,
|
||||
Prefix,
|
||||
|
@ -66,6 +69,7 @@ module.exports = {
|
|||
Premium,
|
||||
Category,
|
||||
Commands,
|
||||
Level,
|
||||
};
|
||||
}
|
||||
},
|
||||
|
@ -86,6 +90,7 @@ module.exports = {
|
|||
Blacklist,
|
||||
Blacklist_Reason,
|
||||
PremiumServers,
|
||||
CommandUsed,
|
||||
} = ss;
|
||||
await ss.save().catch(error => console.log(error));
|
||||
return {
|
||||
|
@ -97,6 +102,7 @@ module.exports = {
|
|||
Blacklist,
|
||||
Blacklist_Reason,
|
||||
PremiumServers,
|
||||
CommandUsed,
|
||||
};
|
||||
} else {
|
||||
const User = user.User;
|
||||
|
@ -107,6 +113,7 @@ module.exports = {
|
|||
const Blacklist = user.Blacklist;
|
||||
const Blacklist_Reason = user.Blacklist_Reason;
|
||||
const PremiumServers = user.PremiumServers;
|
||||
const CommandUsed = user.CommandUsed;
|
||||
return {
|
||||
User,
|
||||
AFK,
|
||||
|
@ -116,6 +123,39 @@ module.exports = {
|
|||
Blacklist,
|
||||
Blacklist_Reason,
|
||||
PremiumServers,
|
||||
CommandUsed,
|
||||
};
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @param {String} ID - User ID
|
||||
*/
|
||||
async getUserEcon(ID) {
|
||||
if (!ID) throw new Error("User ID?");
|
||||
const user = await u.findOne({ User: ID }).lean().cache(120);
|
||||
if (!user) {
|
||||
const ss = new u({ User: ID });
|
||||
const { User, CP, BJWins, SlotsWins, BetWins } = ss;
|
||||
await ss.save().catch(error => console.log(error));
|
||||
return {
|
||||
User,
|
||||
CP,
|
||||
BJWins,
|
||||
SlotsWins,
|
||||
BetWins,
|
||||
};
|
||||
} else {
|
||||
const User = user.User;
|
||||
const CP = user.CP;
|
||||
const BJWins = user.BJWins;
|
||||
const SlotsWins = user.SlotsWins;
|
||||
const BetWins = user.BetWins;
|
||||
return {
|
||||
User,
|
||||
CP,
|
||||
BJWins,
|
||||
SlotsWins,
|
||||
BetWins,
|
||||
};
|
||||
}
|
||||
},
|
||||
|
@ -441,54 +481,6 @@ module.exports = {
|
|||
cachegoose.clearCache();
|
||||
return true;
|
||||
},
|
||||
// /**
|
||||
// * @param {String} ID - User ID
|
||||
// */
|
||||
// async bal(ID) {
|
||||
// new Promise(async ful => {
|
||||
// const data = await e.findOne({ User: ID });
|
||||
// if (!data) return ful(0);
|
||||
// ful(data.CP);
|
||||
// });
|
||||
// },
|
||||
/**
|
||||
* @param {String} ID - User ID
|
||||
*/
|
||||
async bal(ID) {
|
||||
const data = await e.findOne({ User: ID });
|
||||
if (!data) return 0;
|
||||
else return data.CP;
|
||||
},
|
||||
/**
|
||||
* @param {String} ID - User ID
|
||||
* @param {Number} CP - Number
|
||||
*/
|
||||
async add(ID, CP) {
|
||||
e.findOne({ User: ID }, async (err, data) => {
|
||||
if (err) throw err;
|
||||
if (data) {
|
||||
data.CP += CP;
|
||||
} else {
|
||||
data = new e({ User: ID, CP });
|
||||
}
|
||||
await data.save();
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @param {String} ID - User ID
|
||||
* @param {Number} CP - Number
|
||||
*/
|
||||
async rmv(ID, CP) {
|
||||
e.findOne({ User: ID }, async (err, data) => {
|
||||
if (err) throw err;
|
||||
if (data) {
|
||||
data.CP -= CP;
|
||||
} else {
|
||||
data = new e({ User: ID, CP: -CP });
|
||||
}
|
||||
await data.save();
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @param {String} ID - Bot ID
|
||||
* @param {String} Toggle - Maintenance Toggle
|
||||
|
@ -500,9 +492,9 @@ module.exports = {
|
|||
if (!idk) {
|
||||
const newdb = new m({ Bot: ID });
|
||||
if (Toggle === "true") {
|
||||
newdb.Status === "true";
|
||||
newdb.Status = "true";
|
||||
} else {
|
||||
newdb.Status === "false";
|
||||
newdb.Status = "false";
|
||||
}
|
||||
await newdb.save().catch(error => console.log(error));
|
||||
return;
|
||||
|
@ -517,4 +509,94 @@ module.exports = {
|
|||
cachegoose.clearCache();
|
||||
return;
|
||||
},
|
||||
/**
|
||||
* @param {String} ID - Bot ID
|
||||
* @param {String} Guilds - Guilds Number
|
||||
* @param {String} Users - Users Number
|
||||
*/
|
||||
async botcache(ID, Guild, User) {
|
||||
if (!ID) throw new Error("Please Provide a ID!");
|
||||
if (!Guild) throw new Error("Please Provide a Guild Number!");
|
||||
if (!User) throw new Error("Please Provide a User Number!");
|
||||
const idk = await m.findOne({ Bot: ID });
|
||||
if (!idk) {
|
||||
const newdb = new m({ Bot: ID });
|
||||
if (Guild && User) {
|
||||
newdb.Guilds = Guild;
|
||||
newdb.Users = User;
|
||||
} else {
|
||||
newdb.Guilds = Guild;
|
||||
newdb.Users = User;
|
||||
}
|
||||
await newdb.save().catch(error => console.log(error));
|
||||
return;
|
||||
} else {
|
||||
if (Guild && User) {
|
||||
idk.Guilds = Guild;
|
||||
idk.Users = User;
|
||||
} else {
|
||||
idk.Guilds = Guild;
|
||||
idk.Users = User;
|
||||
}
|
||||
}
|
||||
await idk.save().catch(error => console.log(error));
|
||||
cachegoose.clearCache();
|
||||
return;
|
||||
},
|
||||
/**
|
||||
* @param {String} ID - Bot ID
|
||||
* @param {String} Commands - Commands
|
||||
*/
|
||||
async commands(ID, Cmds) {
|
||||
if (!ID) throw new Error("Please Provide a ID!");
|
||||
if (!Cmds) throw new Error("Please Provide Commands!");
|
||||
const idk = await m.findOne({ Bot: ID });
|
||||
if (!idk) {
|
||||
const newdb = new m({ Bot: ID });
|
||||
if (Cmds) {
|
||||
newdb.Commands = Cmds;
|
||||
} else {
|
||||
newdb.Commands = Cmds;
|
||||
}
|
||||
await newdb.save().catch(error => console.log(error));
|
||||
return;
|
||||
} else {
|
||||
if (Cmds) {
|
||||
idk.Commands = Cmds;
|
||||
} else {
|
||||
idk.Commands = Cmds;
|
||||
}
|
||||
}
|
||||
await idk.save().catch(error => console.log(error));
|
||||
cachegoose.clearCache();
|
||||
return;
|
||||
},
|
||||
/**
|
||||
* @param {String} ID - Guild ID
|
||||
* @param {String} Toggle - Level Toggle
|
||||
*/
|
||||
async setGLevel(ID, Toggle) {
|
||||
if (!ID) throw new Error("Please Provide a Guild ID");
|
||||
if (!Toggle) throw new Error("Please Provide a Toggle!");
|
||||
const guild = await g.findOne({ Guild: ID });
|
||||
if (!guild) {
|
||||
const newU = new g({ Guild: ID });
|
||||
if (Toggle == "true") {
|
||||
guild.Level = true;
|
||||
} else {
|
||||
guild.Level = false;
|
||||
}
|
||||
await newU.save().catch(error => console.log(error));
|
||||
return;
|
||||
} else {
|
||||
if (Toggle == "true") {
|
||||
guild.Level = true;
|
||||
} else {
|
||||
guild.Level = false;
|
||||
}
|
||||
}
|
||||
await guild.save().catch(error => console.log(error));
|
||||
cachegoose.clearCache();
|
||||
return;
|
||||
},
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue