├── Ep_10 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ ├── whois.js │ │ └── help.js │ ├── fun │ │ ├── meme.js │ │ ├── love.js │ │ └── rps.js │ └── moderation │ │ ├── say.js │ │ └── report.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_02 └── .env ├── Ep_03 ├── .env ├── commands │ ├── info │ │ └── ping.js │ └── moderation │ │ └── say.js ├── index.js └── handlers │ └── command.js ├── Ep_04 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ └── whois.js │ └── moderation │ │ └── say.js ├── functions.js ├── handlers │ └── command.js └── index.js ├── Ep_05 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ └── whois.js │ └── moderation │ │ ├── say.js │ │ └── report.js ├── functions.js ├── handlers │ └── command.js └── index.js ├── Ep_06 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ └── whois.js │ └── moderation │ │ ├── say.js │ │ └── report.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_07 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ └── whois.js │ └── moderation │ │ ├── say.js │ │ └── report.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_08 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ ├── whois.js │ │ └── help.js │ ├── moderation │ │ ├── say.js │ │ └── report.js │ └── fun │ │ └── rps.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_11 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ └── whois.js │ ├── fun │ │ ├── meme.js │ │ ├── love.js │ │ └── rps.js │ └── moderation │ │ ├── say.js │ │ ├── clear.js │ │ └── report.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_09 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ ├── whois.js │ │ └── help.js │ ├── moderation │ │ ├── say.js │ │ └── report.js │ └── fun │ │ ├── love.js │ │ └── rps.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_01 ├── .env └── index.js ├── README.md ├── Ep_13 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ └── whois.js │ ├── fun │ │ ├── meme.js │ │ ├── love.js │ │ └── rps.js │ └── moderation │ │ ├── say.js │ │ ├── clear.js │ │ └── report.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_14 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ ├── whois.js │ │ └── instagram.js │ ├── fun │ │ ├── meme.js │ │ ├── love.js │ │ └── rps.js │ └── moderation │ │ ├── say.js │ │ ├── clear.js │ │ └── report.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── Ep_12 ├── .env ├── commands │ ├── info │ │ ├── ping.js │ │ └── whois.js │ ├── fun │ │ ├── meme.js │ │ ├── love.js │ │ └── rps.js │ └── moderation │ │ ├── say.js │ │ ├── clear.js │ │ └── report.js ├── handlers │ └── command.js ├── index.js └── functions.js ├── _deprecated_ ├── episode_4_code │ ├── botconfig.json │ └── package.json ├── episode_6_code │ ├── botconfig.json │ ├── commands │ │ ├── botinfo.js │ │ ├── serverinfo.js │ │ ├── report.js │ │ ├── kick.js │ │ ├── ban.js │ │ └── tempmute.js │ └── index.js ├── episode-18-code │ ├── botconfig.json │ ├── commands │ │ ├── say.js │ │ ├── botinfo.js │ │ ├── clear.js │ │ ├── coins.js │ │ ├── serverinfo.js │ │ ├── prefix.js │ │ ├── level.js │ │ ├── pay.js │ │ ├── removerole.js │ │ ├── addrole.js │ │ ├── report.js │ │ ├── kick.js │ │ └── ban.js │ └── utils │ │ └── errors.js ├── ep25 │ ├── coins.js │ └── deluser.js ├── episode_13_code │ ├── say.js │ └── clear.js ├── episode_16_code │ └── commands │ │ ├── say.js │ │ ├── clear.js │ │ ├── botinfo.js │ │ ├── coins.js │ │ ├── serverinfo.js │ │ ├── prefix.js │ │ ├── level.js │ │ ├── pay.js │ │ ├── removerole.js │ │ ├── addrole.js │ │ ├── report.js │ │ ├── ban.js │ │ └── kick.js ├── episode_7_code │ ├── commands │ │ ├── botinfo.js │ │ ├── serverinfo.js │ │ ├── report.js │ │ ├── removerole.js │ │ ├── addrole.js │ │ ├── kick.js │ │ ├── ban.js │ │ └── tempmute.js │ └── index.js ├── episode_8_code │ ├── commands │ │ ├── botinfo.js │ │ ├── serverinfo.js │ │ ├── warnlevel.js │ │ ├── report.js │ │ ├── removerole.js │ │ ├── addrole.js │ │ ├── kick.js │ │ ├── ban.js │ │ └── tempmute.js │ └── index.js ├── episode_5_code │ └── commands │ │ └── report.js └── ep26 │ └── leaders.js └── .DS_Store /Ep_10/.env: -------------------------------------------------------------------------------- 1 | TOKEN=Token -------------------------------------------------------------------------------- /Ep_02/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_03/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_04/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_05/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_06/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_07/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_08/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_11/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE -------------------------------------------------------------------------------- /Ep_09/.env: -------------------------------------------------------------------------------- 1 | TOKEN=TOKEN_HERE 2 | -------------------------------------------------------------------------------- /Ep_01/.env: -------------------------------------------------------------------------------- 1 | TOKEN=your_token_here 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Discord.js-Bot-Development 2 | -------------------------------------------------------------------------------- /Ep_13/.env: -------------------------------------------------------------------------------- 1 | TOKEN=DISCORD_KEY 2 | FORTNITE=FT_KEY -------------------------------------------------------------------------------- /Ep_14/.env: -------------------------------------------------------------------------------- 1 | TOKEN=DISCORD_KEY 2 | FORTNITE=FT_KEY -------------------------------------------------------------------------------- /Ep_12/.env: -------------------------------------------------------------------------------- 1 | TOKEN=DISCORD_TOKEN 2 | FORTNITE=FT_KEY -------------------------------------------------------------------------------- /_deprecated_/episode_4_code/botconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "!" 3 | } 4 | -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/botconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "!" 3 | } 4 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-SourceCode/Discord.js-Bot-Development/HEAD/.DS_Store -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/botconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "!", 3 | "red": "#b70000", 4 | "orange": "#ff6a00", 5 | "green": "#00ff26", 6 | "purple": "#d604cf" 7 | } 8 | -------------------------------------------------------------------------------- /_deprecated_/ep25/coins.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const coinSchema = mongoose.Schema({ 4 | userID: String, 5 | serverID: String, 6 | coins: Number 7 | }); 8 | 9 | module.exports = mongoose.model("Coins", coinSchema) 10 | -------------------------------------------------------------------------------- /_deprecated_/episode_4_code/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tutorial", 3 | "version": "1.0.0", 4 | "description": "A tutorial bot for TSC", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "ned", 10 | "license": "ISC", 11 | "dependencies": { 12 | "discord.js": "^11.3.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /_deprecated_/episode_13_code/say.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | if(!message.member.hasPermission("ADMINISTRATOR")) return; 6 | const sayMessage = args.join(" "); 7 | message.delete().catch(); 8 | message.channel.send(sayMessage); 9 | 10 | } 11 | 12 | module.exports.help = { 13 | name: "say" 14 | } 15 | -------------------------------------------------------------------------------- /Ep_04/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_05/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_06/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_08/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_09/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_10/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_11/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestamp - message.createdTimestamp)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_12/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestamp - message.createdTimestamp)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_13/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestamp - message.createdTimestamp)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Ep_14/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | description: "Returns latency and API ping", 4 | run: async (client, message, args) => { 5 | const msg = await message.channel.send(`🏓 Pinging....`); 6 | 7 | msg.edit(`🏓 Pong! 8 | Latency is ${Math.floor(msg.createdTimestamp - message.createdTimestamp)}ms 9 | API Latency is ${Math.round(client.ping)}ms`); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/say.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | //!say Hi! 5 | //Hi 6 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("No"); 7 | let botmessage = args.join(" "); 8 | message.delete().catch(); 9 | message.channel.send(botmessage); 10 | } 11 | 12 | module.exports.help = { 13 | name: "say" 14 | } 15 | -------------------------------------------------------------------------------- /Ep_03/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | category: "info", 4 | description: "Returns latency and API ping", 5 | run: async (client, message, args) => { 6 | const msg = await message.channel.send(`🏓 Pinging....`); 7 | 8 | msg.edit(`🏓 Pong! 9 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 10 | API Latency is ${Math.round(client.ping)}ms`); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Ep_07/commands/info/ping.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "ping", 3 | category: "info", 4 | description: "Returns latency and API ping", 5 | run: async (client, message, args) => { 6 | const msg = await message.channel.send(`🏓 Pinging....`); 7 | 8 | msg.edit(`🏓 Pong! 9 | Latency is ${Math.floor(msg.createdTimestap - message.createdTimestap)}ms 10 | API Latency is ${Math.round(client.ping)}ms`); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/say.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const errors = require("../utils/errors.js"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | message.delete(); 7 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return errors.noPerms(message, "MANAGE_MESSAGES"); 8 | let botmessage = args.join(" "); 9 | message.channel.send(botmessage); 10 | } 11 | 12 | module.exports.help = { 13 | name: "say" 14 | } 15 | -------------------------------------------------------------------------------- /_deprecated_/episode_13_code/clear.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("No."); 6 | if(!args[0]) return message.channel.send("no"); 7 | message.channel.bulkDelete(args[0]).then(() => { 8 | message.channel.send(`Clear ${args[0]} messages.`).then(msg => msg.delete(2000)); 9 | }); 10 | 11 | } 12 | 13 | module.exports.help = { 14 | name: "clear" 15 | } 16 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/clear.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | //!clear 15 6 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("oof."); 7 | if(!args[0]) return message.channel.send("oof"); 8 | message.channel.bulkDelete(args[0]).then(() => { 9 | message.channel.send(`Cleared ${args[0]} messages.`).then(msg => msg.delete(5000)); 10 | }); 11 | } 12 | 13 | module.exports.help = { 14 | name: "clear" 15 | } 16 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bicon = bot.user.displayAvatarURL; 5 | let botembed = new Discord.RichEmbed() 6 | .setDescription("Bot Information") 7 | .setColor("#15f153") 8 | .setThumbnail(bicon) 9 | .addField("Bot Name", bot.user.username) 10 | .addField("Created On", bot.user.createdAt); 11 | 12 | message.channel.send(botembed); 13 | } 14 | 15 | module.exports.help = { 16 | name:"botinfo" 17 | } 18 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bicon = bot.user.displayAvatarURL; 5 | let botembed = new Discord.RichEmbed() 6 | .setDescription("Bot Information") 7 | .setColor("#15f153") 8 | .setThumbnail(bicon) 9 | .addField("Bot Name", bot.user.username) 10 | .addField("Created On", bot.user.createdAt); 11 | 12 | message.channel.send(botembed); 13 | } 14 | 15 | module.exports.help = { 16 | name:"botinfo" 17 | } 18 | -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/commands/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bicon = bot.user.displayAvatarURL; 5 | let botembed = new Discord.RichEmbed() 6 | .setDescription("Bot Information") 7 | .setColor("#15f153") 8 | .setThumbnail(bicon) 9 | .addField("Bot Name", bot.user.username) 10 | .addField("Created On", bot.user.createdAt); 11 | 12 | message.channel.send(botembed); 13 | } 14 | 15 | module.exports.help = { 16 | name:"botinfo" 17 | } 18 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bicon = bot.user.displayAvatarURL; 5 | let botembed = new Discord.RichEmbed() 6 | .setDescription("Bot Information") 7 | .setColor("#15f153") 8 | .setThumbnail(bicon) 9 | .addField("Bot Name", bot.user.username) 10 | .addField("Created On", bot.user.createdAt); 11 | 12 | message.channel.send(botembed); 13 | } 14 | 15 | module.exports.help = { 16 | name:"botinfo" 17 | } 18 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bicon = bot.user.displayAvatarURL; 5 | let botembed = new Discord.RichEmbed() 6 | .setDescription("Bot Information") 7 | .setColor("#15f153") 8 | .setThumbnail(bicon) 9 | .addField("Bot Name", bot.user.username) 10 | .addField("Created On", bot.user.createdAt); 11 | 12 | message.channel.send(botembed); 13 | } 14 | 15 | module.exports.help = { 16 | name:"botinfo" 17 | } 18 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/clear.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const errors = require("../utils/errors.js"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return errors.noPerms(message, "MANAGE_MESSAGES"); 7 | if(!args[0]) return message.channel.send("oof"); 8 | message.channel.bulkDelete(args[0]).then(() => { 9 | message.channel.send(`Cleared ${args[0]} messages.`).then(msg => msg.delete(5000)); 10 | }); 11 | } 12 | 13 | module.exports.help = { 14 | name: "clear" 15 | } 16 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/coins.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | let coins = require("../coins.json"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | //!coins 6 | if(!coins[message.author.id]){ 7 | coins[message.author.id] = { 8 | coins: 0 9 | }; 10 | } 11 | 12 | let uCoins = coins[message.author.id].coins; 13 | 14 | 15 | let coinEmbed = new Discord.RichEmbed() 16 | .setAuthor(message.author.username) 17 | .setColor("#00FF00") 18 | .addField("💸", uCoins); 19 | 20 | message.channel.send(coinEmbed).then(msg => {msg.delete(5000)}); 21 | 22 | } 23 | 24 | module.exports.help = { 25 | name: "coins" 26 | } 27 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/coins.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | let coins = require("../coins.json"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | //!coins 6 | if(!coins[message.author.id]){ 7 | coins[message.author.id] = { 8 | coins: 0 9 | }; 10 | } 11 | 12 | let uCoins = coins[message.author.id].coins; 13 | 14 | 15 | let coinEmbed = new Discord.RichEmbed() 16 | .setAuthor(message.author.username) 17 | .setColor("#00FF00") 18 | .addField("💸", uCoins); 19 | 20 | message.channel.send(coinEmbed).then(msg => {msg.delete(5000)}); 21 | 22 | } 23 | 24 | module.exports.help = { 25 | name: "coins" 26 | } 27 | -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/commands/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let sicon = message.guild.iconURL; 5 | let serverembed = new Discord.RichEmbed() 6 | .setDescription("Server Information") 7 | .setColor("#15f153") 8 | .setThumbnail(sicon) 9 | .addField("Server Name", message.guild.name) 10 | .addField("Created On", message.guild.createdAt) 11 | .addField("You Joined", message.member.joinedAt) 12 | .addField("Total Members", message.guild.memberCount); 13 | 14 | message.channel.send(serverembed); 15 | } 16 | 17 | module.exports.help = { 18 | name:"serverinfo" 19 | } 20 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let sicon = message.guild.iconURL; 5 | let serverembed = new Discord.RichEmbed() 6 | .setDescription("Server Information") 7 | .setColor("#15f153") 8 | .setThumbnail(sicon) 9 | .addField("Server Name", message.guild.name) 10 | .addField("Created On", message.guild.createdAt) 11 | .addField("You Joined", message.member.joinedAt) 12 | .addField("Total Members", message.guild.memberCount); 13 | 14 | message.channel.send(serverembed); 15 | } 16 | 17 | module.exports.help = { 18 | name:"serverinfo" 19 | } 20 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let sicon = message.guild.iconURL; 5 | let serverembed = new Discord.RichEmbed() 6 | .setDescription("Server Information") 7 | .setColor("#15f153") 8 | .setThumbnail(sicon) 9 | .addField("Server Name", message.guild.name) 10 | .addField("Created On", message.guild.createdAt) 11 | .addField("You Joined", message.member.joinedAt) 12 | .addField("Total Members", message.guild.memberCount); 13 | 14 | message.channel.send(serverembed); 15 | } 16 | 17 | module.exports.help = { 18 | name:"serverinfo" 19 | } 20 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let sicon = message.guild.iconURL; 5 | let serverembed = new Discord.RichEmbed() 6 | .setDescription("Server Information") 7 | .setColor("#15f153") 8 | .setThumbnail(sicon) 9 | .addField("Server Name", message.guild.name) 10 | .addField("Created On", message.guild.createdAt) 11 | .addField("You Joined", message.member.joinedAt) 12 | .addField("Total Members", message.guild.memberCount); 13 | 14 | message.channel.send(serverembed); 15 | } 16 | 17 | module.exports.help = { 18 | name:"serverinfo" 19 | } 20 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let sicon = message.guild.iconURL; 5 | let serverembed = new Discord.RichEmbed() 6 | .setDescription("Server Information") 7 | .setColor("#15f153") 8 | .setThumbnail(sicon) 9 | .addField("Server Name", message.guild.name) 10 | .addField("Created On", message.guild.createdAt) 11 | .addField("You Joined", message.member.joinedAt) 12 | .addField("Total Members", message.guild.memberCount); 13 | 14 | message.channel.send(serverembed); 15 | } 16 | 17 | module.exports.help = { 18 | name:"serverinfo" 19 | } 20 | -------------------------------------------------------------------------------- /Ep_11/commands/fun/meme.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const randomPuppy = require("random-puppy"); 3 | 4 | module.exports = { 5 | name: "meme", 6 | category: "fun", 7 | description: "Sends an epic meme", 8 | run: async (client, message, args) => { 9 | const subReddits = ["dankmeme", "meme", "me_irl"]; 10 | const random = subReddits[Math.floor(Math.random() * subReddits.length)]; 11 | 12 | const img = await randomPuppy(random); 13 | const embed = new RichEmbed() 14 | .setColor("RANDOM") 15 | .setImage(img) 16 | .setTitle(`From /r/${random}`) 17 | .setURL(`https://reddit.com/r/${random}`); 18 | 19 | message.channel.send(embed); 20 | } 21 | } -------------------------------------------------------------------------------- /Ep_12/commands/fun/meme.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const randomPuppy = require("random-puppy"); 3 | 4 | module.exports = { 5 | name: "meme", 6 | category: "fun", 7 | description: "Sends an epic meme", 8 | run: async (client, message, args) => { 9 | const subReddits = ["dankmeme", "meme", "me_irl"]; 10 | const random = subReddits[Math.floor(Math.random() * subReddits.length)]; 11 | 12 | const img = await randomPuppy(random); 13 | const embed = new RichEmbed() 14 | .setColor("RANDOM") 15 | .setImage(img) 16 | .setTitle(`From /r/${random}`) 17 | .setURL(`https://reddit.com/r/${random}`); 18 | 19 | message.channel.send(embed); 20 | } 21 | } -------------------------------------------------------------------------------- /Ep_13/commands/fun/meme.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const randomPuppy = require("random-puppy"); 3 | 4 | module.exports = { 5 | name: "meme", 6 | category: "fun", 7 | description: "Sends an epic meme", 8 | run: async (client, message, args) => { 9 | const subReddits = ["dankmeme", "meme", "me_irl"]; 10 | const random = subReddits[Math.floor(Math.random() * subReddits.length)]; 11 | 12 | const img = await randomPuppy(random); 13 | const embed = new RichEmbed() 14 | .setColor("RANDOM") 15 | .setImage(img) 16 | .setTitle(`From /r/${random}`) 17 | .setURL(`https://reddit.com/r/${random}`); 18 | 19 | message.channel.send(embed); 20 | } 21 | } -------------------------------------------------------------------------------- /Ep_14/commands/fun/meme.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const randomPuppy = require("random-puppy"); 3 | 4 | module.exports = { 5 | name: "meme", 6 | category: "fun", 7 | description: "Sends an epic meme", 8 | run: async (client, message, args) => { 9 | const subReddits = ["dankmeme", "meme", "me_irl"]; 10 | const random = subReddits[Math.floor(Math.random() * subReddits.length)]; 11 | 12 | const img = await randomPuppy(random); 13 | const embed = new RichEmbed() 14 | .setColor("RANDOM") 15 | .setImage(img) 16 | .setTitle(`From /r/${random}`) 17 | .setURL(`https://reddit.com/r/${random}`); 18 | 19 | message.channel.send(embed); 20 | } 21 | } -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/warnlevel.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const fs = require("fs"); 3 | const ms = require("ms"); 4 | let warns = JSON.parse(fs.readFileSync("./warnings.json", "utf8")); 5 | 6 | module.exports.run = async (bot, message, args) => { 7 | 8 | if(!warns[wUser.id]) warns[wUser.id] = { 9 | warns: 0 10 | }; 11 | 12 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("You can't do that."); 13 | let wUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]) 14 | if(!wUser) return message.reply("Couldn't find them yo"); 15 | let warnlevel = warns[wUser.id].warns; 16 | 17 | message.reply(`<@${wUser.id}> has ${warnlevel} warnings.`); 18 | 19 | } 20 | 21 | module.exports.help = { 22 | name: "warnlevel" 23 | } 24 | -------------------------------------------------------------------------------- /Ep_04/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | } 26 | } -------------------------------------------------------------------------------- /Ep_05/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | } 26 | } -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/prefix.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const fs = require("fs"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | if(!message.member.hasPermission("MANAGE_SERVER")) return message.reply("No no no."); 7 | if(!args[0] || args[0 == "help"]) return message.reply("Usage: !prefix "); 8 | 9 | let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8")); 10 | 11 | prefixes[message.guild.id] = { 12 | prefixes: args[0] 13 | }; 14 | 15 | fs.writeFile("./prefixes.json", JSON.stringify(prefixes), (err) => { 16 | if (err) console.log(err) 17 | }); 18 | 19 | let sEmbed = new Discord.RichEmbed() 20 | .setColor("#FF9900") 21 | .setTitle("Prefix Set!") 22 | .setDescription(`Set to ${args[0]}`); 23 | 24 | message.channel.send(sEmbed); 25 | 26 | } 27 | 28 | module.exports.help = { 29 | name: "prefix" 30 | } 31 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/prefix.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const fs = require("fs"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | if(!message.member.hasPermission("MANAGE_SERVER")) return message.reply("No no no."); 7 | if(!args[0] || args[0 == "help"]) return message.reply("Usage: !prefix "); 8 | 9 | let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8")); 10 | 11 | prefixes[message.guild.id] = { 12 | prefixes: args[0] 13 | }; 14 | 15 | fs.writeFile("./prefixes.json", JSON.stringify(prefixes), (err) => { 16 | if (err) console.log(err) 17 | }); 18 | 19 | let sEmbed = new Discord.RichEmbed() 20 | .setColor("#FF9900") 21 | .setTitle("Prefix Set!") 22 | .setDescription(`Set to ${args[0]}`); 23 | 24 | message.channel.send(sEmbed); 25 | 26 | } 27 | 28 | module.exports.help = { 29 | name: "prefix" 30 | } 31 | -------------------------------------------------------------------------------- /Ep_10/commands/fun/meme.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const randomPuppy = require("random-puppy"); 3 | 4 | module.exports = { 5 | name: "meme", 6 | category: "fun", 7 | description: "Sends an epic meme", 8 | run: async (client, message, args) => { 9 | // In this array, 10 | // you can put the subreddits you want to grab memes from 11 | const subReddits = ["dankmeme", "meme", "me_irl"]; 12 | // Grab a random property from the array 13 | const random = subReddits[Math.floor(Math.random() * subReddits.length)]; 14 | 15 | // Get a random image from the subreddit page 16 | const img = await randomPuppy(random); 17 | const embed = new RichEmbed() 18 | .setColor("RANDOM") 19 | .setImage(img) 20 | .setTitle(`From /r/${random}`) 21 | .setURL(`https://reddit.com/r/${random}`); 22 | 23 | message.channel.send(embed); 24 | } 25 | } -------------------------------------------------------------------------------- /_deprecated_/ep25/deluser.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const mongoose = require('mongoose'); 3 | mongoose.connect('mongodb://localhost/tutorial', { 4 | useNewUrlParser: true 5 | }); 6 | const Coins = require("../models/coins.js"); 7 | module.exports.run = async (bot, message, args) => { 8 | //this is where the actual code for the command goes 9 | await message.delete(); 10 | if (message.author.id !== '178657593030475776') return; 11 | //?deluser @tag 12 | let member = message.mentions.members.first(); 13 | if (!member) return message.reply("oof"); 14 | 15 | Coins.findOneAndDelete({ 16 | userID: member.id, 17 | serverID: message.guild.id 18 | }, (err, res) => { 19 | if(err) console.log(err) 20 | console.log("User with ID " + member.id + " has been deleted from the coin database."); 21 | }); 22 | 23 | } 24 | //name this whatever the command name is. 25 | module.exports.help = { 26 | name: "deluser" 27 | } 28 | -------------------------------------------------------------------------------- /Ep_01/index.js: -------------------------------------------------------------------------------- 1 | const { Client } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | 4 | // Declares our bot, 5 | // the disableEveryone prevents the client to ping @everyone 6 | const client = new Client({ 7 | disableEveryone: true 8 | }); 9 | 10 | config({ 11 | path: __dirname + "/.env" 12 | }) 13 | 14 | // When the bot's online, what's in these brackets will be executed 15 | client.on("ready", () => { 16 | console.log(`Hi, ${client.user.username} is now online!`); 17 | 18 | // Set the user presence 19 | client.user.setPresence({ 20 | status: "online", 21 | game: { 22 | name: "me getting developed", 23 | type: "WATCHING" 24 | } 25 | }); 26 | }) 27 | 28 | // When a message comes in, what's in these brackets will be executed 29 | client.on("message", async message => { 30 | console.log(`${message.author.username} said: ${message.content}`); 31 | }); 32 | 33 | // Login the bot 34 | client.login(process.env.TOKEN); 35 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/level.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const botconfig = require("../botconfig"); 3 | let purple = botconfig.purple; 4 | let xp = require("../xp.json"); 5 | 6 | module.exports.run = async (bot, message, args) => { 7 | 8 | if(!xp[message.author.id]){ 9 | xp[message.author.id] = { 10 | xp: 0, 11 | level: 1 12 | }; 13 | } 14 | let curxp = xp[message.author.id].xp; 15 | let curlvl = xp[message.author.id].level; 16 | let nxtLvlXp = curlvl * 300; 17 | let difference = nxtLvlXp - curxp; 18 | 19 | let lvlEmbed = new Discord.RichEmbed() 20 | .setAuthor(message.author.username) 21 | .setColor(purple) 22 | .addField("Level", curlvl, true) 23 | .addField("XP", curxp, true) 24 | .setFooter(`${difference} XP til level up`, message.author.displayAvatarURL); 25 | 26 | message.channel.send(lvlEmbed).then(msg => {msg.delete(5000)}); 27 | 28 | } 29 | 30 | module.exports.help = { 31 | name: "level" 32 | } 33 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/level.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const botconfig = require("../botconfig"); 3 | let purple = botconfig.purple; 4 | let xp = require("../xp.json"); 5 | 6 | module.exports.run = async (bot, message, args) => { 7 | 8 | if(!xp[message.author.id]){ 9 | xp[message.author.id] = { 10 | xp: 0, 11 | level: 1 12 | }; 13 | } 14 | let curxp = xp[message.author.id].xp; 15 | let curlvl = xp[message.author.id].level; 16 | let nxtLvlXp = curlvl * 300; 17 | let difference = nxtLvlXp - curxp; 18 | 19 | let lvlEmbed = new Discord.RichEmbed() 20 | .setAuthor(message.author.username) 21 | .setColor(purple) 22 | .addField("Level", curlvl, true) 23 | .addField("XP", curxp, true) 24 | .setFooter(`${difference} XP til level up`, message.author.displayAvatarURL); 25 | 26 | message.channel.send(lvlEmbed).then(msg => {msg.delete(5000)}); 27 | 28 | } 29 | 30 | module.exports.help = { 31 | name: "level" 32 | } 33 | -------------------------------------------------------------------------------- /Ep_04/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } -------------------------------------------------------------------------------- /Ep_05/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_06/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_07/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_08/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_09/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_10/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_11/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_12/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_13/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_14/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | let table = new ascii("Commands"); 6 | table.setHeading("Command", "Load status"); 7 | 8 | module.exports = (client) => { 9 | readdirSync("./commands/").forEach(dir => { 10 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 11 | 12 | for (let file of commands) { 13 | let pull = require(`../commands/${dir}/${file}`); 14 | 15 | if (pull.name) { 16 | client.commands.set(pull.name, pull); 17 | table.addRow(file, '✅'); 18 | } else { 19 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 20 | continue; 21 | } 22 | 23 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 24 | } 25 | }); 26 | 27 | console.log(table.toString()); 28 | } 29 | -------------------------------------------------------------------------------- /Ep_08/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Ep_09/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Ep_10/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Ep_11/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Ep_12/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Ep_13/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Ep_14/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /Ep_04/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Ep_05/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Ep_06/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Ep_07/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | description: "Says your input via the bot", 7 | usage: "", 8 | run: (client, message, args) => { 9 | message.delete(); 10 | 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 12 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 13 | 14 | if (args.length < 0) 15 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 16 | 17 | const roleColor = message.guild.me.highestRole.hexColor; 18 | 19 | if (args[0].toLowerCase() === "embed") { 20 | const embed = new RichEmbed() 21 | .setDescription(args.slice(1).join(" ")) 22 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColor); 23 | 24 | message.channel.send(embed); 25 | } else { 26 | message.channel.send(args.join(" ")); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Ep_03/commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "say", 5 | aliases: ["bc", "broadcast"], 6 | category: "moderation", 7 | description: "Says your input via the bot", 8 | usage: "", 9 | run: (client, message, args) => { 10 | message.delete(); 11 | 12 | if (!message.member.hasPermission("MANAGE_MESSAGES")) 13 | return message.reply("You don't have the required permissions to use this command.").then(m => m.delete(5000)); 14 | 15 | if (args.length < 0) 16 | return message.reply("Nothing to say?").then(m => m.delete(5000)); 17 | 18 | const roleColor = message.guild.me.highestRole.hexColor; 19 | 20 | if (args[0].toLowerCase() === "embed") { 21 | const embed = new RichEmbed() 22 | .setDescription(args.slice(1).join(" ")) 23 | .setColor(roleColor === "#000000" ? "#ffffff" : roleColorv); 24 | 25 | message.channel.send(embed); 26 | } else { 27 | message.channel.send(args.join(" ")); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /_deprecated_/episode_5_code/commands/report.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!rUser) return message.channel.send("Couldn't find user."); 6 | let rreason = args.join(" ").slice(22); 7 | 8 | let reportEmbed = new Discord.RichEmbed() 9 | .setDescription("Reports") 10 | .setColor("#15f153") 11 | .addField("Reported User", `${rUser} with ID: ${rUser.id}`) 12 | .addField("Reported By", `${message.author} with ID: ${message.author.id}`) 13 | .addField("Channel", message.channel) 14 | .addField("Time", message.createdAt) 15 | .addField("Reason", rreason); 16 | 17 | let reportschannel = message.guild.channels.find(`name`, "reports"); 18 | if(!reportschannel) return message.channel.send("Couldn't find reports channel."); 19 | 20 | 21 | message.delete().catch(O_o=>{}); 22 | reportschannel.send(reportEmbed); 23 | 24 | } 25 | 26 | module.exports.help = { 27 | name: "report" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/commands/report.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!rUser) return message.channel.send("Couldn't find user."); 6 | let rreason = args.join(" ").slice(22); 7 | 8 | let reportEmbed = new Discord.RichEmbed() 9 | .setDescription("Reports") 10 | .setColor("#15f153") 11 | .addField("Reported User", `${rUser} with ID: ${rUser.id}`) 12 | .addField("Reported By", `${message.author} with ID: ${message.author.id}`) 13 | .addField("Channel", message.channel) 14 | .addField("Time", message.createdAt) 15 | .addField("Reason", rreason); 16 | 17 | let reportschannel = message.guild.channels.find(`name`, "reports"); 18 | if(!reportschannel) return message.channel.send("Couldn't find reports channel."); 19 | 20 | 21 | message.delete().catch(O_o=>{}); 22 | reportschannel.send(reportEmbed); 23 | 24 | } 25 | 26 | module.exports.help = { 27 | name: "report" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/report.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!rUser) return message.channel.send("Couldn't find user."); 6 | let rreason = args.join(" ").slice(22); 7 | 8 | let reportEmbed = new Discord.RichEmbed() 9 | .setDescription("Reports") 10 | .setColor("#15f153") 11 | .addField("Reported User", `${rUser} with ID: ${rUser.id}`) 12 | .addField("Reported By", `${message.author} with ID: ${message.author.id}`) 13 | .addField("Channel", message.channel) 14 | .addField("Time", message.createdAt) 15 | .addField("Reason", rreason); 16 | 17 | let reportschannel = message.guild.channels.find(`name`, "reports"); 18 | if(!reportschannel) return message.channel.send("Couldn't find reports channel."); 19 | 20 | 21 | message.delete().catch(O_o=>{}); 22 | reportschannel.send(reportEmbed); 23 | 24 | } 25 | 26 | module.exports.help = { 27 | name: "report" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/report.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!rUser) return message.channel.send("Couldn't find user."); 6 | let rreason = args.join(" ").slice(22); 7 | 8 | let reportEmbed = new Discord.RichEmbed() 9 | .setDescription("Reports") 10 | .setColor("#15f153") 11 | .addField("Reported User", `${rUser} with ID: ${rUser.id}`) 12 | .addField("Reported By", `${message.author} with ID: ${message.author.id}`) 13 | .addField("Channel", message.channel) 14 | .addField("Time", message.createdAt) 15 | .addField("Reason", rreason); 16 | 17 | let reportschannel = message.guild.channels.find(`name`, "reports"); 18 | if(!reportschannel) return message.channel.send("Couldn't find reports channel."); 19 | 20 | 21 | message.delete().catch(O_o=>{}); 22 | reportschannel.send(reportEmbed); 23 | 24 | } 25 | 26 | module.exports.help = { 27 | name: "report" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/removerole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that."); 5 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 6 | if(!rMember) return message.reply("Couldn't find that user, yo."); 7 | let role = args.join(" ").slice(22); 8 | if(!role) return message.reply("Specify a role!"); 9 | let gRole = message.guild.roles.find(`name`, role); 10 | if(!gRole) return message.reply("Couldn't find that role."); 11 | 12 | if(!rMember.roles.has(gRole.id)) return message.reply("They don't have that role."); 13 | await(rMember.removeRole(gRole.id)); 14 | 15 | try{ 16 | await rMember.send(`RIP, you lost the ${gRole.name} role.`) 17 | }catch(e){ 18 | message.channel.send(`RIP to <@${rMember.id}>, We removed ${gRole.name} from them. We tried to DM them, but their DMs are locked.`) 19 | } 20 | } 21 | 22 | module.exports.help = { 23 | name: "removerole" 24 | } 25 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/removerole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that."); 5 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 6 | if(!rMember) return message.reply("Couldn't find that user, yo."); 7 | let role = args.join(" ").slice(22); 8 | if(!role) return message.reply("Specify a role!"); 9 | let gRole = message.guild.roles.find(`name`, role); 10 | if(!gRole) return message.reply("Couldn't find that role."); 11 | 12 | if(!rMember.roles.has(gRole.id)) return message.reply("They don't have that role."); 13 | await(rMember.removeRole(gRole.id)); 14 | 15 | try{ 16 | await rMember.send(`RIP, you lost the ${gRole.name} role.`) 17 | }catch(e){ 18 | message.channel.send(`RIP to <@${rMember.id}>, We removed ${gRole.name} from them. We tried to DM them, but their DMs are locked.`) 19 | } 20 | } 21 | 22 | module.exports.help = { 23 | name: "removerole" 24 | } 25 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/addrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | //!addrole @andrew Dog Person 6 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that."); 7 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 8 | if(!rMember) return message.reply("Couldn't find that user, yo."); 9 | let role = args.join(" ").slice(22); 10 | if(!role) return message.reply("Specify a role!"); 11 | let gRole = message.guild.roles.find(`name`, role); 12 | if(!gRole) return message.reply("Couldn't find that role."); 13 | 14 | if(rMember.roles.has(gRole.id)) return message.reply("They already have that role."); 15 | await(rMember.addRole(gRole.id)); 16 | 17 | try{ 18 | await rMember.send(`Congrats, you have been given the role ${gRole.name}`) 19 | }catch(e){ 20 | message.channel.send(`Congrats to <@${rMember.id}>, they have been given the role ${gRole.name}. We tried to DM them, but their DMs are locked.`) 21 | } 22 | } 23 | 24 | module.exports.help = { 25 | name: "addrole" 26 | } 27 | -------------------------------------------------------------------------------- /Ep_10/commands/fun/love.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { getMember } = require("../../functions.js"); 3 | 4 | module.exports = { 5 | name: "love", 6 | aliases: ["affinity"], 7 | category: "fun", 8 | description: "Calculates the love affinity you have for another person.", 9 | usage: "[mention | id | username]", 10 | run: async (client, message, args) => { 11 | // Get a member from mention, id, or username 12 | let person = getMember(message, args[0]); 13 | 14 | if (!person || message.author.id === person.id) { 15 | person = message.guild.members 16 | .filter(m => m.id !== message.author.id) 17 | .random(); 18 | } 19 | 20 | const love = Math.random() * 100; 21 | const loveIndex = Math.floor(love / 10); 22 | const loveLevel = "💖".repeat(loveIndex) + "💔".repeat(10 - loveIndex); 23 | 24 | const embed = new RichEmbed() 25 | .setColor("#ffb6c1") 26 | .addField(`☁ **${person.displayName}** loves **${message.member.displayName}** this much:`, 27 | `💟 ${Math.floor(love)}%\n\n${loveLevel}`); 28 | 29 | message.channel.send(embed); 30 | } 31 | } -------------------------------------------------------------------------------- /Ep_11/commands/fun/love.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { getMember } = require("../../functions.js"); 3 | 4 | module.exports = { 5 | name: "love", 6 | aliases: ["affinity"], 7 | category: "fun", 8 | description: "Calculates the love affinity you have for another person.", 9 | usage: "[mention | id | username]", 10 | run: async (client, message, args) => { 11 | // Get a member from mention, id, or username 12 | let person = getMember(message, args[0]); 13 | 14 | if (!person || message.author.id === person.id) { 15 | person = message.guild.members 16 | .filter(m => m.id !== message.author.id) 17 | .random(); 18 | } 19 | 20 | const love = Math.random() * 100; 21 | const loveIndex = Math.floor(love / 10); 22 | const loveLevel = "💖".repeat(loveIndex) + "💔".repeat(10 - loveIndex); 23 | 24 | const embed = new RichEmbed() 25 | .setColor("#ffb6c1") 26 | .addField(`☁ **${person.displayName}** loves **${message.member.displayName}** this much:`, 27 | `💟 ${Math.floor(love)}%\n\n${loveLevel}`); 28 | 29 | message.channel.send(embed); 30 | } 31 | } -------------------------------------------------------------------------------- /Ep_12/commands/fun/love.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { getMember } = require("../../functions.js"); 3 | 4 | module.exports = { 5 | name: "love", 6 | aliases: ["affinity"], 7 | category: "fun", 8 | description: "Calculates the love affinity you have for another person.", 9 | usage: "[mention | id | username]", 10 | run: async (client, message, args) => { 11 | // Get a member from mention, id, or username 12 | let person = getMember(message, args[0]); 13 | 14 | if (!person || message.author.id === person.id) { 15 | person = message.guild.members 16 | .filter(m => m.id !== message.author.id) 17 | .random(); 18 | } 19 | 20 | const love = Math.random() * 100; 21 | const loveIndex = Math.floor(love / 10); 22 | const loveLevel = "💖".repeat(loveIndex) + "💔".repeat(10 - loveIndex); 23 | 24 | const embed = new RichEmbed() 25 | .setColor("#ffb6c1") 26 | .addField(`☁ **${person.displayName}** loves **${message.member.displayName}** this much:`, 27 | `💟 ${Math.floor(love)}%\n\n${loveLevel}`); 28 | 29 | message.channel.send(embed); 30 | } 31 | } -------------------------------------------------------------------------------- /Ep_13/commands/fun/love.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { getMember } = require("../../functions.js"); 3 | 4 | module.exports = { 5 | name: "love", 6 | aliases: ["affinity"], 7 | category: "fun", 8 | description: "Calculates the love affinity you have for another person.", 9 | usage: "[mention | id | username]", 10 | run: async (client, message, args) => { 11 | // Get a member from mention, id, or username 12 | let person = getMember(message, args[0]); 13 | 14 | if (!person || message.author.id === person.id) { 15 | person = message.guild.members 16 | .filter(m => m.id !== message.author.id) 17 | .random(); 18 | } 19 | 20 | const love = Math.random() * 100; 21 | const loveIndex = Math.floor(love / 10); 22 | const loveLevel = "💖".repeat(loveIndex) + "💔".repeat(10 - loveIndex); 23 | 24 | const embed = new RichEmbed() 25 | .setColor("#ffb6c1") 26 | .addField(`☁ **${person.displayName}** loves **${message.member.displayName}** this much:`, 27 | `💟 ${Math.floor(love)}%\n\n${loveLevel}`); 28 | 29 | message.channel.send(embed); 30 | } 31 | } -------------------------------------------------------------------------------- /Ep_14/commands/fun/love.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { getMember } = require("../../functions.js"); 3 | 4 | module.exports = { 5 | name: "love", 6 | aliases: ["affinity"], 7 | category: "fun", 8 | description: "Calculates the love affinity you have for another person.", 9 | usage: "[mention | id | username]", 10 | run: async (client, message, args) => { 11 | // Get a member from mention, id, or username 12 | let person = getMember(message, args[0]); 13 | 14 | if (!person || message.author.id === person.id) { 15 | person = message.guild.members 16 | .filter(m => m.id !== message.author.id) 17 | .random(); 18 | } 19 | 20 | const love = Math.random() * 100; 21 | const loveIndex = Math.floor(love / 10); 22 | const loveLevel = "💖".repeat(loveIndex) + "💔".repeat(10 - loveIndex); 23 | 24 | const embed = new RichEmbed() 25 | .setColor("#ffb6c1") 26 | .addField(`☁ **${person.displayName}** loves **${message.member.displayName}** this much:`, 27 | `💟 ${Math.floor(love)}%\n\n${loveLevel}`); 28 | 29 | message.channel.send(embed); 30 | } 31 | } -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/addrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | //!addrole @andrew Dog Person 6 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that."); 7 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 8 | if(!rMember) return message.reply("Couldn't find that user, yo."); 9 | let role = args.join(" ").slice(22); 10 | if(!role) return message.reply("Specify a role!"); 11 | let gRole = message.guild.roles.find(`name`, role); 12 | if(!gRole) return message.reply("Couldn't find that role."); 13 | 14 | if(rMember.roles.has(gRole.id)) return message.reply("They already have that role."); 15 | await(rMember.addRole(gRole.id)); 16 | 17 | try{ 18 | await rMember.send(`Congrats, you have been given the role ${gRole.name}`) 19 | }catch(e){ 20 | console.log(e.stack); 21 | message.channel.send(`Congrats to <@${rMember.id}>, they have been given the role ${gRole.name}. We tried to DM them, but their DMs are locked.`) 22 | } 23 | } 24 | 25 | module.exports.help = { 26 | name: "addrole" 27 | } 28 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/pay.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const fs = require("fs"); 3 | let coins = require("../coins.json"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | //!pay @isatisfied 59345 7 | 8 | if(!coins[message.author.id]){ 9 | return message.reply("You don't have any coins!") 10 | } 11 | 12 | let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 13 | 14 | if(!coins[pUser.id]){ 15 | coins[pUser.id] = { 16 | coins: 0 17 | }; 18 | } 19 | 20 | let pCoins = coins[pUser.id].coins; 21 | let sCoins = coins[message.author.id].coins; 22 | 23 | if(sCoins < args[0]) return message.reply("Not enough coins there!"); 24 | 25 | coins[message.author.id] = { 26 | coins: sCoins - parseInt(args[1]) 27 | }; 28 | 29 | coins[pUser.id] = { 30 | coins: pCoins + parseInt(args[1]) 31 | }; 32 | 33 | message.channel.send(`${message.author} has given ${pUser} ${args[1]} coins.`); 34 | 35 | fs.writeFile("./coins.json", JSON.stringify(coins), (err) => { 36 | if(err) cosole.log(err) 37 | }); 38 | 39 | 40 | } 41 | 42 | module.exports.help = { 43 | name: "pay" 44 | } 45 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/pay.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const fs = require("fs"); 3 | let coins = require("../coins.json"); 4 | 5 | module.exports.run = async (bot, message, args) => { 6 | //!pay @isatisfied 59345 7 | 8 | if(!coins[message.author.id]){ 9 | return message.reply("You don't have any coins!") 10 | } 11 | 12 | let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 13 | 14 | if(!coins[pUser.id]){ 15 | coins[pUser.id] = { 16 | coins: 0 17 | }; 18 | } 19 | 20 | let pCoins = coins[pUser.id].coins; 21 | let sCoins = coins[message.author.id].coins; 22 | 23 | if(sCoins < args[0]) return message.reply("Not enough coins there!"); 24 | 25 | coins[message.author.id] = { 26 | coins: sCoins - parseInt(args[1]) 27 | }; 28 | 29 | coins[pUser.id] = { 30 | coins: pCoins + parseInt(args[1]) 31 | }; 32 | 33 | message.channel.send(`${message.author} has given ${pUser} ${args[1]} coins.`); 34 | 35 | fs.writeFile("./coins.json", JSON.stringify(coins), (err) => { 36 | if(err) cosole.log(err) 37 | }); 38 | 39 | 40 | } 41 | 42 | module.exports.help = { 43 | name: "pay" 44 | } 45 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/removerole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that."); 6 | if(args[0] == "help"){ 7 | message.reply("Usage: !removerole "); 8 | return; 9 | } 10 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 11 | if(!rMember) return message.reply("Couldn't find that user, yo."); 12 | let role = args.join(" ").slice(22); 13 | if(!role) return message.reply("Specify a role!"); 14 | let gRole = message.guild.roles.find(`name`, role); 15 | if(!gRole) return message.reply("Couldn't find that role."); 16 | 17 | if(!rMember.roles.has(gRole.id)) return message.reply("They don't have that role."); 18 | await(rMember.removeRole(gRole.id)); 19 | 20 | try{ 21 | await rMember.send(`RIP, you lost the ${gRole.name} role.`) 22 | }catch(e){ 23 | message.channel.send(`RIP to <@${rMember.id}>, We removed ${gRole.name} from them. We tried to DM them, but their DMs are locked.`) 24 | } 25 | } 26 | 27 | module.exports.help = { 28 | name: "removerole" 29 | } 30 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/removerole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const errors = require("../utils/errors.js"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | if (!message.member.hasPermission("MANAGE_ROLES")) return errors.noPerms(message, "MANAGE_ROLES"); 7 | if(args[0] == "help"){ 8 | message.reply("Usage: !removerole "); 9 | return; 10 | } 11 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 12 | if(!rMember) return message.reply("Couldn't find that user, yo."); 13 | let role = args.join(" ").slice(22); 14 | if(!role) return message.reply("Specify a role!"); 15 | let gRole = message.guild.roles.find(`name`, role); 16 | if(!gRole) return message.reply("Couldn't find that role."); 17 | 18 | if(!rMember.roles.has(gRole.id)) return message.reply("They don't have that role."); 19 | await(rMember.removeRole(gRole.id)); 20 | 21 | try{ 22 | await rMember.send(`RIP, you lost the ${gRole.name} role.`) 23 | }catch(e){ 24 | message.channel.send(`RIP to <@${rMember.id}>, We removed ${gRole.name} from them. We tried to DM them, but their DMs are locked.`) 25 | } 26 | } 27 | 28 | module.exports.help = { 29 | name: "removerole" 30 | } 31 | -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/commands/kick.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!kUser) return message.channel.send("Can't find user!"); 6 | let kReason = args.join(" ").slice(22); 7 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("No can do pal!"); 8 | if(kUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 9 | 10 | let kickEmbed = new Discord.RichEmbed() 11 | .setDescription("~Kick~") 12 | .setColor("#e56b00") 13 | .addField("Kicked User", `${kUser} with ID ${kUser.id}`) 14 | .addField("Kicked By", `<@${message.author.id}> with ID ${message.author.id}`) 15 | .addField("Kicked In", message.channel) 16 | .addField("Tiime", message.createdAt) 17 | .addField("Reason", kReason); 18 | 19 | let kickChannel = message.guild.channels.find(`name`, "incidents"); 20 | if(!kickChannel) return message.channel.send("Can't find incidents channel."); 21 | 22 | message.guild.member(kUser).kick(kReason); 23 | kickChannel.send(kickEmbed); 24 | } 25 | 26 | module.exports.help = { 27 | name:"kick" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/kick.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!kUser) return message.channel.send("Can't find user!"); 6 | let kReason = args.join(" ").slice(22); 7 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("No can do pal!"); 8 | if(kUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 9 | 10 | let kickEmbed = new Discord.RichEmbed() 11 | .setDescription("~Kick~") 12 | .setColor("#e56b00") 13 | .addField("Kicked User", `${kUser} with ID ${kUser.id}`) 14 | .addField("Kicked By", `<@${message.author.id}> with ID ${message.author.id}`) 15 | .addField("Kicked In", message.channel) 16 | .addField("Tiime", message.createdAt) 17 | .addField("Reason", kReason); 18 | 19 | let kickChannel = message.guild.channels.find(`name`, "incidents"); 20 | if(!kickChannel) return message.channel.send("Can't find incidents channel."); 21 | 22 | message.guild.member(kUser).kick(kReason); 23 | kickChannel.send(kickEmbed); 24 | } 25 | 26 | module.exports.help = { 27 | name:"kick" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/kick.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!kUser) return message.channel.send("Can't find user!"); 6 | let kReason = args.join(" ").slice(22); 7 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("No can do pal!"); 8 | if(kUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 9 | 10 | let kickEmbed = new Discord.RichEmbed() 11 | .setDescription("~Kick~") 12 | .setColor("#e56b00") 13 | .addField("Kicked User", `${kUser} with ID ${kUser.id}`) 14 | .addField("Kicked By", `<@${message.author.id}> with ID ${message.author.id}`) 15 | .addField("Kicked In", message.channel) 16 | .addField("Tiime", message.createdAt) 17 | .addField("Reason", kReason); 18 | 19 | let kickChannel = message.guild.channels.find(`name`, "incidents"); 20 | if(!kickChannel) return message.channel.send("Can't find incidents channel."); 21 | 22 | message.guild.member(kUser).kick(kReason); 23 | kickChannel.send(kickEmbed); 24 | } 25 | 26 | module.exports.help = { 27 | name:"kick" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/commands/ban.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!bUser) return message.channel.send("Can't find user!"); 6 | let bReason = args.join(" ").slice(22); 7 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.channel.send("No can do pal!"); 8 | if(bUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 9 | 10 | let banEmbed = new Discord.RichEmbed() 11 | .setDescription("~Ban~") 12 | .setColor("#bc0000") 13 | .addField("Banned User", `${bUser} with ID ${bUser.id}`) 14 | .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`) 15 | .addField("Banned In", message.channel) 16 | .addField("Time", message.createdAt) 17 | .addField("Reason", bReason); 18 | 19 | let incidentchannel = message.guild.channels.find(`name`, "incidents"); 20 | if(!incidentchannel) return message.channel.send("Can't find incidents channel."); 21 | 22 | message.guild.member(bUser).ban(bReason); 23 | incidentchannel.send(banEmbed); 24 | } 25 | 26 | module.exports.help = { 27 | name:"ban" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/ban.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!bUser) return message.channel.send("Can't find user!"); 6 | let bReason = args.join(" ").slice(22); 7 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.channel.send("No can do pal!"); 8 | if(bUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 9 | 10 | let banEmbed = new Discord.RichEmbed() 11 | .setDescription("~Ban~") 12 | .setColor("#bc0000") 13 | .addField("Banned User", `${bUser} with ID ${bUser.id}`) 14 | .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`) 15 | .addField("Banned In", message.channel) 16 | .addField("Time", message.createdAt) 17 | .addField("Reason", bReason); 18 | 19 | let incidentchannel = message.guild.channels.find(`name`, "incidents"); 20 | if(!incidentchannel) return message.channel.send("Can't find incidents channel."); 21 | 22 | message.guild.member(bUser).ban(bReason); 23 | incidentchannel.send(banEmbed); 24 | } 25 | 26 | module.exports.help = { 27 | name:"ban" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/ban.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 5 | if(!bUser) return message.channel.send("Can't find user!"); 6 | let bReason = args.join(" ").slice(22); 7 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.channel.send("No can do pal!"); 8 | if(bUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 9 | 10 | let banEmbed = new Discord.RichEmbed() 11 | .setDescription("~Ban~") 12 | .setColor("#bc0000") 13 | .addField("Banned User", `${bUser} with ID ${bUser.id}`) 14 | .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`) 15 | .addField("Banned In", message.channel) 16 | .addField("Time", message.createdAt) 17 | .addField("Reason", bReason); 18 | 19 | let incidentchannel = message.guild.channels.find(`name`, "incidents"); 20 | if(!incidentchannel) return message.channel.send("Can't find incidents channel."); 21 | 22 | message.guild.member(bUser).ban(bReason); 23 | incidentchannel.send(banEmbed); 24 | } 25 | 26 | module.exports.help = { 27 | name:"ban" 28 | } 29 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/addrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | //!addrole @andrew Dog Person 6 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.reply("Sorry pal, you can't do that."); 7 | if(args[0] == "help"){ 8 | message.reply("Usage: !addrole "); 9 | return; 10 | } 11 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 12 | if(!rMember) return message.reply("Couldn't find that user, yo."); 13 | let role = args.join(" ").slice(22); 14 | if(!role) return message.reply("Specify a role!"); 15 | let gRole = message.guild.roles.find(`name`, role); 16 | if(!gRole) return message.reply("Couldn't find that role."); 17 | 18 | if(rMember.roles.has(gRole.id)) return message.reply("They already have that role."); 19 | await(rMember.addRole(gRole.id)); 20 | 21 | try{ 22 | await rMember.send(`Congrats, you have been given the role ${gRole.name}`) 23 | }catch(e){ 24 | console.log(e.stack); 25 | message.channel.send(`Congrats to <@${rMember.id}>, they have been given the role ${gRole.name}. We tried to DM them, but their DMs are locked.`) 26 | } 27 | } 28 | 29 | module.exports.help = { 30 | name: "addrole" 31 | } 32 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/addrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const errors = require("../utils/errors.js"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | //!addrole @andrew Dog Person 7 | if (!message.member.hasPermission("MANAGE_ROLES")) return errors.noPerms(message, "MANAGE_ROLES"); 8 | if (args[0] == "help") { 9 | message.reply("Usage: !addrole "); 10 | return; 11 | } 12 | let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); 13 | if (!rMember) return errors.cantfindUser(message.channel); 14 | let role = args.join(" ").slice(22); 15 | if (!role) return message.reply("Specify a role!"); 16 | let gRole = message.guild.roles.find(`name`, role); 17 | if (!gRole) return message.reply("Couldn't find that role."); 18 | 19 | if (rMember.roles.has(gRole.id)) return message.reply("They already have that role."); 20 | await (rMember.addRole(gRole.id)); 21 | 22 | try { 23 | await rMember.send(`Congrats, you have been given the role ${gRole.name}`) 24 | } catch (e) { 25 | console.log(e.stack); 26 | message.channel.send(`Congrats to <@${rMember.id}>, they have been given the role ${gRole.name}. We tried to DM them, but their DMs are locked.`) 27 | } 28 | } 29 | 30 | module.exports.help = { 31 | name: "addrole" 32 | } 33 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/report.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const botconfig = require("../botconfig.json"); 3 | const red = botconfig.red; 4 | const green = botconfig.green; 5 | const orange = botconfig.orange; 6 | 7 | module.exports.run = async (bot, message, args) => { 8 | 9 | if(args[0] == "help"){ 10 | message.reply("Usage: !report "); 11 | return; 12 | } 13 | let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 14 | if(!rUser) return message.channel.send("Couldn't find user."); 15 | let rreason = args.join(" ").slice(22); 16 | 17 | let reportEmbed = new Discord.RichEmbed() 18 | .setDescription("Reports") 19 | .setColor(orange) 20 | .addField("Reported User", `${rUser} with ID: ${rUser.id}`) 21 | .addField("Reported By", `${message.author} with ID: ${message.author.id}`) 22 | .addField("Channel", message.channel) 23 | .addField("Time", message.createdAt) 24 | .addField("Reason", rreason); 25 | 26 | let reportschannel = message.guild.channels.find(`name`, "reports"); 27 | if(!reportschannel) return message.channel.send("Couldn't find reports channel."); 28 | 29 | 30 | message.delete().catch(O_o=>{}); 31 | reportschannel.send(reportEmbed); 32 | 33 | } 34 | 35 | module.exports.help = { 36 | name: "report" 37 | } 38 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/ban.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | if(!message.member.hasPermission("MANAGE_MEMBERS")) return message.channel.send("No can do pal!"); 6 | if(args[0] == "help"){ 7 | message.reply("Usage: !ban "); 8 | return; 9 | } 10 | let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 11 | if(!bUser) return message.channel.send("Can't find user!"); 12 | let bReason = args.join(" ").slice(22); 13 | if(bUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 14 | 15 | let banEmbed = new Discord.RichEmbed() 16 | .setDescription("~Ban~") 17 | .setColor("#bc0000") 18 | .addField("Banned User", `${bUser} with ID ${bUser.id}`) 19 | .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`) 20 | .addField("Banned In", message.channel) 21 | .addField("Time", message.createdAt) 22 | .addField("Reason", bReason); 23 | 24 | let incidentchannel = message.guild.channels.find(`name`, "incidents"); 25 | if(!incidentchannel) return message.channel.send("Can't find incidents channel."); 26 | 27 | message.guild.member(bUser).ban(bReason); 28 | incidentchannel.send(banEmbed); 29 | } 30 | 31 | module.exports.help = { 32 | name:"ban" 33 | } 34 | -------------------------------------------------------------------------------- /_deprecated_/episode_16_code/commands/kick.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports.run = async (bot, message, args) => { 4 | 5 | if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("No can do pal!"); 6 | if(args[0] == "help"){ 7 | message.reply("Usage: !kick "); 8 | return; 9 | } 10 | let kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 11 | if(!kUser) return message.channel.send("Can't find user!"); 12 | let kReason = args.join(" ").slice(22); 13 | if(kUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be kicked!"); 14 | 15 | let kickEmbed = new Discord.RichEmbed() 16 | .setDescription("~Kick~") 17 | .setColor("#e56b00") 18 | .addField("Kicked User", `${kUser} with ID ${kUser.id}`) 19 | .addField("Kicked By", `<@${message.author.id}> with ID ${message.author.id}`) 20 | .addField("Kicked In", message.channel) 21 | .addField("Tiime", message.createdAt) 22 | .addField("Reason", kReason); 23 | 24 | let kickChannel = message.guild.channels.find(`name`, "incidents"); 25 | if(!kickChannel) return message.channel.send("Can't find incidents channel."); 26 | 27 | message.guild.member(kUser).kick(kReason); 28 | kickChannel.send(kickEmbed); 29 | } 30 | 31 | module.exports.help = { 32 | name:"kick" 33 | } 34 | -------------------------------------------------------------------------------- /Ep_04/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | 4 | const client = new Client({ 5 | disableEveryone: true 6 | }) 7 | 8 | client.commands = new Collection(); 9 | client.aliases = new Collection(); 10 | 11 | config({ 12 | path: __dirname + "/.env" 13 | }); 14 | 15 | ["command"].forEach(handler => { 16 | require(`./handlers/${handler}`)(client); 17 | }); 18 | 19 | client.on("ready", () => { 20 | console.log(`Hi, ${client.user.username} is now online!`); 21 | 22 | client.user.setPresence({ 23 | status: "online", 24 | game: { 25 | name: "me getting developed", 26 | type: "STREAMING" 27 | } 28 | }); 29 | }) 30 | 31 | client.on("message", async message => { 32 | const prefix = "_"; 33 | 34 | if (message.author.bot) return; 35 | if (!message.guild) return; 36 | if (!message.content.startsWith(prefix)) return; 37 | if (!message.member) message.member = await message.guild.fetchMember(message); 38 | 39 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 40 | const cmd = args.shift().toLowerCase(); 41 | 42 | if (cmd.length === 0) return; 43 | 44 | let command = client.commands.get(cmd); 45 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 46 | 47 | if (command) 48 | command.run(client, message, args); 49 | }); 50 | 51 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_05/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | 4 | const client = new Client({ 5 | disableEveryone: true 6 | }); 7 | 8 | client.commands = new Collection(); 9 | client.aliases = new Collection(); 10 | 11 | config({ 12 | path: __dirname + "/.env" 13 | }); 14 | 15 | ["command"].forEach(handler => { 16 | require(`./handlers/${handler}`)(client); 17 | }); 18 | 19 | client.on("ready", () => { 20 | console.log(`Hi, ${client.user.username} is now online!`); 21 | 22 | client.user.setPresence({ 23 | status: "online", 24 | game: { 25 | name: "me getting developed", 26 | type: "STREAMING" 27 | } 28 | }); 29 | }) 30 | 31 | client.on("message", async message => { 32 | const prefix = "_"; 33 | 34 | if (message.author.bot) return; 35 | if (!message.guild) return; 36 | if (!message.content.startsWith(prefix)) return; 37 | if (!message.member) message.member = await message.guild.fetchMember(message); 38 | 39 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 40 | const cmd = args.shift().toLowerCase(); 41 | 42 | if (cmd.length === 0) return; 43 | 44 | let command = client.commands.get(cmd); 45 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 46 | 47 | if (command) 48 | command.run(client, message, args); 49 | }); 50 | 51 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_06/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | 4 | const client = new Client({ 5 | disableEveryone: true 6 | }); 7 | 8 | client.commands = new Collection(); 9 | client.aliases = new Collection(); 10 | 11 | config({ 12 | path: __dirname + "/.env" 13 | }); 14 | 15 | ["command"].forEach(handler => { 16 | require(`./handlers/${handler}`)(client); 17 | }); 18 | 19 | client.on("ready", () => { 20 | console.log(`Hi, ${client.user.username} is now online!`); 21 | 22 | client.user.setPresence({ 23 | status: "online", 24 | game: { 25 | name: "me getting developed", 26 | type: "STREAMING" 27 | } 28 | }); 29 | }); 30 | 31 | client.on("message", async message => { 32 | const prefix = "_"; 33 | 34 | if (message.author.bot) return; 35 | if (!message.guild) return; 36 | if (!message.content.startsWith(prefix)) return; 37 | if (!message.member) message.member = await message.guild.fetchMember(message); 38 | 39 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 40 | const cmd = args.shift().toLowerCase(); 41 | 42 | if (cmd.length === 0) return; 43 | 44 | let command = client.commands.get(cmd); 45 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 46 | 47 | if (command) 48 | command.run(client, message, args); 49 | }); 50 | 51 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/index.js: -------------------------------------------------------------------------------- 1 | const botconfig = require("./botconfig.json"); 2 | const tokenfile = require("./token.json"); 3 | const Discord = require("discord.js"); 4 | const fs = require("fs"); 5 | const bot = new Discord.Client({disableEveryone: true}); 6 | bot.commands = new Discord.Collection(); 7 | 8 | fs.readdir("./commands/", (err, files) => { 9 | 10 | if(err) console.log(err); 11 | let jsfile = files.filter(f => f.split(".").pop() === "js") 12 | if(jsfile.length <= 0){ 13 | console.log("Couldn't find commands."); 14 | return; 15 | } 16 | 17 | jsfile.forEach((f, i) =>{ 18 | let props = require(`./commands/${f}`); 19 | console.log(`${f} loaded!`); 20 | bot.commands.set(props.help.name, props); 21 | }); 22 | }); 23 | 24 | bot.on("ready", async () => { 25 | console.log(`${bot.user.username} is online on ${bot.guilds.size} servers!`); 26 | bot.user.setActivity("tutorials on TSC", {type: "WATCHING"}); 27 | 28 | }); 29 | 30 | bot.on("message", async message => { 31 | if(message.author.bot) return; 32 | if(message.channel.type === "dm") return; 33 | 34 | let prefix = botconfig.prefix; 35 | let messageArray = message.content.split(" "); 36 | let cmd = messageArray[0]; 37 | let args = messageArray.slice(1); 38 | let commandfile = bot.commands.get(cmd.slice(prefix.length)); 39 | if(commandfile) commandfile.run(bot,message,args); 40 | 41 | }); 42 | 43 | bot.login(tokenfile.token); 44 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/index.js: -------------------------------------------------------------------------------- 1 | const botconfig = require("./botconfig.json"); 2 | const tokenfile = require("./token.json"); 3 | const Discord = require("discord.js"); 4 | const fs = require("fs"); 5 | const bot = new Discord.Client({disableEveryone: true}); 6 | bot.commands = new Discord.Collection(); 7 | 8 | fs.readdir("./commands/", (err, files) => { 9 | 10 | if(err) console.log(err); 11 | let jsfile = files.filter(f => f.split(".").pop() === "js") 12 | if(jsfile.length <= 0){ 13 | console.log("Couldn't find commands."); 14 | return; 15 | } 16 | 17 | jsfile.forEach((f, i) =>{ 18 | let props = require(`./commands/${f}`); 19 | console.log(`${f} loaded!`); 20 | bot.commands.set(props.help.name, props); 21 | }); 22 | }); 23 | 24 | bot.on("ready", async () => { 25 | console.log(`${bot.user.username} is online on ${bot.guilds.size} servers!`); 26 | bot.user.setActivity("tutorials on TSC", {type: "WATCHING"}); 27 | 28 | }); 29 | 30 | bot.on("message", async message => { 31 | if(message.author.bot) return; 32 | if(message.channel.type === "dm") return; 33 | 34 | let prefix = botconfig.prefix; 35 | let messageArray = message.content.split(" "); 36 | let cmd = messageArray[0]; 37 | let args = messageArray.slice(1); 38 | let commandfile = bot.commands.get(cmd.slice(prefix.length)); 39 | if(commandfile) commandfile.run(bot,message,args); 40 | 41 | }); 42 | 43 | bot.login(tokenfile.token); 44 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/index.js: -------------------------------------------------------------------------------- 1 | const botconfig = require("./botconfig.json"); 2 | const tokenfile = require("./token.json"); 3 | const Discord = require("discord.js"); 4 | const fs = require("fs"); 5 | const bot = new Discord.Client({disableEveryone: true}); 6 | bot.commands = new Discord.Collection(); 7 | 8 | fs.readdir("./commands/", (err, files) => { 9 | 10 | if(err) console.log(err); 11 | let jsfile = files.filter(f => f.split(".").pop() === "js"); 12 | if(jsfile.length <= 0){ 13 | console.log("Couldn't find commands."); 14 | return; 15 | } 16 | 17 | jsfile.forEach((f, i) =>{ 18 | let props = require(`./commands/${f}`); 19 | console.log(`${f} loaded!`); 20 | bot.commands.set(props.help.name, props); 21 | }); 22 | }); 23 | 24 | bot.on("ready", async () => { 25 | console.log(`${bot.user.username} is online on ${bot.guilds.size} servers!`); 26 | bot.user.setActivity("tutorials on TSC", {type: "WATCHING"}); 27 | 28 | }); 29 | 30 | bot.on("message", async message => { 31 | if(message.author.bot) return; 32 | if(message.channel.type === "dm") return; 33 | 34 | let prefix = botconfig.prefix; 35 | let messageArray = message.content.split(" "); 36 | let cmd = messageArray[0]; 37 | let args = messageArray.slice(1); 38 | let commandfile = bot.commands.get(cmd.slice(prefix.length)); 39 | if(commandfile) commandfile.run(bot,message,args); 40 | 41 | }); 42 | 43 | bot.login(tokenfile.token); 44 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/report.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const botconfig = require("../botconfig.json"); 3 | const red = botconfig.red; 4 | const green = botconfig.green; 5 | const orange = botconfig.orange; 6 | const errors = require("../utils/errors.js"); 7 | 8 | module.exports.run = async (bot, message, args) => { 9 | message.delete(); 10 | if(args[0] == "help"){ 11 | message.reply("Usage: !report "); 12 | return; 13 | } 14 | let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 15 | if(!rUser) return errors.cantfindUser(message.channel); 16 | let rreason = args.join(" ").slice(22); 17 | if(!rreason) return errors.noReason(message.channel); 18 | 19 | let reportEmbed = new Discord.RichEmbed() 20 | .setDescription("Reports") 21 | .setColor(orange) 22 | .addField("Reported User", `${rUser} with ID: ${rUser.id}`) 23 | .addField("Reported By", `${message.author} with ID: ${message.author.id}`) 24 | .addField("Channel", message.channel) 25 | .addField("Time", message.createdAt) 26 | .addField("Reason", rreason); 27 | 28 | let reportschannel = message.guild.channels.find(`name`, "reports"); 29 | if(!reportschannel) return message.channel.send("Couldn't find reports channel."); 30 | reportschannel.send(reportEmbed); 31 | 32 | } 33 | 34 | module.exports.help = { 35 | name: "report" 36 | } 37 | -------------------------------------------------------------------------------- /Ep_11/commands/moderation/clear.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "clear", 3 | aliases: ["purge", "nuke"], 4 | category: "moderation", 5 | description: "Clears the chat", 6 | run: async (client, message, args) => { 7 | if (message.deletable) { 8 | message.delete(); 9 | } 10 | 11 | // Member doesn't have permissions 12 | if (!message.member.hasPermission("MANAGE_MESSAGES")) { 13 | return message.reply("You can't delete messages....").then(m => m.delete(5000)); 14 | } 15 | 16 | // Check if args[0] is a number 17 | if (isNaN(args[0]) || parseInt(args[0]) <= 0) { 18 | return message.reply("Yeah.... That's not a numer? I also can't delete 0 messages by the way.").then(m => m.delete(5000)); 19 | } 20 | 21 | // Maybe the bot can't delete messages 22 | if (!message.guild.me.hasPermission("MANAGE_MESSAGES")) { 23 | return message.reply("Sorryy... I can't delete messages.").then(m => m.delete(5000)); 24 | } 25 | 26 | let deleteAmount; 27 | 28 | if (parseInt(args[0]) > 100) { 29 | deleteAmount = 100; 30 | } else { 31 | deleteAmount = parseInt(args[0]); 32 | } 33 | 34 | message.channel.bulkDelete(deleteAmount, true) 35 | .then(deleted => message.channel.send(`I deleted \`${deleted.size}\` messages.`)) 36 | .catch(err => message.reply(`Something went wrong... ${err}`)); 37 | } 38 | } -------------------------------------------------------------------------------- /Ep_12/commands/moderation/clear.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "clear", 3 | aliases: ["purge", "nuke"], 4 | category: "moderation", 5 | description: "Clears the chat", 6 | run: async (client, message, args) => { 7 | if (message.deletable) { 8 | message.delete(); 9 | } 10 | 11 | // Member doesn't have permissions 12 | if (!message.member.hasPermission("MANAGE_MESSAGES")) { 13 | return message.reply("You can't delete messages....").then(m => m.delete(5000)); 14 | } 15 | 16 | // Check if args[0] is a number 17 | if (isNaN(args[0]) || parseInt(args[0]) <= 0) { 18 | return message.reply("Yeah.... That's not a numer? I also can't delete 0 messages by the way.").then(m => m.delete(5000)); 19 | } 20 | 21 | // Maybe the bot can't delete messages 22 | if (!message.guild.me.hasPermission("MANAGE_MESSAGES")) { 23 | return message.reply("Sorryy... I can't delete messages.").then(m => m.delete(5000)); 24 | } 25 | 26 | let deleteAmount; 27 | 28 | if (parseInt(args[0]) > 100) { 29 | deleteAmount = 100; 30 | } else { 31 | deleteAmount = parseInt(args[0]); 32 | } 33 | 34 | message.channel.bulkDelete(deleteAmount, true) 35 | .then(deleted => message.channel.send(`I deleted \`${deleted.size}\` messages.`)) 36 | .catch(err => message.reply(`Something went wrong... ${err}`)); 37 | } 38 | } -------------------------------------------------------------------------------- /Ep_13/commands/moderation/clear.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "clear", 3 | aliases: ["purge", "nuke"], 4 | category: "moderation", 5 | description: "Clears the chat", 6 | run: async (client, message, args) => { 7 | if (message.deletable) { 8 | message.delete(); 9 | } 10 | 11 | // Member doesn't have permissions 12 | if (!message.member.hasPermission("MANAGE_MESSAGES")) { 13 | return message.reply("You can't delete messages....").then(m => m.delete(5000)); 14 | } 15 | 16 | // Check if args[0] is a number 17 | if (isNaN(args[0]) || parseInt(args[0]) <= 0) { 18 | return message.reply("Yeah.... That's not a numer? I also can't delete 0 messages by the way.").then(m => m.delete(5000)); 19 | } 20 | 21 | // Maybe the bot can't delete messages 22 | if (!message.guild.me.hasPermission("MANAGE_MESSAGES")) { 23 | return message.reply("Sorryy... I can't delete messages.").then(m => m.delete(5000)); 24 | } 25 | 26 | let deleteAmount; 27 | 28 | if (parseInt(args[0]) > 100) { 29 | deleteAmount = 100; 30 | } else { 31 | deleteAmount = parseInt(args[0]); 32 | } 33 | 34 | message.channel.bulkDelete(deleteAmount, true) 35 | .then(deleted => message.channel.send(`I deleted \`${deleted.size}\` messages.`)) 36 | .catch(err => message.reply(`Something went wrong... ${err}`)); 37 | } 38 | } -------------------------------------------------------------------------------- /Ep_14/commands/moderation/clear.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | name: "clear", 3 | aliases: ["purge", "nuke"], 4 | category: "moderation", 5 | description: "Clears the chat", 6 | run: async (client, message, args) => { 7 | if (message.deletable) { 8 | message.delete(); 9 | } 10 | 11 | // Member doesn't have permissions 12 | if (!message.member.hasPermission("MANAGE_MESSAGES")) { 13 | return message.reply("You can't delete messages....").then(m => m.delete(5000)); 14 | } 15 | 16 | // Check if args[0] is a number 17 | if (isNaN(args[0]) || parseInt(args[0]) <= 0) { 18 | return message.reply("Yeah.... That's not a numer? I also can't delete 0 messages by the way.").then(m => m.delete(5000)); 19 | } 20 | 21 | // Maybe the bot can't delete messages 22 | if (!message.guild.me.hasPermission("MANAGE_MESSAGES")) { 23 | return message.reply("Sorryy... I can't delete messages.").then(m => m.delete(5000)); 24 | } 25 | 26 | let deleteAmount; 27 | 28 | if (parseInt(args[0]) > 100) { 29 | deleteAmount = 100; 30 | } else { 31 | deleteAmount = parseInt(args[0]); 32 | } 33 | 34 | message.channel.bulkDelete(deleteAmount, true) 35 | .then(deleted => message.channel.send(`I deleted \`${deleted.size}\` messages.`)) 36 | .catch(err => message.reply(`Something went wrong... ${err}`)); 37 | } 38 | } -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/kick.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const errors = require("../utils/errors.js"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | if(!message.member.hasPermission("KICK_MEMBERS")) return errors.noPerms(message, "KICK_MEMBERS"); 7 | if(args[0] == "help"){ 8 | message.reply("Usage: !kick "); 9 | return; 10 | } 11 | let kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 12 | if(!kUser) return errors.cantfindUser(message.channel); 13 | let kReason = args.join(" ").slice(22); 14 | if(kUser.hasPermission("MANAGE_MESSAGES")) return errors.equalPerms(message, kUser, "MANAGE_MESSAGES"); 15 | 16 | let kickEmbed = new Discord.RichEmbed() 17 | .setDescription("~Kick~") 18 | .setColor("#e56b00") 19 | .addField("Kicked User", `${kUser} with ID ${kUser.id}`) 20 | .addField("Kicked By", `<@${message.author.id}> with ID ${message.author.id}`) 21 | .addField("Kicked In", message.channel) 22 | .addField("Tiime", message.createdAt) 23 | .addField("Reason", kReason); 24 | 25 | let kickChannel = message.guild.channels.find(`name`, "incidents"); 26 | if(!kickChannel) return message.channel.send("Can't find incidents channel."); 27 | 28 | message.guild.member(kUser).kick(kReason); 29 | kickChannel.send(kickEmbed); 30 | } 31 | 32 | module.exports.help = { 33 | name:"kick" 34 | } 35 | -------------------------------------------------------------------------------- /Ep_07/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_08/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_09/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_10/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_11/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_12/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_13/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_14/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | const fs = require("fs"); 4 | 5 | const client = new Client({ 6 | disableEveryone: true 7 | }); 8 | 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | client.categories = fs.readdirSync("./commands/"); 13 | 14 | config({ 15 | path: __dirname + "/.env" 16 | }); 17 | 18 | ["command"].forEach(handler => { 19 | require(`./handlers/${handler}`)(client); 20 | }); 21 | 22 | client.on("ready", () => { 23 | console.log(`Hi, ${client.user.username} is now online!`); 24 | 25 | client.user.setPresence({ 26 | status: "online", 27 | game: { 28 | name: "me getting developed", 29 | type: "STREAMING" 30 | } 31 | }); 32 | }); 33 | 34 | client.on("message", async message => { 35 | const prefix = "_"; 36 | 37 | if (message.author.bot) return; 38 | if (!message.guild) return; 39 | if (!message.content.startsWith(prefix)) return; 40 | if (!message.member) message.member = await message.guild.fetchMember(message); 41 | 42 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 43 | const cmd = args.shift().toLowerCase(); 44 | 45 | if (cmd.length === 0) return; 46 | 47 | let command = client.commands.get(cmd); 48 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 49 | 50 | if (command) 51 | command.run(client, message, args); 52 | }); 53 | 54 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_09/commands/fun/love.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { getMember } = require("../../functions.js"); 3 | 4 | module.exports = { 5 | name: "love", 6 | aliases: ["affinity"], 7 | category: "fun", 8 | description: "Calculates the love affinity you have for another person.", 9 | usage: "[mention | id | username]", 10 | run: async (client, message, args) => { 11 | // Get a member from mention, id, or username 12 | let person = getMember(message, args[0]); 13 | 14 | // If no person is found 15 | // It's going to default to the author 16 | // And we don't want to love ourself in this command 17 | // So we filter out our ID from the server members 18 | // And get a random person from that collection 19 | if (!person || message.author.id === person.id) { 20 | person = message.guild.members 21 | .filter(m => m.id !== message.author.id) 22 | .random(); 23 | } 24 | 25 | // love is the percentage 26 | // loveIndex is a number from 0 to 10, based on that love variable 27 | const love = Math.random() * 100; 28 | const loveIndex = Math.floor(love / 10); 29 | const loveLevel = "💖".repeat(loveIndex) + "💔".repeat(10 - loveIndex); 30 | 31 | const embed = new RichEmbed() 32 | .setColor("#ffb6c1") 33 | .addField(`☁ **${person.displayName}** loves **${message.member.displayName}** this much:`, 34 | `💟 ${Math.floor(love)}%\n\n${loveLevel}`); 35 | 36 | message.channel.send(embed); 37 | } 38 | } -------------------------------------------------------------------------------- /_deprecated_/episode_6_code/commands/tempmute.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const ms = require("ms"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | //!tempmute @user 1s/m/h/d 7 | 8 | let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 9 | if(!tomute) return message.reply("Couldn't find user."); 10 | if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!"); 11 | let muterole = message.guild.roles.find(`name`, "muted"); 12 | //start of create role 13 | if(!muterole){ 14 | try{ 15 | muterole = await message.guild.createRole({ 16 | name: "muted", 17 | color: "#000000", 18 | permissions:[] 19 | }) 20 | message.guild.channels.forEach(async (channel, id) => { 21 | await channel.overwritePermissions(muterole, { 22 | SEND_MESSAGES: false, 23 | ADD_REACTIONS: false 24 | }); 25 | }); 26 | }catch(e){ 27 | console.log(e.stack); 28 | } 29 | } 30 | //end of create role 31 | let mutetime = args[1]; 32 | if(!mutetime) return message.reply("You didn't specify a time!"); 33 | 34 | await(tomute.addRole(muterole.id)); 35 | message.reply(`<@${tomute.id}> has been muted for ${ms(ms(mutetime))}`); 36 | 37 | setTimeout(function(){ 38 | tomute.removeRole(muterole.id); 39 | message.channel.send(`<@${tomute.id}> has been unmuted!`); 40 | }, ms(mutetime)); 41 | 42 | 43 | //end of module 44 | } 45 | 46 | module.exports.help = { 47 | name: "tempmute" 48 | } 49 | -------------------------------------------------------------------------------- /_deprecated_/episode_7_code/commands/tempmute.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const ms = require("ms"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | //!tempmute @user 1s/m/h/d 7 | 8 | let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 9 | if(!tomute) return message.reply("Couldn't find user."); 10 | if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!"); 11 | let muterole = message.guild.roles.find(`name`, "muted"); 12 | //start of create role 13 | if(!muterole){ 14 | try{ 15 | muterole = await message.guild.createRole({ 16 | name: "muted", 17 | color: "#000000", 18 | permissions:[] 19 | }) 20 | message.guild.channels.forEach(async (channel, id) => { 21 | await channel.overwritePermissions(muterole, { 22 | SEND_MESSAGES: false, 23 | ADD_REACTIONS: false 24 | }); 25 | }); 26 | }catch(e){ 27 | console.log(e.stack); 28 | } 29 | } 30 | //end of create role 31 | let mutetime = args[1]; 32 | if(!mutetime) return message.reply("You didn't specify a time!"); 33 | 34 | await(tomute.addRole(muterole.id)); 35 | message.reply(`<@${tomute.id}> has been muted for ${ms(ms(mutetime))}`); 36 | 37 | setTimeout(function(){ 38 | tomute.removeRole(muterole.id); 39 | message.channel.send(`<@${tomute.id}> has been unmuted!`); 40 | }, ms(mutetime)); 41 | 42 | 43 | //end of module 44 | } 45 | 46 | module.exports.help = { 47 | name: "tempmute" 48 | } 49 | -------------------------------------------------------------------------------- /_deprecated_/episode_8_code/commands/tempmute.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const ms = require("ms"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | 6 | //!tempmute @user 1s/m/h/d 7 | 8 | let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 9 | if(!tomute) return message.reply("Couldn't find user."); 10 | if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!"); 11 | let muterole = message.guild.roles.find(`name`, "muted"); 12 | //start of create role 13 | if(!muterole){ 14 | try{ 15 | muterole = await message.guild.createRole({ 16 | name: "muted", 17 | color: "#000000", 18 | permissions:[] 19 | }) 20 | message.guild.channels.forEach(async (channel, id) => { 21 | await channel.overwritePermissions(muterole, { 22 | SEND_MESSAGES: false, 23 | ADD_REACTIONS: false 24 | }); 25 | }); 26 | }catch(e){ 27 | console.log(e.stack); 28 | } 29 | } 30 | //end of create role 31 | let mutetime = args[1]; 32 | if(!mutetime) return message.reply("You didn't specify a time!"); 33 | 34 | await(tomute.addRole(muterole.id)); 35 | message.reply(`<@${tomute.id}> has been muted for ${ms(ms(mutetime))}`); 36 | 37 | setTimeout(function(){ 38 | tomute.removeRole(muterole.id); 39 | message.channel.send(`<@${tomute.id}> has been unmuted!`); 40 | }, ms(mutetime)); 41 | 42 | 43 | //end of module 44 | } 45 | 46 | module.exports.help = { 47 | name: "tempmute" 48 | } 49 | -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/commands/ban.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const errors = require("../utils/errors.js"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | message.delete(); 6 | if(!message.member.hasPermission("BAN_MEMBERS")) return errors.noPerms(message, "BAN_MEMBERS"); 7 | if(args[0] == "help"){ 8 | message.reply("Usage: !ban "); 9 | return; 10 | } 11 | let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); 12 | if(!bUser) return errors.cantfindUser(message.channel); 13 | if(bUser.id === bot.user.id) return errors.botuser(message); 14 | let bReason = args.join(" ").slice(22); 15 | if(!bReason) return errors.noReason(message.channel); 16 | if(bUser.hasPermission("MANAGE_MESSAGES")) return errors.equalPerms(message, bUser, "MANAGE_MESSAGES"); 17 | 18 | let banEmbed = new Discord.RichEmbed() 19 | .setDescription("~Ban~") 20 | .setColor("#bc0000") 21 | .addField("Banned User", `${bUser} with ID ${bUser.id}`) 22 | .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`) 23 | .addField("Banned In", message.channel) 24 | .addField("Time", message.createdAt) 25 | .addField("Reason", bReason); 26 | 27 | let incidentchannel = message.guild.channels.find(`name`, "incidents"); 28 | if(!incidentchannel) return message.channel.send("Can't find incidents channel."); 29 | 30 | message.guild.member(bUser).ban(bReason); 31 | incidentchannel.send(banEmbed); 32 | } 33 | 34 | module.exports.help = { 35 | name:"ban" 36 | } 37 | -------------------------------------------------------------------------------- /Ep_09/commands/fun/rps.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { promptMessage } = require("../../functions.js"); 3 | 4 | const chooseArr = ["🗻", "📰", "✂"]; 5 | 6 | module.exports = { 7 | name: "rps", 8 | category: "fun", 9 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 10 | usage: "rps", 11 | run: async (client, message, args) => { 12 | const embed = new RichEmbed() 13 | .setColor("#ffffff") 14 | .setFooter(message.guild.me.displayName, client.user.displayAvatarURL) 15 | .setDescription("Add a reaction to one of these emojis to play the game!") 16 | .setTimestamp(); 17 | 18 | const m = await message.channel.send(embed); 19 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 20 | 21 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 22 | 23 | const result = await getResult(reacted, botChoice); 24 | await m.clearReactions(); 25 | 26 | embed 27 | .setDescription("") 28 | .addField(result, `${reacted} vs ${botChoice}`); 29 | 30 | m.edit(embed); 31 | 32 | function getResult(me, clientChosen) { 33 | if ((me === "🗻" && clientChosen === "✂") || 34 | (me === "📰" && clientChosen === "🗻") || 35 | (me === "✂" && clientChosen === "📰")) { 36 | return "You won!"; 37 | } else if (me === clientChosen) { 38 | return "It's a tie!"; 39 | } else { 40 | return "You lost!"; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Ep_10/commands/fun/rps.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { promptMessage } = require("../../functions.js"); 3 | 4 | const chooseArr = ["🗻", "📰", "✂"]; 5 | 6 | module.exports = { 7 | name: "rps", 8 | category: "fun", 9 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 10 | usage: "rps", 11 | run: async (client, message, args) => { 12 | const embed = new RichEmbed() 13 | .setColor("#ffffff") 14 | .setFooter(message.guild.me.displayName, client.user.displayAvatarURL) 15 | .setDescription("Add a reaction to one of these emojis to play the game!") 16 | .setTimestamp(); 17 | 18 | const m = await message.channel.send(embed); 19 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 20 | 21 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 22 | 23 | const result = await getResult(reacted, botChoice); 24 | await m.clearReactions(); 25 | 26 | embed 27 | .setDescription("") 28 | .addField(result, `${reacted} vs ${botChoice}`); 29 | 30 | m.edit(embed); 31 | 32 | function getResult(me, clientChosen) { 33 | if ((me === "🗻" && clientChosen === "✂") || 34 | (me === "📰" && clientChosen === "🗻") || 35 | (me === "✂" && clientChosen === "📰")) { 36 | return "You won!"; 37 | } else if (me === clientChosen) { 38 | return "It's a tie!"; 39 | } else { 40 | return "You lost!"; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Ep_11/commands/fun/rps.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { promptMessage } = require("../../functions.js"); 3 | 4 | const chooseArr = ["🗻", "📰", "✂"]; 5 | 6 | module.exports = { 7 | name: "rps", 8 | category: "fun", 9 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 10 | usage: "rps", 11 | run: async (client, message, args) => { 12 | const embed = new RichEmbed() 13 | .setColor("#ffffff") 14 | .setFooter(message.guild.me.displayName, client.user.displayAvatarURL) 15 | .setDescription("Add a reaction to one of these emojis to play the game!") 16 | .setTimestamp(); 17 | 18 | const m = await message.channel.send(embed); 19 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 20 | 21 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 22 | 23 | const result = await getResult(reacted, botChoice); 24 | await m.clearReactions(); 25 | 26 | embed 27 | .setDescription("") 28 | .addField(result, `${reacted} vs ${botChoice}`); 29 | 30 | m.edit(embed); 31 | 32 | function getResult(me, clientChosen) { 33 | if ((me === "🗻" && clientChosen === "✂") || 34 | (me === "📰" && clientChosen === "🗻") || 35 | (me === "✂" && clientChosen === "📰")) { 36 | return "You won!"; 37 | } else if (me === clientChosen) { 38 | return "It's a tie!"; 39 | } else { 40 | return "You lost!"; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Ep_12/commands/fun/rps.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { promptMessage } = require("../../functions.js"); 3 | 4 | const chooseArr = ["🗻", "📰", "✂"]; 5 | 6 | module.exports = { 7 | name: "rps", 8 | category: "fun", 9 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 10 | usage: "rps", 11 | run: async (client, message, args) => { 12 | const embed = new RichEmbed() 13 | .setColor("#ffffff") 14 | .setFooter(message.guild.me.displayName, client.user.displayAvatarURL) 15 | .setDescription("Add a reaction to one of these emojis to play the game!") 16 | .setTimestamp(); 17 | 18 | const m = await message.channel.send(embed); 19 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 20 | 21 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 22 | 23 | const result = await getResult(reacted, botChoice); 24 | await m.clearReactions(); 25 | 26 | embed 27 | .setDescription("") 28 | .addField(result, `${reacted} vs ${botChoice}`); 29 | 30 | m.edit(embed); 31 | 32 | function getResult(me, clientChosen) { 33 | if ((me === "🗻" && clientChosen === "✂") || 34 | (me === "📰" && clientChosen === "🗻") || 35 | (me === "✂" && clientChosen === "📰")) { 36 | return "You won!"; 37 | } else if (me === clientChosen) { 38 | return "It's a tie!"; 39 | } else { 40 | return "You lost!"; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Ep_13/commands/fun/rps.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { promptMessage } = require("../../functions.js"); 3 | 4 | const chooseArr = ["🗻", "📰", "✂"]; 5 | 6 | module.exports = { 7 | name: "rps", 8 | category: "fun", 9 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 10 | usage: "rps", 11 | run: async (client, message, args) => { 12 | const embed = new RichEmbed() 13 | .setColor("#ffffff") 14 | .setFooter(message.guild.me.displayName, client.user.displayAvatarURL) 15 | .setDescription("Add a reaction to one of these emojis to play the game!") 16 | .setTimestamp(); 17 | 18 | const m = await message.channel.send(embed); 19 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 20 | 21 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 22 | 23 | const result = await getResult(reacted, botChoice); 24 | await m.clearReactions(); 25 | 26 | embed 27 | .setDescription("") 28 | .addField(result, `${reacted} vs ${botChoice}`); 29 | 30 | m.edit(embed); 31 | 32 | function getResult(me, clientChosen) { 33 | if ((me === "🗻" && clientChosen === "✂") || 34 | (me === "📰" && clientChosen === "🗻") || 35 | (me === "✂" && clientChosen === "📰")) { 36 | return "You won!"; 37 | } else if (me === clientChosen) { 38 | return "It's a tie!"; 39 | } else { 40 | return "You lost!"; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Ep_14/commands/fun/rps.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { promptMessage } = require("../../functions.js"); 3 | 4 | const chooseArr = ["🗻", "📰", "✂"]; 5 | 6 | module.exports = { 7 | name: "rps", 8 | category: "fun", 9 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 10 | usage: "rps", 11 | run: async (client, message, args) => { 12 | const embed = new RichEmbed() 13 | .setColor("#ffffff") 14 | .setFooter(message.guild.me.displayName, client.user.displayAvatarURL) 15 | .setDescription("Add a reaction to one of these emojis to play the game!") 16 | .setTimestamp(); 17 | 18 | const m = await message.channel.send(embed); 19 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 20 | 21 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 22 | 23 | const result = await getResult(reacted, botChoice); 24 | await m.clearReactions(); 25 | 26 | embed 27 | .setDescription("") 28 | .addField(result, `${reacted} vs ${botChoice}`); 29 | 30 | m.edit(embed); 31 | 32 | function getResult(me, clientChosen) { 33 | if ((me === "🗻" && clientChosen === "✂") || 34 | (me === "📰" && clientChosen === "🗻") || 35 | (me === "✂" && clientChosen === "📰")) { 36 | return "You won!"; 37 | } else if (me === clientChosen) { 38 | return "It's a tie!"; 39 | } else { 40 | return "You lost!"; 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Ep_06/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_07/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_08/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_09/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_10/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_11/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_12/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_13/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_14/functions.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /Ep_03/index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { config } = require("dotenv"); 3 | 4 | const client = new Client({ 5 | disableEveryone: true 6 | }) 7 | 8 | // Collections 9 | client.commands = new Collection(); 10 | client.aliases = new Collection(); 11 | 12 | config({ 13 | path: __dirname + "/.env" 14 | }); 15 | 16 | // Run the command loader 17 | ["command"].forEach(handler => { 18 | require(`./handlers/${handler}`)(client); 19 | }); 20 | 21 | client.on("ready", () => { 22 | console.log(`Hi, ${client.user.username} is now online!`); 23 | 24 | client.user.setPresence({ 25 | status: "online", 26 | game: { 27 | name: "me getting developed", 28 | type: "WATCHING" 29 | } 30 | }); 31 | }) 32 | 33 | client.on("message", async message => { 34 | const prefix = "_"; 35 | 36 | if (message.author.bot) return; 37 | if (!message.guild) return; 38 | if (!message.content.startsWith(prefix)) return; 39 | 40 | // If message.member is uncached, cache it. 41 | if (!message.member) message.member = await message.guild.fetchMember(message); 42 | 43 | const args = message.content.slice(prefix.length).trim().split(/ +/g); 44 | const cmd = args.shift().toLowerCase(); 45 | 46 | if (cmd.length === 0) return; 47 | 48 | // Get the command 49 | let command = client.commands.get(cmd); 50 | // If none is found, try to find it by alias 51 | if (!command) command = client.commands.get(client.aliases.get(cmd)); 52 | 53 | // If a command is finally found, run the command 54 | if (command) 55 | command.run(client, message, args); 56 | }); 57 | 58 | client.login(process.env.TOKEN); -------------------------------------------------------------------------------- /Ep_06/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**> Member:** ${rMember} (${rMember.user.id}) 34 | **> Reported by:** ${message.member} 35 | **> Reported in:** ${message.channel} 36 | **> Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_07/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**> Member:** ${rMember} (${rMember.user.id}) 34 | **> Reported by:** ${message.member} 35 | **> Reported in:** ${message.channel} 36 | **> Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_08/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**> Member:** ${rMember} (${rMember.user.id}) 34 | **> Reported by:** ${message.member} 35 | **> Reported in:** ${message.channel} 36 | **> Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_09/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**> Member:** ${rMember} (${rMember.user.id}) 34 | **> Reported by:** ${message.member} 35 | **> Reported in:** ${message.channel} 36 | **> Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_10/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**> Member:** ${rMember} (${rMember.user.id}) 34 | **> Reported by:** ${message.member} 35 | **> Reported in:** ${message.channel} 36 | **> Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_11/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**> Member:** ${rMember} (${rMember.user.id}) 34 | **> Reported by:** ${message.member} 35 | **> Reported in:** ${message.channel} 36 | **> Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_12/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**- Member:** ${rMember} (${rMember.user.id}) 34 | **- Reported by:** ${message.member} 35 | **- Reported in:** ${message.channel} 36 | **- Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_13/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**- Member:** ${rMember} (${rMember.user.id}) 34 | **- Reported by:** ${message.member} 35 | **- Reported in:** ${message.channel} 36 | **- Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /Ep_14/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | if (message.deletable) message.delete(); 11 | 12 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 13 | 14 | if (!rMember) 15 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 16 | 17 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 18 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 19 | 20 | if (!args[1]) 21 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 22 | 23 | const channel = message.guild.channels.find(c => c.name === "reports") 24 | 25 | if (!channel) 26 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 27 | 28 | const embed = new RichEmbed() 29 | .setColor("#ff0000") 30 | .setTimestamp() 31 | .setFooter(message.guild.name, message.guild.iconURL) 32 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 33 | .setDescription(stripIndents`**- Member:** ${rMember} (${rMember.user.id}) 34 | **- Reported by:** ${message.member} 35 | **- Reported in:** ${message.channel} 36 | **- Reason:** ${args.slice(1).join(" ")}`); 37 | 38 | return channel.send(embed); 39 | } 40 | } -------------------------------------------------------------------------------- /_deprecated_/episode-18-code/utils/errors.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const fs = require("fs"); 3 | let config = require("../botconfig.json"); 4 | 5 | module.exports.noPerms = (message, perm) => { 6 | let embed = new Discord.RichEmbed() 7 | .setAuthor(message.author.username) 8 | .setTitle("Insufficient Permission") 9 | .setColor(config.red) 10 | .addField("Permission needed", perm); 11 | 12 | message.channel.send(embed).then(m => m.delete(5000)); 13 | } 14 | 15 | module.exports.equalPerms = (message, user, perms) => { 16 | 17 | let embed = new Discord.RichEmbed() 18 | .setAuthor(message.author.username) 19 | .setColor(config.red) 20 | .setTitle("Error") 21 | .addField(`${user} has perms`, perms); 22 | 23 | message.channel.send(embed).then(m => m.delete(5000)); 24 | 25 | } 26 | 27 | module.exports.botuser = (message) => { 28 | let embed = new Discord.RichEmbed() 29 | .setTitle("Error") 30 | .setDescription("You cannot ban a bot.") 31 | .setColor(config.red); 32 | 33 | message.channel.send(embed).then(m => m.delete(5000)); 34 | } 35 | 36 | module.exports.cantfindUser = (channel) => { 37 | let embed = new Discord.RichEmbed() 38 | .setTitle("Error") 39 | .setDescription("Could not find that user.") 40 | .setColor(config.red); 41 | 42 | channel.send(embed).then(m => m.delete(5000)); 43 | } 44 | 45 | module.exports.noReason = (channel) => { 46 | let embed = new Discord.RichEmbed() 47 | .setTitle("Error") 48 | .setDescription("Please supply a reason.") 49 | .setColor(config.red); 50 | 51 | channel.send(embed).then(m => m.delete(5000)); 52 | } 53 | -------------------------------------------------------------------------------- /Ep_04/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 28 | **> Joined at:** ${joined} 29 | **> Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 32 | **> Username**: ${member.user.username} 33 | **> Tag**: ${member.user.tag} 34 | **> Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_05/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 28 | **> Joined at:** ${joined} 29 | **> Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 32 | **> Username**: ${member.user.username} 33 | **> Tag**: ${member.user.tag} 34 | **> Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_06/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 28 | **> Joined at:** ${joined} 29 | **> Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 32 | **> Username**: ${member.user.username} 33 | **> Tag**: ${member.user.tag} 34 | **> Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_08/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 28 | **> Joined at:** ${joined} 29 | **> Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 32 | **> Username**: ${member.user.username} 33 | **> Tag**: ${member.user.tag} 34 | **> Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_09/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 28 | **> Joined at:** ${joined} 29 | **> Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 32 | **> Username**: ${member.user.username} 33 | **> Tag**: ${member.user.tag} 34 | **> Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_10/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 28 | **> Joined at:** ${joined} 29 | **> Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 32 | **> Username**: ${member.user.username} 33 | **> Tag**: ${member.user.tag} 34 | **> Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_11/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 28 | **> Joined at:** ${joined} 29 | **> Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 32 | **> Username**: ${member.user.username} 33 | **> Tag**: ${member.user.tag} 34 | **> Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_12/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**- Display name:** ${member.displayName} 28 | **- Joined at:** ${joined} 29 | **- Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**- ID:** ${member.user.id} 32 | **- Username**: ${member.user.username} 33 | **- Tag**: ${member.user.tag} 34 | **- Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`** Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_13/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**- Display name:** ${member.displayName} 28 | **- Joined at:** ${joined} 29 | **- Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**- ID:** ${member.user.id} 32 | **- Username**: ${member.user.username} 33 | **- Tag**: ${member.user.tag} 34 | **- Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`** Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_14/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | description: "Returns user information", 9 | usage: "[username | id | mention]", 10 | run: (client, message, args) => { 11 | const member = getMember(message, args.join(" ")); 12 | 13 | // Member variables 14 | const joined = formatDate(member.joinedAt); 15 | const roles = member.roles 16 | .filter(r => r.id !== message.guild.id) 17 | .map(r => r).join(", ") || 'none'; 18 | 19 | // User variables 20 | const created = formatDate(member.user.createdAt); 21 | 22 | const embed = new RichEmbed() 23 | .setFooter(member.displayName, member.user.displayAvatarURL) 24 | .setThumbnail(member.user.displayAvatarURL) 25 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 26 | 27 | .addField('Member information:', stripIndents`**- Display name:** ${member.displayName} 28 | **- Joined at:** ${joined} 29 | **- Roles:** ${roles}`, true) 30 | 31 | .addField('User information:', stripIndents`**- ID:** ${member.user.id} 32 | **- Username**: ${member.user.username} 33 | **- Tag**: ${member.user.tag} 34 | **- Created at**: ${created}`, true) 35 | 36 | .setTimestamp() 37 | 38 | if (member.user.presence.game) 39 | embed.addField('Currently playing', stripIndents`** Name:** ${member.user.presence.game.name}`); 40 | 41 | message.channel.send(embed); 42 | } 43 | } -------------------------------------------------------------------------------- /Ep_03/handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs"); 2 | 3 | const ascii = require("ascii-table"); 4 | 5 | // Create a new Ascii table 6 | let table = new ascii("Commands"); 7 | table.setHeading("Command", "Load status"); 8 | 9 | module.exports = (client) => { 10 | // Read every commands subfolder 11 | readdirSync("./commands/").forEach(dir => { 12 | // Filter so we only have .js command files 13 | const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js")); 14 | 15 | // Loop over the commands, and add all of them to a collection 16 | // If there's no name found, prevent it from returning an error, 17 | // By using a cross in the table we made. 18 | for (let file of commands) { 19 | let pull = require(`../commands/${dir}/${file}`); 20 | 21 | if (pull.name) { 22 | client.commands.set(pull.name, pull); 23 | table.addRow(file, '✅'); 24 | } else { 25 | table.addRow(file, `❌ -> missing a help.name, or help.name is not a string.`); 26 | continue; 27 | } 28 | 29 | // If there's an aliases key, read the aliases. 30 | if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name)); 31 | } 32 | }); 33 | // Log the table 34 | console.log(table.toString()); 35 | } 36 | 37 | /** 38 | * This is the basic command layout 39 | * module.exports = { 40 | * name: "Command name", 41 | * aliases: ["array", "of", "aliases"] 42 | * category: "Category name", 43 | * description: "Command description" 44 | * usage: "[args input]", 45 | * run: (client, message, args) => { 46 | * The code in here to execute 47 | * } 48 | * } 49 | */ -------------------------------------------------------------------------------- /Ep_07/commands/info/whois.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | const { getMember, formatDate } = require("../../functions.js"); 4 | 5 | module.exports = { 6 | name: "whois", 7 | aliases: ["who", "user", "info"], 8 | category: "info", 9 | description: "Returns user information", 10 | usage: "[username | id | mention]", 11 | run: (client, message, args) => { 12 | const member = getMember(message, args.join(" ")); 13 | 14 | // Member variables 15 | const joined = formatDate(member.joinedAt); 16 | const roles = member.roles 17 | .filter(r => r.id !== message.guild.id) 18 | .map(r => r).join(", ") || 'none'; 19 | 20 | // User variables 21 | const created = formatDate(member.user.createdAt); 22 | 23 | const embed = new RichEmbed() 24 | .setFooter(member.displayName, member.user.displayAvatarURL) 25 | .setThumbnail(member.user.displayAvatarURL) 26 | .setColor(member.displayHexColor === '#000000' ? '#ffffff' : member.displayHexColor) 27 | 28 | .addField('Member information:', stripIndents`**> Display name:** ${member.displayName} 29 | **> Joined at:** ${joined} 30 | **> Roles:** ${roles}`, true) 31 | 32 | .addField('User information:', stripIndents`**> ID:** ${member.user.id} 33 | **> Username**: ${member.user.username} 34 | **> Tag**: ${member.user.tag} 35 | **> Created at**: ${created}`) 36 | 37 | .setTimestamp() 38 | 39 | if (member.user.presence.game) 40 | embed.addField('Currently playing', stripIndents`**> Name:** ${member.user.presence.game.name}`); 41 | 42 | message.channel.send(embed); 43 | } 44 | } -------------------------------------------------------------------------------- /Ep_08/commands/fun/rps.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { promptMessage } = require("../../functions.js"); 3 | 4 | const chooseArr = ["🗻", "📰", "✂"]; 5 | 6 | module.exports = { 7 | name: "rps", 8 | category: "fun", 9 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 10 | usage: "rps", 11 | run: async (client, message, args) => { 12 | const embed = new RichEmbed() 13 | .setColor("#ffffff") 14 | .setFooter(message.guild.me.displayName, client.user.displayAvatarURL) 15 | .setDescription("Add a reaction to one of these emojis to play the game!") 16 | .setTimestamp(); 17 | 18 | const m = await message.channel.send(embed); 19 | // Wait for a reaction to be added 20 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 21 | 22 | // Get a random emoji from the array 23 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 24 | 25 | // Check if it's a win/tie/loss 26 | const result = await getResult(reacted, botChoice); 27 | // Clear the reactions 28 | await m.clearReactions(); 29 | 30 | embed 31 | .setDescription("") 32 | .addField(result, `${reacted} vs ${botChoice}`); 33 | 34 | m.edit(embed); 35 | 36 | function getResult(me, clientChosen) { 37 | if ((me === "🗻" && clientChosen === "✂") || 38 | (me === "📰" && clientChosen === "🗻") || 39 | (me === "✂" && clientChosen === "📰")) { 40 | return "You won!"; 41 | } else if (me === clientChosen) { 42 | return "It's a tie!"; 43 | } else { 44 | return "You lost!"; 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /Ep_14/commands/info/instagram.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | const fetch = require("node-fetch"); 5 | 6 | module.exports = { 7 | name: "instagram", 8 | aliases: ["insta"], 9 | category: "info", 10 | description: "Find out some nice instagram statistics", 11 | usage: "", 12 | run: async (client, message, args) => { 13 | const name = args.join(" "); 14 | 15 | if (!name) { 16 | return message.reply("Maybe it's useful to actually search for someone...!") 17 | .then(m => m.delete(5000)); 18 | } 19 | 20 | const url = `https://instagram.com/${name}/?__a=1`; 21 | 22 | let res; 23 | 24 | try { 25 | res = await fetch(url).then(url => url.json()); 26 | } catch (e) { 27 | return message.reply("I couldn't find that account... :(") 28 | .then(m => m.delete(5000)); 29 | } 30 | 31 | const account = res.graphql.user; 32 | 33 | const embed = new RichEmbed() 34 | .setColor("RANDOM") 35 | .setTitle(account.full_name) 36 | .setURL(`https://instagram.com/${name}`) 37 | .setThumbnail(account.profile_pic_url_hd) 38 | .addField("Profile information", stripIndents`**- Username:** ${account.username} 39 | **- Full name:** ${account.full_name} 40 | **- Biography:** ${account.biography.length == 0 ? "none" : account.biography} 41 | **- Posts:** ${account.edge_owner_to_timeline_media.count} 42 | **- Followers:** ${account.edge_followed_by.count} 43 | **- Following:** ${account.edge_follow.count} 44 | **- Private account:** ${account.is_private ? "Yes 🔐" : "Nope 🔓"}`); 45 | 46 | message.channel.send(embed); 47 | } 48 | } -------------------------------------------------------------------------------- /Ep_05/commands/moderation/report.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "report", 6 | category: "moderation", 7 | description: "Reports a member", 8 | usage: "", 9 | run: async (client, message, args) => { 10 | // If the bot can delete the message, do so 11 | if (message.deletable) message.delete(); 12 | 13 | // Either a mention or ID 14 | let rMember = message.mentions.members.first() || message.guild.members.get(args[0]); 15 | 16 | // No person found 17 | if (!rMember) 18 | return message.reply("Couldn't find that person?").then(m => m.delete(5000)); 19 | 20 | // The member has BAN_MEMBERS or is a bot 21 | if (rMember.hasPermission("BAN_MEMBERS") || rMember.user.bot) 22 | return message.channel.send("Can't report that member").then(m => m.delete(5000)); 23 | 24 | // If there's no argument 25 | if (!args[1]) 26 | return message.channel.send("Please provide a reason for the report").then(m => m.delete(5000)); 27 | 28 | const channel = message.guild.channels.find(c => c.name === "reports") 29 | 30 | // No channel found 31 | if (!channel) 32 | return message.channel.send("Couldn't find a `#reports` channel").then(m => m.delete(5000)); 33 | 34 | const embed = new RichEmbed() 35 | .setColor("#ff0000") 36 | .setTimestamp() 37 | .setFooter(message.guild.name, message.guild.iconURL) 38 | .setAuthor("Reported member", rMember.user.displayAvatarURL) 39 | .setDescription(stripIndents`**> Member:** ${rMember} (${rMember.user.id}) 40 | **> Reported by:** ${message.member} 41 | **> Reported in:** ${message.channel} 42 | **> Reason:** ${args.slice(1).join(" ")}`); 43 | 44 | return channel.send(embed); 45 | } 46 | } -------------------------------------------------------------------------------- /_deprecated_/ep26/leaders.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const mongoose = require('mongoose'); 3 | mongoose.connect('mongodb://localhost/tutorial', { 4 | useNewUrlParser: true 5 | }); 6 | const Coins = require("../models/coins.js"); 7 | module.exports.run = async (bot, message, args) => { 8 | await message.delete(); 9 | if (message.author.id !== '178657593030475776') return; 10 | //Grab all of the users in said server 11 | Coins.find({ 12 | serverID: message.guild.id 13 | }).sort([ 14 | ['coins', 'descending'] 15 | ]).exec((err, res) => { 16 | if (err) console.log(err); 17 | 18 | let embed = new Discord.RichEmbed() 19 | .setTitle("Coins Leaderboard") 20 | //if there are no results 21 | if (res.length === 0) { 22 | embed.setColor("RED"); 23 | embed.addField("No data found", "Please type in chat to gain coins!") 24 | } else if (res.length < 10) { 25 | //less than 10 results 26 | embed.setColor("BLURPLE"); 27 | for (i = 0; i < res.length; i++) { 28 | let member = message.guild.members.get(res[i].userID) || "User Left" 29 | if (member === "User Left") { 30 | embed.addField(`${i + 1}. ${member}`, `**Coins**: ${res[i].coins}`); 31 | } else { 32 | embed.addField(`${i + 1}. ${member.user.username}`, `**Coins**: ${res[i].coins}`); 33 | } 34 | } 35 | } else { 36 | //more than 10 results 37 | embed.setColor("BLURPLE"); 38 | for (i = 0; i < 10; i++) { 39 | let member = message.guild.members.get(res[i].userID) || "User Left" 40 | if (member === "User Left") { 41 | embed.addField(`${i + 1}. ${member}`, `**Coins**: ${res[i].coins}`); 42 | } else { 43 | embed.addField(`${i + 1}. ${member.user.username}`, `**Coins**: ${res[i].coins}`); 44 | } 45 | } 46 | } 47 | 48 | message.channel.send(embed); 49 | }) 50 | } 51 | module.exports.help = { 52 | name: "leaders" 53 | } -------------------------------------------------------------------------------- /Ep_08/commands/info/help.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "help", 6 | aliases: ["h"], 7 | category: "info", 8 | description: "Returns all commands, or one specific command info", 9 | usage: "[command | alias]", 10 | run: async (client, message, args) => { 11 | if (args[0]) { 12 | return getCMD(client, message, args[0]); 13 | } else { 14 | return getAll(client, message); 15 | } 16 | } 17 | } 18 | 19 | function getAll(client, message) { 20 | const embed = new RichEmbed() 21 | .setColor("RANDOM") 22 | 23 | const commands = (category) => { 24 | return client.commands 25 | .filter(cmd => cmd.category === category) 26 | .map(cmd => `- \`${cmd.name}\``) 27 | .join("\n"); 28 | } 29 | 30 | const info = client.categories 31 | .map(cat => stripIndents`**${cat[0].toUpperCase() + cat.slice(1)}** \n${commands(cat)}`) 32 | .reduce((string, category) => string + "\n" + category); 33 | 34 | return message.channel.send(embed.setDescription(info)); 35 | } 36 | 37 | function getCMD(client, message, input) { 38 | const embed = new RichEmbed() 39 | 40 | const cmd = client.commands.get(input.toLowerCase()) || client.commands.get(client.aliases.get(input.toLowerCase())); 41 | 42 | let info = `No information found for command **${input.toLowerCase()}**`; 43 | 44 | if (!cmd) { 45 | return message.channel.send(embed.setColor("RED").setDescription(info)); 46 | } 47 | 48 | if (cmd.name) info = `**Command name**: ${cmd.name}`; 49 | if (cmd.aliases) info += `\n**Aliases**: ${cmd.aliases.map(a => `\`${a}\``).join(", ")}`; 50 | if (cmd.description) info += `\n**Description**: ${cmd.description}`; 51 | if (cmd.usage) { 52 | info += `\n**Usage**: ${cmd.usage}`; 53 | embed.setFooter(`Syntax: <> = required, [] = optional`); 54 | } 55 | 56 | return message.channel.send(embed.setColor("GREEN").setDescription(info)); 57 | } -------------------------------------------------------------------------------- /Ep_09/commands/info/help.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "help", 6 | aliases: ["h"], 7 | category: "info", 8 | description: "Returns all commands, or one specific command info", 9 | usage: "[command | alias]", 10 | run: async (client, message, args) => { 11 | if (args[0]) { 12 | return getCMD(client, message, args[0]); 13 | } else { 14 | return getAll(client, message); 15 | } 16 | } 17 | } 18 | 19 | function getAll(client, message) { 20 | const embed = new RichEmbed() 21 | .setColor("RANDOM") 22 | 23 | const commands = (category) => { 24 | return client.commands 25 | .filter(cmd => cmd.category === category) 26 | .map(cmd => `- \`${cmd.name}\``) 27 | .join("\n"); 28 | } 29 | 30 | const info = client.categories 31 | .map(cat => stripIndents`**${cat[0].toUpperCase() + cat.slice(1)}** \n${commands(cat)}`) 32 | .reduce((string, category) => string + "\n" + category); 33 | 34 | return message.channel.send(embed.setDescription(info)); 35 | } 36 | 37 | function getCMD(client, message, input) { 38 | const embed = new RichEmbed() 39 | 40 | const cmd = client.commands.get(input.toLowerCase()) || client.commands.get(client.aliases.get(input.toLowerCase())); 41 | 42 | let info = `No information found for command **${input.toLowerCase()}**`; 43 | 44 | if (!cmd) { 45 | return message.channel.send(embed.setColor("RED").setDescription(info)); 46 | } 47 | 48 | if (cmd.name) info = `**Command name**: ${cmd.name}`; 49 | if (cmd.aliases) info += `\n**Aliases**: ${cmd.aliases.map(a => `\`${a}\``).join(", ")}`; 50 | if (cmd.description) info += `\n**Description**: ${cmd.description}`; 51 | if (cmd.usage) { 52 | info += `\n**Usage**: ${cmd.usage}`; 53 | embed.setFooter(`Syntax: <> = required, [] = optional`); 54 | } 55 | 56 | return message.channel.send(embed.setColor("GREEN").setDescription(info)); 57 | } -------------------------------------------------------------------------------- /Ep_10/commands/info/help.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js"); 2 | const { stripIndents } = require("common-tags"); 3 | 4 | module.exports = { 5 | name: "help", 6 | aliases: ["h"], 7 | category: "info", 8 | description: "Returns all commands, or one specific command info", 9 | usage: "[command | alias]", 10 | run: async (client, message, args) => { 11 | if (args[0]) { 12 | return getCMD(client, message, args[0]); 13 | } else { 14 | return getAll(client, message); 15 | } 16 | } 17 | } 18 | 19 | function getAll(client, message) { 20 | const embed = new RichEmbed() 21 | .setColor("RANDOM") 22 | 23 | const commands = (category) => { 24 | return client.commands 25 | .filter(cmd => cmd.category === category) 26 | .map(cmd => `- \`${cmd.name}\``) 27 | .join("\n"); 28 | } 29 | 30 | const info = client.categories 31 | .map(cat => stripIndents`**${cat[0].toUpperCase() + cat.slice(1)}** \n${commands(cat)}`) 32 | .reduce((string, category) => string + "\n" + category); 33 | 34 | return message.channel.send(embed.setDescription(info)); 35 | } 36 | 37 | function getCMD(client, message, input) { 38 | const embed = new RichEmbed() 39 | 40 | const cmd = client.commands.get(input.toLowerCase()) || client.commands.get(client.aliases.get(input.toLowerCase())); 41 | 42 | let info = `No information found for command **${input.toLowerCase()}**`; 43 | 44 | if (!cmd) { 45 | return message.channel.send(embed.setColor("RED").setDescription(info)); 46 | } 47 | 48 | if (cmd.name) info = `**Command name**: ${cmd.name}`; 49 | if (cmd.aliases) info += `\n**Aliases**: ${cmd.aliases.map(a => `\`${a}\``).join(", ")}`; 50 | if (cmd.description) info += `\n**Description**: ${cmd.description}`; 51 | if (cmd.usage) { 52 | info += `\n**Usage**: ${cmd.usage}`; 53 | embed.setFooter(`Syntax: <> = required, [] = optional`); 54 | } 55 | 56 | return message.channel.send(embed.setColor("GREEN").setDescription(info)); 57 | } --------------------------------------------------------------------------------