Skip to content

Update entire episode 18 most recent major code. #20

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion episode-18-code/botconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
"red": "#b70000",
"orange": "#ff6a00",
"green": "#00ff26",
"purple": "#d604cf"
"purple": "#d604cf",
"token": "null"
}
20 changes: 9 additions & 11 deletions episode-18-code/commands/addrole.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 <user> <role>");
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);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't use .slice(22):

Copy link
Author

@theweekday-z theweekday-z Jan 22, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Figured i'd forget some issues already in the code. I'll triple check later.

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"
}
};
42 changes: 19 additions & 23 deletions episode-18-code/commands/ban.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 <user> <reason>");
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"
}
};
10 changes: 4 additions & 6 deletions episode-18-code/commands/botinfo.js
Original file line number Diff line number Diff line change
@@ -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"
}
};
24 changes: 15 additions & 9 deletions episode-18-code/commands/clear.js
Original file line number Diff line number Diff line change
Expand Up @@ -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"
};
39 changes: 20 additions & 19 deletions episode-18-code/commands/coins.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 <optionalUser>
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"
};
39 changes: 18 additions & 21 deletions episode-18-code/commands/kick.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 <user> <reason>");
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: <prefix>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"
}
};
47 changes: 25 additions & 22 deletions episode-18-code/commands/level.js
Original file line number Diff line number Diff line change
Expand Up @@ -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"
};
19 changes: 7 additions & 12 deletions episode-18-code/commands/pay.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,20 @@ 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] = {
coins: 0
};
}

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] = {
Expand All @@ -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"
}
};
42 changes: 19 additions & 23 deletions episode-18-code/commands/prefix.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 <desired prefix here>");

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 <desired prefix here>");

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"
};
Loading