所以我做了一个静音和取消静音命令,静音的效果很好,我只需要添加一些东西,取消静音的也很好用,但是当没有提到的人(例如 q!unmute 而不是 q!unmute [ user]) 机器人崩溃了,我尝试了 catch 和那些东西,但我真的不明白它们是如何工作的,我对 js 很陌生,这是应该发送“你必须提及用户”错误的字符串:
if (!member) return message.channel.send("You have to mention a valid member");
这是剩下的代码:
module.exports = {
name: 'unmute',
description: 'unmutes a muted member',
execute(message, args, Discord) {
if (message.member.hasPermission('MANAGE_ROLES')) {
const role = message.guild.roles.cache.find(role => role.name === 'Muted');
const member = message.mentions.members.first();
var unmuteChannel = message.guild.channels.cache.find(channel => channel.name.includes("modlogs"));
const unmuteEmbed = new Discord.MessageEmbed()
.addField("Unmuted user", member)
.setFooter(`Unmuted by ${message.author.tag}`)
.setTimestamp();
member.roles.remove(role);
message.channel.send(`${member} Has Been Unmuted`);
unmuteChannel.send(unmuteEmbed);
if (!member) return message.channel.send("You have to mention a valid member");
}
}
}
希望能帮到你
答案 0 :(得分:2)
在您的代码中,您正在检查提到的用户是否为空,但它位于函数的末尾。我认为在获得值之后放置 if 应该可以:
module.exports = {
name: 'unmute',
description: 'unmutes a muted member',
execute(message, args, Discord) {
if (message.member.hasPermission('MANAGE_ROLES')) {
const role = message.guild.roles.cache.find(role => role.name === 'Muted');
const member = message.mentions.members.first();
if (!member) return message.channel.send("You have to mention a valid member");
var unmuteChannel = message.guild.channels.cache.find(channel => channel.name.includes("modlogs"));
const unmuteEmbed = new Discord.MessageEmbed()
.addField("Unmuted user", member)
.setFooter(`Unmuted by ${message.author.tag}`)
.setTimestamp();
member.roles.remove(role);
message.channel.send(`${member} Has Been Unmuted`);
unmuteChannel.send(unmuteEmbed);
}
}
}
答案 1 :(得分:0)
移动
if (!member) return message.channel.send("You have to mention a valid member");
在您定义成员的下方。
const member = message.mentions.members.first();