From a161c38acab9f5bfb8fadcfd4701590a32b190d8 Mon Sep 17 00:00:00 2001 From: Nef <33611774+Neeef@users.noreply.github.com> Date: Mon, 21 Jan 2019 15:03:24 -0500 Subject: [PATCH] Update entire episode 18 most recent major code. Hopefully I fixed all the deprecation errors, made things more efficient, and just overall improved the code. --- episode-18-code/botconfig.json | 3 +- episode-18-code/commands/addrole.js | 20 ++- episode-18-code/commands/ban.js | 42 +++-- episode-18-code/commands/botinfo.js | 10 +- episode-18-code/commands/clear.js | 24 +-- episode-18-code/commands/coins.js | 39 ++--- episode-18-code/commands/kick.js | 39 +++-- episode-18-code/commands/level.js | 47 +++--- episode-18-code/commands/pay.js | 19 +-- episode-18-code/commands/prefix.js | 42 +++-- episode-18-code/commands/removerole.js | 22 ++- episode-18-code/commands/report.js | 40 ++--- episode-18-code/commands/say.js | 11 +- episode-18-code/commands/serverinfo.js | 21 ++- episode-18-code/index.js | 211 +++++++++++++------------ episode-18-code/utils/errors.js | 31 ++-- 16 files changed, 297 insertions(+), 324 deletions(-) diff --git a/episode-18-code/botconfig.json b/episode-18-code/botconfig.json index b6ccc25..52baa81 100644 --- a/episode-18-code/botconfig.json +++ b/episode-18-code/botconfig.json @@ -3,5 +3,6 @@ "red": "#b70000", "orange": "#ff6a00", "green": "#00ff26", - "purple": "#d604cf" + "purple": "#d604cf", + "token": "null" } diff --git a/episode-18-code/commands/addrole.js b/episode-18-code/commands/addrole.js index f1296a6..75d3420 100644 --- a/episode-18-code/commands/addrole.js +++ b/episode-18-code/commands/addrole.js @@ -3,30 +3,28 @@ const errors = require("../utils/errors.js"); module.exports.run = async (bot, message, args) => { - //!addrole @andrew Dog Person + //!addrole @user Dog Person + if (!message.member.hasPermission("MANAGE_ROLES")) return errors.noPerms(message, "MANAGE_ROLES"); - if (args[0] == "help") { - message.reply("Usage: !addrole "); - return; - } - let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); + if (args[0] === "help") return message.reply("Usage: `!addrole @user role"); + const rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); if (!rMember) return errors.cantfindUser(message.channel); - let role = args.join(" ").slice(22); + const role = args.join(" ").slice(22); if (!role) return message.reply("Specify a role!"); - let gRole = message.guild.roles.find(`name`, role); + const gRole = message.guild.roles.find(r => r.name === role); if (!gRole) return message.reply("Couldn't find that role."); if (rMember.roles.has(gRole.id)) return message.reply("They already have that role."); await (rMember.addRole(gRole.id)); try { - await rMember.send(`Congrats, you have been given the role ${gRole.name}`) + await rMember.send(`Congrats, you have been given the role ${gRole.name}`); } catch (e) { console.log(e.stack); 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.`) } -} +}; module.exports.help = { name: "addrole" -} +}; diff --git a/episode-18-code/commands/ban.js b/episode-18-code/commands/ban.js index 6a7eb76..66b1f1d 100644 --- a/episode-18-code/commands/ban.js +++ b/episode-18-code/commands/ban.js @@ -3,34 +3,30 @@ const errors = require("../utils/errors.js"); module.exports.run = async (bot, message, args) => { message.delete(); - if(!message.member.hasPermission("BAN_MEMBERS")) return errors.noPerms(message, "BAN_MEMBERS"); - if(args[0] == "help"){ - message.reply("Usage: !ban "); - return; - } - let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); - if(!bUser) return errors.cantfindUser(message.channel); - if(bUser.id === bot.user.id) return errors.botuser(message); - let bReason = args.join(" ").slice(22); - if(!bReason) return errors.noReason(message.channel); - if(bUser.hasPermission("MANAGE_MESSAGES")) return errors.equalPerms(message, bUser, "MANAGE_MESSAGES"); + if (!message.member.hasPermission("BAN_MEMBERS")) return errors.noPerms(message, "BAN_MEMBERS"); + if (args[0] === "help") return message.reply("Usage: !ban @user reason"); + const bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); + if (!bUser) return errors.cantfindUser(message.channel); + if (bUser.id === bot.user.id) return errors.botuser(message); + const bReason = args.join(" ").slice(22); + if (!bReason) return errors.noReason(message.channel); + if (bUser.hasPermission("MANAGE_MESSAGES")) return errors.equalPerms(message, bUser, "MANAGE_MESSAGES"); - let banEmbed = new Discord.RichEmbed() - .setDescription("~Ban~") - .setColor("#bc0000") - .addField("Banned User", `${bUser} with ID ${bUser.id}`) - .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`) - .addField("Banned In", message.channel) - .addField("Time", message.createdAt) - .addField("Reason", bReason); + const banEmbed = new Discord.RichEmbed() + .setDescription("~Ban~") + .setColor("#bc0000") + .addField("Banned User", `${bUser} with ID ${bUser.id}`) + .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`) + .addField("Banned In", message.channel) + .addField("Time", message.createdAt) + .addField("Reason", bReason); - let incidentchannel = message.guild.channels.find(`name`, "incidents"); + const incidentchannel = message.guild.channels.find(c => c.name === "incidents"); if(!incidentchannel) return message.channel.send("Can't find incidents channel."); - message.guild.member(bUser).ban(bReason); incidentchannel.send(banEmbed); -} +}; module.exports.help = { name:"ban" -} +}; diff --git a/episode-18-code/commands/botinfo.js b/episode-18-code/commands/botinfo.js index b9ef1ad..504ffe5 100644 --- a/episode-18-code/commands/botinfo.js +++ b/episode-18-code/commands/botinfo.js @@ -1,17 +1,15 @@ const Discord = require("discord.js"); module.exports.run = async (bot, message, args) => { - let bicon = bot.user.displayAvatarURL; - let botembed = new Discord.RichEmbed() + const botembed = new Discord.RichEmbed() .setDescription("Bot Information") .setColor("#15f153") - .setThumbnail(bicon) + .setThumbnail(bot.user.displayAvatarURL) .addField("Bot Name", bot.user.username) .addField("Created On", bot.user.createdAt); - message.channel.send(botembed); -} +}; module.exports.help = { name:"botinfo" -} +}; diff --git a/episode-18-code/commands/clear.js b/episode-18-code/commands/clear.js index 7d4ac6d..4f6ef7b 100644 --- a/episode-18-code/commands/clear.js +++ b/episode-18-code/commands/clear.js @@ -2,14 +2,20 @@ const Discord = require("discord.js"); const errors = require("../utils/errors.js"); module.exports.run = async (bot, message, args) => { - - if(!message.member.hasPermission("MANAGE_MESSAGES")) return errors.noPerms(message, "MANAGE_MESSAGES"); - if(!args[0]) return message.channel.send("oof"); - message.channel.bulkDelete(args[0]).then(() => { - message.channel.send(`Cleared ${args[0]} messages.`).then(msg => msg.delete(5000)); - }); -} + if (!message.member.hasPermission("MANAGE_MESSAGES")) return errors.noPerms(message, "MANAGE_MESSAGES"); + if (!args[0] || isNaN(args[0])) return message.channel.send("Specify an amount of messages to remove"); + // Discord API limits us to 100 message bulkDelete limits + // We will collect messages to show exactly how much messages were deleted, not just the argument. + const collector = await message.channel.fetchMessages({limit: args[0]}); + if (args[0] >= 100) return message.reply("I can only delete less than 100 messages at once."); + await message.channel.bulkDelete(collector); + const send = message.reply(`Successfully deleted ${collector.size} messages!`); // send can now serve as a personal message object. + // Let's avoid callbacks because they are messy. + setTimeout(function() { + send.delete(); + }, 5000) +}; module.exports.help = { - name: "clear" -} + name: "clear" +}; diff --git a/episode-18-code/commands/coins.js b/episode-18-code/commands/coins.js index 6faff1a..983fac2 100644 --- a/episode-18-code/commands/coins.js +++ b/episode-18-code/commands/coins.js @@ -2,25 +2,26 @@ const Discord = require("discord.js"); let coins = require("../coins.json"); module.exports.run = async (bot, message, args) => { - //!coins - if(!coins[message.author.id]){ - coins[message.author.id] = { - coins: 0 - }; - } + //!coins + const mention = message.mentions.users.first(); + const user = message.author.id === mention.id ? mention.id : message.author.id; // Just define user as message.author.id if this serves any issue, don't forget to inform me as well. + if(!coins[user]){ + coins[user] = { + coins: 0 + }; + } + const uCoins = coins[user].coins; + const coinEmbed = new Discord.RichEmbed() + .setAuthor(message.author.username) + .setColor("#00FF00") + .addField("💸", uCoins); - let uCoins = coins[message.author.id].coins; - - - let coinEmbed = new Discord.RichEmbed() - .setAuthor(message.author.username) - .setColor("#00FF00") - .addField("💸", uCoins); - - message.channel.send(coinEmbed).then(msg => {msg.delete(5000)}); - -} + const send = message.channel.send(coinEmbed); + setTimeout(function() { + send.delete(); + }, 5000); +}; module.exports.help = { - name: "coins" -} + name: "coins" +}; diff --git a/episode-18-code/commands/kick.js b/episode-18-code/commands/kick.js index b70f844..b2ddee8 100644 --- a/episode-18-code/commands/kick.js +++ b/episode-18-code/commands/kick.js @@ -3,32 +3,29 @@ const errors = require("../utils/errors.js"); module.exports.run = async (bot, message, args) => { - if(!message.member.hasPermission("KICK_MEMBERS")) return errors.noPerms(message, "KICK_MEMBERS"); - if(args[0] == "help"){ - message.reply("Usage: !kick "); - return; - } - let kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); - if(!kUser) return errors.cantfindUser(message.channel); + if (!message.member.hasPermission("KICK_MEMBERS")) return errors.noPerms(message, "KICK_MEMBERS"); + if (args[0] === "help") return message.reply("Usage: kick @user reason"); + const kUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); + if (!kUser) return errors.cantfindUser(message.channel); let kReason = args.join(" ").slice(22); - if(kUser.hasPermission("MANAGE_MESSAGES")) return errors.equalPerms(message, kUser, "MANAGE_MESSAGES"); + if (kUser.hasPermission("MANAGE_MESSAGES")) return errors.equalPerms(message, kUser, "MANAGE_MESSAGES"); + if (!kReason) kReason = "Not provided."; + const kickEmbed = new Discord.RichEmbed() + .setDescription("~Kick~") + .setColor("#e56b00") + .addField("Kicked User", `${kUser} with ID ${kUser.id}`) + .addField("Kicked By", `<@${message.author.id}> with ID ${message.author.id}`) + .addField("Kicked In", message.channel) + .addField("Tiime", message.createdAt) + .addField("Reason", kReason); - let kickEmbed = new Discord.RichEmbed() - .setDescription("~Kick~") - .setColor("#e56b00") - .addField("Kicked User", `${kUser} with ID ${kUser.id}`) - .addField("Kicked By", `<@${message.author.id}> with ID ${message.author.id}`) - .addField("Kicked In", message.channel) - .addField("Tiime", message.createdAt) - .addField("Reason", kReason); - - let kickChannel = message.guild.channels.find(`name`, "incidents"); - if(!kickChannel) return message.channel.send("Can't find incidents channel."); + const kickChannel = message.guild.channels.find(`name`, "incidents"); + if (!kickChannel) return message.channel.send("Can't find incidents channel."); message.guild.member(kUser).kick(kReason); kickChannel.send(kickEmbed); -} +}; module.exports.help = { name:"kick" -} +}; diff --git a/episode-18-code/commands/level.js b/episode-18-code/commands/level.js index 556e20c..54566fa 100644 --- a/episode-18-code/commands/level.js +++ b/episode-18-code/commands/level.js @@ -4,29 +4,32 @@ let purple = botconfig.purple; let xp = require("../xp.json"); module.exports.run = async (bot, message, args) => { + const mention = message.mentions.users.first(); + const user = message.author.id === mention.id ? mention.id : message.author.id; // Just define user as message.author.id if this serves any issue, don't forget to inform me as well. + if (!xp[user]){ + xp[user] = { + xp: 0, + level: 1 + }; + } + const curxp = xp[user].xp; + const curlvl = xp[user].level; + const nxtLvlXp = curlvl * 300; + const difference = nxtLvlXp - curxp; - if(!xp[message.author.id]){ - xp[message.author.id] = { - xp: 0, - level: 1 - }; -} - let curxp = xp[message.author.id].xp; - let curlvl = xp[message.author.id].level; - let nxtLvlXp = curlvl * 300; - let difference = nxtLvlXp - curxp; + const lvlEmbed = new Discord.RichEmbed() + .setAuthor(message.author.username) + .setColor(purple) + .addField("Level", curlvl, true) + .addField("XP", curxp, true) + .setFooter(`${difference} XP til level up`, message.author.displayAvatarURL); - let lvlEmbed = new Discord.RichEmbed() - .setAuthor(message.author.username) - .setColor(purple) - .addField("Level", curlvl, true) - .addField("XP", curxp, true) - .setFooter(`${difference} XP til level up`, message.author.displayAvatarURL); - - message.channel.send(lvlEmbed).then(msg => {msg.delete(5000)}); - -} + const send = message.channel.send(lvlEmbed); + setTimeout(function() { + send.delete(); + }, 5000); +}; module.exports.help = { - name: "level" -} + name: "level" +}; diff --git a/episode-18-code/commands/pay.js b/episode-18-code/commands/pay.js index 64ef89d..bc041fb 100644 --- a/episode-18-code/commands/pay.js +++ b/episode-18-code/commands/pay.js @@ -3,13 +3,11 @@ const fs = require("fs"); let coins = require("../coins.json"); module.exports.run = async (bot, message, args) => { - //!pay @isatisfied 59345 + //!pay @user 2345 - if(!coins[message.author.id]){ - return message.reply("You don't have any coins!") - } + if(!coins[message.author.id]) return message.reply("You don't have any coins!"); - let pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); + const pUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); if(!coins[pUser.id]){ coins[pUser.id] = { @@ -17,9 +15,8 @@ module.exports.run = async (bot, message, args) => { }; } - let pCoins = coins[pUser.id].coins; - let sCoins = coins[message.author.id].coins; - + const pCoins = coins[pUser.id].coins; + const sCoins = coins[message.author.id].coins; if(sCoins < args[0]) return message.reply("Not enough coins there!"); coins[message.author.id] = { @@ -35,10 +32,8 @@ module.exports.run = async (bot, message, args) => { fs.writeFile("./coins.json", JSON.stringify(coins), (err) => { if(err) cosole.log(err) }); - - -} +}; module.exports.help = { name: "pay" -} +}; diff --git a/episode-18-code/commands/prefix.js b/episode-18-code/commands/prefix.js index 8ece679..50d0b30 100644 --- a/episode-18-code/commands/prefix.js +++ b/episode-18-code/commands/prefix.js @@ -3,28 +3,24 @@ const fs = require("fs"); module.exports.run = async (bot, message, args) => { - if(!message.member.hasPermission("MANAGE_SERVER")) return message.reply("No no no."); - if(!args[0] || args[0 == "help"]) return message.reply("Usage: !prefix "); - - let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8")); - - prefixes[message.guild.id] = { - prefixes: args[0] - }; - - fs.writeFile("./prefixes.json", JSON.stringify(prefixes), (err) => { - if (err) console.log(err) - }); - - let sEmbed = new Discord.RichEmbed() - .setColor("#FF9900") - .setTitle("Prefix Set!") - .setDescription(`Set to ${args[0]}`); - - message.channel.send(sEmbed); - -} + if (!message.member.hasPermission("MANAGE_SERVER")) return message.reply("No no no."); + if (!args[0] || args[0 === "help"]) return message.reply("Usage: !prefix "); + + const prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8")); + + prefixes[message.guild.id] = { + prefixes: args[0] + }; + fs.writeFile("./prefixes.json", JSON.stringify(prefixes), (err) => { + if (err) console.log(err) + }); + const sEmbed = new Discord.RichEmbed() + .setColor("#FF9900") + .setTitle("Prefix Set!") + .setDescription(`Set to ${args[0]}`); + message.channel.send(sEmbed); +}; module.exports.help = { - name: "prefix" -} + name: "prefix" +}; diff --git a/episode-18-code/commands/removerole.js b/episode-18-code/commands/removerole.js index ac9beef..8071b8b 100644 --- a/episode-18-code/commands/removerole.js +++ b/episode-18-code/commands/removerole.js @@ -4,16 +4,14 @@ const errors = require("../utils/errors.js"); module.exports.run = async (bot, message, args) => { if (!message.member.hasPermission("MANAGE_ROLES")) return errors.noPerms(message, "MANAGE_ROLES"); - if(args[0] == "help"){ - message.reply("Usage: !removerole "); - return; - } - let rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); - if(!rMember) return message.reply("Couldn't find that user, yo."); - let role = args.join(" ").slice(22); - if(!role) return message.reply("Specify a role!"); - let gRole = message.guild.roles.find(`name`, role); - if(!gRole) return message.reply("Couldn't find that role."); + if(args[0] === "help") return message.reply("Usage: !removerole "); + + const rMember = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]); + if (!rMember) return message.reply("Couldn't find that user, yo."); + const role = args.join(" ").slice(22); + if (!role) return message.reply("Specify a role!"); + const gRole = message.guild.roles.find(r => r.name === role); + if (!gRole) return message.reply("Couldn't find that role."); if(!rMember.roles.has(gRole.id)) return message.reply("They don't have that role."); await(rMember.removeRole(gRole.id)); @@ -23,8 +21,8 @@ module.exports.run = async (bot, message, args) => { }catch(e){ message.channel.send(`RIP to <@${rMember.id}>, We removed ${gRole.name} from them. We tried to DM them, but their DMs are locked.`) } -} +}; module.exports.help = { name: "removerole" -} +}; diff --git a/episode-18-code/commands/report.js b/episode-18-code/commands/report.js index a56c4fb..7641156 100644 --- a/episode-18-code/commands/report.js +++ b/episode-18-code/commands/report.js @@ -1,36 +1,30 @@ const Discord = require("discord.js"); -const botconfig = require("../botconfig.json"); -const red = botconfig.red; -const green = botconfig.green; -const orange = botconfig.orange; +const { orange } = require("../botconfig.json"); const errors = require("../utils/errors.js"); module.exports.run = async (bot, message, args) => { message.delete(); - if(args[0] == "help"){ - message.reply("Usage: !report "); - return; - } - let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); - if(!rUser) return errors.cantfindUser(message.channel); + if(args[0] === "help") return message.reply("Usage: !report "); + + const rUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])); + if (!rUser) return errors.cantfindUser(message.channel); let rreason = args.join(" ").slice(22); - if(!rreason) return errors.noReason(message.channel); + if(!rreason) rreason = "None provided."; - let reportEmbed = new Discord.RichEmbed() - .setDescription("Reports") - .setColor(orange) - .addField("Reported User", `${rUser} with ID: ${rUser.id}`) - .addField("Reported By", `${message.author} with ID: ${message.author.id}`) - .addField("Channel", message.channel) - .addField("Time", message.createdAt) - .addField("Reason", rreason); + const reportEmbed = new Discord.RichEmbed() + .setDescription("Reports") + .setColor(orange) + .addField("Reported User", `${rUser} with ID: ${rUser.id}`) + .addField("Reported By", `${message.author} with ID: ${message.author.id}`) + .addField("Channel", message.channel) + .addField("Time", message.createdAt) + .addField("Reason", rreason); - let reportschannel = message.guild.channels.find(`name`, "reports"); + const reportschannel = message.guild.channels.find(c => c.name === "reports"); if(!reportschannel) return message.channel.send("Couldn't find reports channel."); reportschannel.send(reportEmbed); - -} +}; module.exports.help = { name: "report" -} +}; diff --git a/episode-18-code/commands/say.js b/episode-18-code/commands/say.js index c057690..4ee9128 100644 --- a/episode-18-code/commands/say.js +++ b/episode-18-code/commands/say.js @@ -1,14 +1,11 @@ -const Discord = require("discord.js"); const errors = require("../utils/errors.js"); module.exports.run = async (bot, message, args) => { - message.delete(); - if(!message.member.hasPermission("MANAGE_MESSAGES")) return errors.noPerms(message, "MANAGE_MESSAGES"); - let botmessage = args.join(" "); - message.channel.send(botmessage); -} + if (!message.member.hasPermission("MANAGE_MESSAGES")) return errors.noPerms(message, "MANAGE_MESSAGES"); + message.channel.send(args.join(" ")); +}; module.exports.help = { name: "say" -} +}; diff --git a/episode-18-code/commands/serverinfo.js b/episode-18-code/commands/serverinfo.js index 7fb8f45..aba7bae 100644 --- a/episode-18-code/commands/serverinfo.js +++ b/episode-18-code/commands/serverinfo.js @@ -1,19 +1,18 @@ const Discord = require("discord.js"); module.exports.run = async (bot, message, args) => { - let sicon = message.guild.iconURL; - let serverembed = new Discord.RichEmbed() - .setDescription("Server Information") - .setColor("#15f153") - .setThumbnail(sicon) - .addField("Server Name", message.guild.name) - .addField("Created On", message.guild.createdAt) - .addField("You Joined", message.member.joinedAt) - .addField("Total Members", message.guild.memberCount); + const serverembed = new Discord.RichEmbed() + .setDescription("Server Information") + .setColor("#15f153") + .setThumbnail(message.guild.iconURL) + .addField("Server Name", message.guild.name) + .addField("Created On", message.guild.createdAt) + .addField("You Joined", message.member.joinedAt) + .addField("Total Members", message.guild.memberCount); message.channel.send(serverembed); -} +}; module.exports.help = { name:"serverinfo" -} +}; diff --git a/episode-18-code/index.js b/episode-18-code/index.js index fdb2581..22c20ac 100644 --- a/episode-18-code/index.js +++ b/episode-18-code/index.js @@ -1,125 +1,126 @@ const botconfig = require("./botconfig.json"); -const tokenfile = require("./token.json"); const Discord = require("discord.js"); const fs = require("fs"); const bot = new Discord.Client(); bot.commands = new Discord.Collection(); -let coins = require("./coins.json"); -let xp = require("./xp.json"); -let purple = botconfig.purple; -let cooldown = new Set(); +const coins = require("./coins.json"); +const xp = require("./xp.json"); +const purple = botconfig.purple; +const cooldown = new Set(); let cdseconds = 5; fs.readdir("./commands/", (err, files) => { - if(err) console.log(err); - let jsfile = files.filter(f => f.split(".").pop() === "js"); - if(jsfile.length <= 0){ - console.log("Couldn't find commands."); - return; - } - - jsfile.forEach((f, i) =>{ - let props = require(`./commands/${f}`); - console.log(`${f} loaded!`); - bot.commands.set(props.help.name, props); - }); + if(err) console.log(err); + const jsfile = files.filter(f => f.split(".").pop() === "js"); + if(jsfile.length <= 0){ + console.log("Couldn't find commands."); + return; + } + + jsfile.forEach((f, i) =>{ + const props = require(`./commands/${f}`); + console.log(`${f} loaded!`); + bot.commands.set(props.help.name, props); + }); }); bot.on("ready", async () => { - - console.log(`${bot.user.username} is online on ${bot.guilds.size} servers!`); - bot.user.setActivity("tutorials on TSC", {type: "WATCHING"}); - + console.log(`${bot.user.username} is online on ${bot.guilds.size} servers!`); + bot.user.setActivity("tutorials on TSC", {type: "WATCHING"}); }); bot.on("message", async message => { - if(message.author.bot) return; - if(message.channel.type === "dm") return; - - let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8")); - if(!prefixes[message.guild.id]){ - prefixes[message.guild.id] = { - prefixes: botconfig.prefix - }; - } - - if(!coins[message.author.id]){ - coins[message.author.id] = { - coins: 0 - }; - } - - let coinAmt = Math.floor(Math.random() * 15) + 1; - let baseAmt = Math.floor(Math.random() * 15) + 1; - console.log(`${coinAmt} ; ${baseAmt}`); - - if(coinAmt === baseAmt){ - coins[message.author.id] = { - coins: coins[message.author.id].coins + coinAmt - }; - fs.writeFile("./coins.json", JSON.stringify(coins), (err) => { - if (err) console.log(err) - }); - let coinEmbed = new Discord.RichEmbed() - .setAuthor(message.author.username) - .setColor("#0000FF") - .addField("💸", `${coinAmt} coins added!`); - - message.channel.send(coinEmbed).then(msg => {msg.delete(5000)}); - } - - let xpAdd = Math.floor(Math.random() * 7) + 8; - console.log(xpAdd); - - if(!xp[message.author.id]){ - xp[message.author.id] = { - xp: 0, - level: 1 - }; - } - - - let curxp = xp[message.author.id].xp; - let curlvl = xp[message.author.id].level; - let nxtLvl = xp[message.author.id].level * 300; - xp[message.author.id].xp = curxp + xpAdd; - if(nxtLvl <= xp[message.author.id].xp){ - xp[message.author.id].level = curlvl + 1; - let lvlup = new Discord.RichEmbed() - .setTitle("Level Up!") - .setColor(purple) - .addField("New Level", curlvl + 1); - - message.channel.send(lvlup).then(msg => {msg.delete(5000)}); - } - fs.writeFile("./xp.json", JSON.stringify(xp), (err) => { - if(err) console.log(err) - }); - let prefix = prefixes[message.guild.id].prefixes; - if(!message.content.startsWith(prefix)) return; - if(cooldown.has(message.author.id)){ - message.delete(); - return message.reply("You have to wait 5 seconds between commands.") - } - if(!message.member.hasPermission("ADMINISTRATOR")){ - cooldown.add(message.author.id); - } - - - let messageArray = message.content.split(" "); - let cmd = messageArray[0]; - let args = messageArray.slice(1); - - let commandfile = bot.commands.get(cmd.slice(prefix.length)); - if(commandfile) commandfile.run(bot,message,args); - - setTimeout(() => { - cooldown.delete(message.author.id) - }, cdseconds * 1000) + if(message.author.bot) return; + if(message.channel.type === "dm") return; + + let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8")); + if(!prefixes[message.guild.id]){ + prefixes[message.guild.id] = { + prefixes: botconfig.prefix + }; + } + + if(!coins[message.author.id]){ + coins[message.author.id] = { + coins: 0 + }; + } + + let coinAmt = Math.floor(Math.random() * 15) + 1; + let baseAmt = Math.floor(Math.random() * 15) + 1; + console.log(`${coinAmt} ; ${baseAmt}`); + + if(coinAmt === baseAmt) { + coins[message.author.id] = { + coins: coins[message.author.id].coins + coinAmt + }; + // Save data to JSON (NOT SUGGESTED TO USE JSON, IT IS PRONE TO CORRUPTION!!!) + fs.writeFile("./coins.json", JSON.stringify(coins), (err) => { + if (err) console.log(err) + }); + + const coinEmbed = new Discord.RichEmbed() + .setAuthor(message.author.username) + .setColor("#0000FF") + .addField("💸", `${coinAmt} coins added!`); + + message.channel.send(coinEmbed).then(msg => {msg.delete(5000)}); + } + + const xpAdd = Math.floor(Math.random() * 7) + 8; + console.log(xpAdd); + + if (!xp[message.author.id]){ + xp[message.author.id] = { + xp: 0, + level: 1 + }; + } + + + const curxp = xp[message.author.id].xp; + const curlvl = xp[message.author.id].level; + const nxtLvl = xp[message.author.id].level * 300; + xp[message.author.id].xp = curxp + xpAdd; + if(nxtLvl <= xp[message.author.id].xp){ + xp[message.author.id].level = curlvl + 1; + const lvlup = new Discord.RichEmbed() + .setTitle("Level Up!") + .setColor(purple) + .addField("New Level", curlvl + 1); + + message.channel.send(lvlup).then(msg => {msg.delete(5000)}); + } + + fs.writeFile("./xp.json", JSON.stringify(xp), (err) => { + if (err) console.log(err) + }); + + const prefix = prefixes[message.guild.id].prefixes; + if (!message.content.startsWith(prefix)) return; + if (cooldown.has(message.author.id)) { + message.delete(); + return message.reply("You have to wait 5 seconds between commands."); + } + if (!message.member.hasPermission("ADMINISTRATOR")){ + cooldown.add(message.author.id); + } + + + const messageArray = message.content.split(" "); + const cmd = messageArray[0]; + const args = messageArray.slice(1); + + const commandfile = bot.commands.get(cmd.slice(prefix.length)); + if (commandfile) commandfile.run(bot,message,args); + + setTimeout(() => { + cooldown.delete(message.author.id) + }, cdseconds * 1000) }); -bot.login(tokenfile.token); +bot.login(botconfig.token); diff --git a/episode-18-code/utils/errors.js b/episode-18-code/utils/errors.js index e3c76c4..d9069d4 100644 --- a/episode-18-code/utils/errors.js +++ b/episode-18-code/utils/errors.js @@ -1,52 +1,45 @@ const Discord = require("discord.js"); -const fs = require("fs"); -let config = require("../botconfig.json"); +const fs = require("file-system"); +const config = require("../botconfig.json"); module.exports.noPerms = (message, perm) => { - let embed = new Discord.RichEmbed() + const embed = new Discord.RichEmbed() .setAuthor(message.author.username) .setTitle("Insufficient Permission") .setColor(config.red) .addField("Permission needed", perm); - message.channel.send(embed).then(m => m.delete(5000)); -} +}; module.exports.equalPerms = (message, user, perms) => { - - let embed = new Discord.RichEmbed() + const embed = new Discord.RichEmbed() .setAuthor(message.author.username) .setColor(config.red) .setTitle("Error") .addField(`${user} has perms`, perms); - message.channel.send(embed).then(m => m.delete(5000)); - -} +}; module.exports.botuser = (message) => { - let embed = new Discord.RichEmbed() + const embed = new Discord.RichEmbed() .setTitle("Error") .setDescription("You cannot ban a bot.") .setColor(config.red); - message.channel.send(embed).then(m => m.delete(5000)); -} +}; module.exports.cantfindUser = (channel) => { - let embed = new Discord.RichEmbed() + const embed = new Discord.RichEmbed() .setTitle("Error") .setDescription("Could not find that user.") .setColor(config.red); - channel.send(embed).then(m => m.delete(5000)); -} +}; module.exports.noReason = (channel) => { - let embed = new Discord.RichEmbed() + const embed = new Discord.RichEmbed() .setTitle("Error") .setDescription("Please supply a reason.") .setColor(config.red); - channel.send(embed).then(m => m.delete(5000)); -} +};