diff --git a/index.js b/index.js index 2b9b506..e8e4d9f 100644 --- a/index.js +++ b/index.js @@ -83,6 +83,10 @@ client.on("ready", () => { }); client.on("message", async message => { + if (message.author.bot) { + return; + } + switch (message.content.toLowerCase()) { case `${prefix}aboutserver`: aboutServer(message); @@ -107,6 +111,84 @@ client.on("message", async message => { } }); +async function addRole(message) { + + + if (!message.content.split(" ")[1]) { + message.reply("role query must contain at least 3 characters!") + return; + } + + if (message.content.split(" ")[1].length < 3) { + message.reply("role query must contain at least 3 characters!") + return; + } + + const roles = message.guild.roles.cache.filter(role => role.name.toLowerCase().includes(message.content.split(" ")[1])); + let roleChannel; + + if (!message.content.split(" ")[2]) { + message.reply("user query must contain at least 3 characters!") + return; + } + + if (message.content.split(" ")[2].length < 3) { + message.reply("user query must contain at least 3 characters!") + return; + } + + if (roles.array().length < 1) { + message.reply("no roles found with that name!"); + return; + } + + const role = roles.array()[0]; + + const members = message.guild.members.cache.filter(member => { + if (member.nickname) { + return member.user.username.toLowerCase().includes(message.content.split(" ")[2].toLowerCase()) || member.nickname.toLowerCase().includes(message.content.split(" ")[1].toLowerCase()); + } else { + return member.user.username.toLowerCase().includes(message.content.split(" ")[2].toLowerCase()) + } + }); + + if (members.array().length < 1) { + message.reply("no members found with that name!"); + return; + } + + const member = members.array()[0]; + + if (member.roles.cache.has(role.id)) { + message.reply(`${member.user} already has that role!`); + return; + } + + const verificationEmbed = new Discord.MessageEmbed() + .setTitle(`Are you sure you want to give \`${message.author.tag}\` the **${role.name}** role?`) + .setDescription("React to this message to verify") + .setThumbnail(member.user.avatarURL()) + .setColor("fda172") + .setTimestamp(); + message.channel.send(verificationEmbed) + .then(verificationEmbed => { + verificationEmbed.react('👍'); + verificationEmbed.react('👎'); + const filter = (reaction, user) => { + return ['👍', '👎'].includes(reaction.emoji.name) && message.guild.members.cache.get(user.id).hasPermission('ADMINISTRATOR') && !user.bot; + }; + verificationEmbed.awaitReactions(filter, { max: 1, time: 600000000, errors: ['time'] }) + .then(userReaction => { + const reaction = userReaction.first(); + if (reaction.emoji.name === '👍') { + member.roles.add(role).then(message.reply(`\`${member.user}\` has been given the **${role}**`)).catch(() => { message.reply("It seems I don't have permissions to give that role, as it's likely above me :(") }); + } else { + message.reply("I guess you won't be getting that role!"); + } + }).catch(verificationEmbed => { verificationEmbed.edit("TIMEOUT") }); + }).catch(console.error); +} + async function ban(message) { if (!message.content.split(" ")[1]) {