如何创建一个类似于我的静音命令的取消静音命令,它需要主持人或管理员的权限



我目前正在编写一个discord.js discordbot,我已经完成了基本的Kick,Ban&警告命令(所有这些命令都会登录到一个频道(,但现在我正在处理静音/取消静音命令,我确实创建了静音命令,但我现在遇到的问题是以类似的格式创建取消静音命令。

这是我的静音命令

if(command === "mute") {
let reason = args.slice(1).join(' ');
let user = message.mentions.users.first();
let logchannel = message.guild.channels.find('name', 'cgr420-logs');
if (!logchannel) return message.reply('I cannot find a logs channel');
if (!message.member.hasPermission("MUTE_MEMBERS")) return 
message.reply(":no_entry_sign: **Error:** You don't have the **Mute Members** 
permission!");
if (reason.length < 1) return message.reply('You must supply a reason for the 
mute.');
if (message.mentions.users.size < 1) return message.reply('You must mention 
someone to mute them.').catch(console.error);
if (!message.guild.member(user).bannable) return 
message.reply(`:no_entry_sign: I cannot mute that member`);
message.guild.member(user).ban();
const embed = new Discord.RichEmbed()
.setColor(0xFF0000)
.setTimestamp()
.addField('Action:', 'Mute')
.addField('User:', `${user.username}#${user.discriminator} (${user.id})`)
.addField('Moderator:', 
`${message.author.username}#${message.author.discriminator}`)
.addField('Reason', reason);
message.channel.send(`:hammer: Bippity boppity **MUTED**! I've logged the 
mute in the logs channel.`)
return client.channels.get(logchannel.id).send({embed});
};

我将感谢在正确的方向上提供任何形式的帮助。

提前感谢。

if(command === "unmute") {
let reason = args.slice(1).join(' ');
let user = message.mentions.users.first();
let logchannel = message.guild.channels.find('name', 'cgr420-logs');
let role = message.guild.roles.find('name', 'mute')
//CHANGE THIS ^^
if (!logchannel) return message.reply('I cannot find a logs channel');
if (!message.member.hasPermission("MUTE_MEMBERS")) return 
message.reply(":no_entry_sign: **Error:** You don't have the **Mute Members** 
permission!");
if (reason.length < 1) return message.reply('You must supply a reason for the mute.');
if (message.mentions.users.size < 1) return message.reply('You must mention 
someone to mute them.').catch(console.error);
if (!message.guild.member(user).roles.has(role)) return message.reply(`:no_entry_sign: I cannot unmute that member`);
message.guild.member(user).removeRole(role);
const embed = new Discord.RichEmbed()
.setColor("0xFF0000")
.setTimestamp()
.addField('Action:', 'Unmute')
.addField('User:', `${user.tag} (${user.id})`)
.addField('Moderator:', 
`${message.author.tag}`)
.addField('Reason', reason);
message.channel.send(`:hammer: Bippity boppity **UNMUTED**! I've logged the 
unmute in the logs channel.`)
return logchannel.send(embed);
};

你不必做client.channels.get(logchannel.id).send(),你可以做logchannel.send()

我看到你已经禁止了必须"取消静音"的成员,我已经创建了一个变量mute,它可以找到一个名为"静音"的角色,你可以将其更改为你想要的任何角色。该命令将从成员中删除mute角色。

const db = require('quick.db');
module.exports = {
config: {
name: "mute",
description: "Mutes a member in the discord!",
usage: "[name | nickname | mention | ID] <reason> (optional)",
},
run: async (bot, message, args) => {
try {
if (!message.member.hasPermission("MANAGE_GUILD")) return message.channel.send("**You Dont Have Permmissions To Mute Someone! - [MANAGE_GUILD]**");
if (!message.guild.me.hasPermission("MANAGE_GUILD")) return message.channel.send("**I Don't Have Permissions To Mute Someone! - [MANAGE_GUILD]**")
if (!args[0]) return message.channel.send("**Please Enter A User To Be Muted!**");
var mutee = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.members.cache.find(r => r.user.username.toLowerCase() === args[0].toLocaleLowerCase()) || message.guild.members.cache.find(ro => ro.displayName.toLowerCase() === args[0].toLocaleLowerCase());
if (!mutee) return message.channel.send("**Please Enter A Valid User To Be Muted!**");
if (mutee === message.member) return message.channel.send("**You Cannot Mute Yourself!**")
if (mutee.roles.highest.comparePositionTo(message.guild.me.roles.highest) >= 0) return message.channel.send('**Cannot Mute This User!**')
let reason = args.slice(1).join(" ");
if (mutee.user.bot) return message.channel.send("**Cannot Mute Bots!**");
const userRoles = mutee.roles.cache
.filter(r => r.id !== message.guild.id)
.map(r => r.id)
let muterole;
let dbmute = await db.fetch(`muterole_${message.guild.id}`);
let muteerole = message.guild.roles.cache.find(r => r.name === "muted")
if (!message.guild.roles.cache.has(dbmute)) {
muterole = muteerole
} else {
muterole = message.guild.roles.cache.get(dbmute)
}
if (!muterole) {
try {
muterole = await message.guild.roles.create({
data: {
name: "muted",
color: "#514f48",
permissions: []
}
})
message.guild.channels.cache.forEach(async (channel) => {
await channel.createOverwrite(muterole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false,
SPEAK: false,
CONNECT: false,
})
})
} catch (e) {
console.log(e);
}
};
if (mutee.roles.cache.has(muterole.id)) return message.channel.send("**User Is Already Muted!**")
db.set(`muteeid_${message.guild.id}_${mutee.id}`, userRoles)
try {
mutee.roles.set([muterole.id]).then(() => {
mutee.send(`**Hello, You Have Been Muted In ${message.guild.name} for - ${reason || "No Reason"}`).catch(() => null)
})
} catch {
mutee.roles.set([muterole.id])                               
}
if (reason) {
const sembed = new MessageEmbed()
.setColor("GREEN")
.setAuthor(message.guild.name, message.guild.iconURL())
.setDescription(`${mutee.user.username} was successfully muted for ${reason}`)
message.channel.send(sembed);
} else {
const sembed2 = new MessageEmbed()
.setColor("GREEN")
.setDescription(`${mutee.user.username} was successfully muted`)
message.channel.send(sembed2);
}

let channel = db.fetch(`modlog_${message.guild.id}`)
if (!channel) return;
let embed = new MessageEmbed()
.setColor('RED')
.setThumbnail(mutee.user.displayAvatarURL({ dynamic: true }))
.setAuthor(`${message.guild.name} Modlogs`, message.guild.iconURL())
.addField("**Moderation**", "mute")
.addField("**Mutee**", mutee.user.username)
.addField("**Moderator**", message.author.username)
.addField("**Reason**", `${reason || "**No Reason**"}`)
.addField("**Date**", message.createdAt.toLocaleString())
.setFooter(message.member.displayName, message.author.displayAvatarURL())
.setTimestamp()
var sChannel = message.guild.channels.cache.get(channel)
if (!sChannel) return;
sChannel.send(embed)
} catch {
return;
}
}
}```
i want for this anyone tell pls

最新更新