不和谐的静音命令

时间:2021-04-08 21:28:04

标签: javascript discord discord.js mute

所以我试图发出一个命令来使人们静音和取消静音,他们在添加静音角色和删除静音角色方面工作得很好,但是当我将某人静音时,他们不会被静音,他们仍然可以说话,但我可以看到他们对他们有静音角色,我禁用了所有通话权限,当有人发送静音/取消静音命令而没有人名时,机器人会收到错误消息,说无法读取属性 'roles' of undefined 这里是代码:

else if (parts[0] === Prefix + 'mute') {
        const args = message.content.trim().split(/ +/g);
        const target = message.mentions.members.first();
        const mutedRole = message.guild.roles.cache.find(
            (role) => role.name === 'Muted'
           );
           
           // if there is no `Muted` role, send an error
           if (!mutedRole)
            return message.channel.send('There is no Muted role on this server');
        target.roles.add(mutedRole);
        console.log(User + ' used the command ".mute ' + target + '"')
    
    } else if (parts[0] === Prefix + 'unmute') {
        const target = message.mentions.members.first();
        const args = message.content.trim().split(/ +/g);
        const mutedRole = message.guild.roles.cache.find(
            (role) => role.name === 'Muted'
           );
           
           // if there is no `Muted` role, send an error
           if (!mutedRole)
            return message.channel.send('There is no Muted role on this server');
        target.roles.add(mutedRole); 
        setTimeout(() => {
            target.roles.remove(mutedRole); // remove the role
          }, ms(args[1]))
          console.log(User + ' used the command ".unmute ' + target + '"')

当我在控制台日志中看到它时,我看不到被静音/取消静音的人的名字,但我看到了 ID 号

1 个答案:

答案 0 :(得分:0)

对于“未正确静音”,这可能是 Discord 权限问题,因此我们无法在此处帮助您解决该问题。

对于没有人名的命令,您尝试执行 target.rolestarget 未定义,因此出现错误。您需要确保 target 不是未定义的,如果是,则向用户抛出错误(就像 mutedRole 一样)。