const BaseCommand = require('../../utils/structures/BaseCommand'); const { MessageEmbed } = require('discord.js'); const StateManager = require('../../utils/StateManager'); module.exports = class AddRoleCommand extends BaseCommand { constructor() { super('add-role', 'moderation (Role Based)', []); } async run(client, message, args) { const modRole = await StateManager.connection.execute(`SELECT * FROM guildconfigurable WHERE guildId = ${message.guild.id}`); const moderation = modRole[0][0].modrole const channel = message.guild.channels.cache.find(ch => ch.id === modRole[0][0].modLogId) const toAdd = message.mentions.members.first(); const guildOwner = await StateManager.connection.execute(`SELECT * FROM guilds WHERE guildId = ${message.guild.id}`); const owner = guildOwner[0][0].guildOwnerId try { message.delete(); if (modRole === undefined) { message.channel.send(`Guild is not registered. Please talk to the bot developer to resolve this.`) } else { if (!toAdd) return message.channel.send(`Please specify a member to add a role to.`) if (modRole[0][0].modrole === `0`) { message.channel.send(`The server owner needs to set up a moderation role.`) console.log(2) } else if (!message.member.roles.cache.find(r => r.id === moderation) || !message.author.id === message.guild.owner.id) { console.log(3) message.channel.send(`You don't have permission to give roles. You need the moderation role.`) } else { if (!channel) { console.log(4) message.channel.send(`Moderation log channel is selected, but channel doesn't exists anymore. Please update it!`) } else { if (channel === `0`) { let roleName = args[0]; let { cache } = message.guild.roles; let role = cache.find(role => role.name.toLowerCase() === roleName.toLowerCase()); if (role) { if (toAdd.roles.cache.has(role.id)) { message.channel.send(`They already have this role.`); return; } else { toAdd.roles.add(role) } } else { message.channel.send(`Role not found!`); } } else { let roleName = args[0]; let { cache } = message.guild.roles; let role = cache.find(role => role.name.toLowerCase() === roleName.toLowerCase()); if (role) { if (toAdd.roles.cache.has(role.id)) { message.channel.send(`They already have this role.`); return; } else { toAdd.roles.add(role) const embed = new MessageEmbed() .setTitle(`Role Added!`) .setDescription(` **> Member:** ${toAdd} (${toAdd.id}) **> Role added:** ${roleName} (${role.id})`) .setFooter(process.env.FOOTER) .setColor(process.env.COLOR) await channel.send(embed) } } else { message.channel.send(`Role not found!`); } } } } } } catch (err) { console.log(err) } } }