首页 > 解决方案 > 错误 wtf UnMute 命令:无法读取未定义的属性“id”

问题描述

const { MessageEmbed } = require("discord.js");

module.exports = {
  name: 'unmute',
  async execute (client, message, args) {

  let user = message.guild.member(message.mentions.users.first());
  let muteRole = message.guild.roles.cache.find(r => r.name === 'Muted');

  if (!user.roles.cache.has(muteRole.id)) return message.reply("Is not Muted");
  user.roles.remove(muteRole.id);

     }
};

此代码在 2 周前工作,现在有一个错误,请帮助我!

标签: node.jsdiscorddiscord.js

解决方案


似乎没有任何静音角色。错误清楚地表明Cannot find 'id' of undefined,我看到 .id 使用的唯一地方是 Muted 角色。

只是说,您还需要说出控制台显示错误的位置。只是说,“这是错误”并没有帮助。

你可能想用这个:

const { MessageEmbed } = require("discord.js")

module.exports = {
    name: 'unmute',
    async execute(message, args) {
       var user_to_mute = message.mentions.user.first()
          .catch(err) {
               console.error(err)
               return message.reply("Could not find user in cache!")
          }
       var muted_role = message.guild.roles.cache.find(x => x.name == "Muted")
          .catch(err) {
               console.error(err)
               return message.reply("Could not find role in cache!")
          }
       if (user_to_mute.has(muted_role)) return message.reply("User isn't muted!")
       user_to_mute.removeRole(muted_role).catch(console.error)
    }
};

推荐阅读