Add role and rules command

This commit is contained in:
Vylpes 2020-11-04 19:58:54 +00:00
parent 58cf283777
commit d2493f9131
3 changed files with 195 additions and 0 deletions

87
commands/role.js Normal file
View file

@ -0,0 +1,87 @@
const { command } = require('vylbot-core');
const { MessageEmbed } = require('discord.js');
const embedColor = "0x3050ba";
class role extends command {
constructor() {
super("role");
super.description = "Toggles a role for the user to gain/remove";
super.category = "General";
super.usage = "[name]";
super.requiredConfigs = "assignable";
}
role(context) {
let roles = context.client.config.role.assignable;
let requestedRole = "";
if (context.arguments.length > 0) {
for (let i = 0; i < roles.length; i++) {
if (roles[i].toLowerCase() == context.arguments[0].toLowerCase()) {
requestedRole = roles[i];
}
}
if (requestedRole != "") {
let role = context.message.guild.roles.cache.find(r => r.name == requestedRole);
if (context.message.member.roles.cache.find(r => r.name == requestedRole)) {
context.message.member.roles.remove(role).then(() => {
let embed = new MessageEmbed()
.setColor(embedColor)
.setDescription(`Removed role: ${requestedRole}`);
context.message.channel.send(embed);
}).catch(err => {
console.error(err);
let errorEmbed = new MessageEmbed()
.setColor(embedColor)
.setDescription("An error occured. Please check logs");
context.message.channel.send(errorEmbed);
});
} else {
context.message.member.roles.add(role).then(() => {
let embed = new MessageEmbed()
.setColor(embedColor)
.setDescription(`Gave role: ${requestedRole}`);
context.message.channel.send(embed);
}).catch(err => {
console.error(err);
let errorEmbed = new MessageEmbed()
.setColor(embedColor)
.setDescription("An error occured. Please check logs");
context.message.channel.send(errorEmbed);
});
}
} else {
let embed = new MessageEmbed()
.setColor(embedColor)
.setDescription("This role does not exist, see assignable roles with the role command (no arguments)");
context.message.channel.send(embed);
}
} else {
let rolesString = `Do ${context.client.config.prefix}role <role> to get the role!\n`;
for (let i = 0; i < roles.length; i++) {
rolesString += `${roles[i]}\n`;
}
let embed = new MessageEmbed()
.setTitle("Roles")
.setColor(embedColor)
.setDescription(rolesString);
context.message.channel.send(embed);
}
}
}
module.exports = role;

60
commands/rules.js Normal file
View file

@ -0,0 +1,60 @@
const { command } = require('vylbot-core');
const { MessageEmbed } = require('discord.js');
const { existsSync, readFileSync } = require('fs');
const embedColor = "0x3050ba";
class rules extends command {
constructor() {
super("rules");
super.description = "Generates the rules embeds from the rules.txt file";
super.category = "Administration";
super.requiredConfigs = "adminrole";
super.requiredConfigs = "rulesfile";
}
rules(context) {
if (context.message.member.roles.cache.find(role => role.name == context.client.config.rules.adminrole)) {
if (existsSync(context.client.config.rules.rulesfile)) {
let rulesText = readFileSync(context.client.config.rules.rulesfile).toString();
rulesText = rulesText.split("> ");
for (let i = 0; i < rulesText.length; i++) {
if (rulesText[i].charAt(0) == '#') {
let embed = new MessageEmbed()
.setColor(embedColor)
.setImage(rulesText[i].substring(1));
context.message.channel.send(embed);
} else {
let rulesLines = rulesText[i].split("\n");
let rulesTitle = rulesLines[0];
let rulesDescription = rulesLines.slice(1).join("\n");
let embed = new MessageEmbed()
.setTitle(rulesTitle)
.setColor(embedColor)
.setDescription(rulesDescription);
context.message.channel.send(embed);
}
}
} else {
let errorEmbed = new MessageEmbed()
.setColor(embedColor)
.setDescription(`${context.client.config.rules.rulesfile} doesn't exist`);
context.message.channel.send(errorEmbed);
}
} else {
let errorEmbed = new MessageEmbed()
.setColor(embedColor)
.setDescription("You do not have permission to run this command");
context.message.channel.send(errorEmbed);
}
}
}
module.exports = rules;