const Discord = require("discord.js"); const ms = require('ms'); const PREFIX = require('../../../config/config.json').PREFIX; module.exports = { name: "mute", description: "make the bot mute someone", usage: "&mute @EmanSza#5474 (reason)", examples: "&mute @EmanSza#5474 Breaking rule 2", requirements: "mod-log channel and Muted Role", cooldown: 10, execute: async function(client, message, args) { let modlog = message.guild.channels.cache.find(c => c.name === 'mod-log'); if (!modlog) message.guild.channels.create('mod-log', { type: 'text', permissionOverwrites: [ { id: message.author.id, deny: ['SEND_MESSAGES'], deny: ['READ_MESSAGES'] }, ], }) if(!message.member.hasPermission('MANAGE_MESSAGES')) return message.reply('You can\'t use that!'); let user = message.mentions.users.first(); if(!user) return message.reply('You didn\'t mention anyone!'); let member; try { member = await message.guild.members.fetch(user); } catch(err) { member = null; } if(!member) return message.reply('They aren\'t in the server!'); if(member.hasPermission('MANAGE_MESSAGES')) return message.reply('You cannot mute that person!'); let rawTime = args[1]; let time = ms(rawTime); if(!time) return message.reply('You didn\'t specify a time!'); let reason = args.splice(2).join(' '); if(!reason) return message.reply('You need to give a reason!'); let channel = message.guild.channels.cache.find(c => c.name === 'mod-log'); let log = new Discord.MessageEmbed() .setTitle('User Muted') .addField('User:', user, true) .addField('By:', message.author, true) .addField('Expires:', rawTime) .addField('Reason:', reason) if (!channel) return message.channel.send(log); channel.send(log); let embed = new Discord.MessageEmbed() .setTitle('You were muted!') .addField('Expires:', rawTime, true) .addField('Reason:', reason, true); try { user.send(embed); } catch(err) { console.warn(err); } let role = message.guild.roles.cache.find(r => r.name === 'Muted'); if(!role) message.guild.roles.create({ data: { name: 'Muted', color: 'Red', permissions: [0] }, }) member.roles.add(role); setTimeout(async() => { member.roles.remove(role); }, time); message.channel.send(`**${user}** has been muted by **${message.author}** for **${rawTime}**!`); } }