Discord.js v13为什么我的tempmute命令不起作用



我为我的discord机器人制作了一个tempmute命令,它几乎可以工作。它有很多万无一失的措施,比如防止机器人静音,如果没有指定时间就不工作等等。我正在使用npm-ms包来处理静音持续时间(https://www.npmjs.com/package/ms)。当我没有指定输入胡言乱语的时间时,它会按预期工作,并用正确的消息回复。问题是,当我输入一个100%正确的命令时,它会响应,尽管我没有正确指定时间,而不是让用户静音一段时间。这是它的样子。有什么想法吗?我的代码在这里:

const ms = require('ms');
const { Permissions, MessageActionRow, UserFlags } = require('discord.js');
module.exports = {
name: 'tempmute',
description: "Temporarily mutes a user",
execute(message, args)
{
const target = message.mentions.members.first();
let muteRole = message.guild.roles.cache.find(role => role.name === "muted");
if(message.member.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS))
{
if(target)
{
let memberTarget = message.guild.members.cache.get(target.id);
if(target.id == 'myBotsID')
{
message.reply("I can't mute myself.")
}
else if(message.member == target)
{
message.reply("You can't mute yourself!")
}
else if(memberTarget.permissions.has(Permissions.FLAGS.MODERATE_MEMBERS))
{
message.channel.send(`<@${memberTarget.user.id}> has been muted for ${ms(ms(args[1]))}`);                
}
else 
{
if(!args[1]) 
{
return message.reply("Time not specified.")
}
else
{
let time = ms(args[1])
memberTarget.roles.add(muteRole.id); 
try {
message.reply("<@" + memberTarget.user.id + ">" + "has been muted for " + ms(ms(args[1])).catch(console.error))
setTimeout(function () {
memberTarget.roles.remove(muteRole.id);
}, time);
} catch (err) {
message.reply("Can't transform that into milliseconds `"+args[1]+"`")
return
}
}
}
}
else
{
message.reply("You have to mention a valid member of this server.")
}
}
else
{
message.reply("You can't use that.")
}
}
}

好吧,我想好了。这是有问题的代码:

try {
message.reply("<@" + memberTarget.user.id + ">" + "has been muted for " + ms(ms(args[1])).catch(console.error))
setTimeout(function () {
memberTarget.roles.remove(muteRole.id);
}, time);
} catch (err) {
message.reply("Can't transform that into milliseconds `"+args[1]+"`")
return
}

IDK为什么但是";。catch(console.error((";(这是一个剩余的代码,一开始就不应该存在(导致它的行为不同,也就是将所有事情都视为错误指定的时间,并返回相应的消息,而不是在指定的时间内静音成员。删除了代码的短部分后,一切都按预期进行。

最新更新