(Discord.js) 类型错误:无法读取未定义的属性“添加”

所以这是代码:


const mutedRole = message.guild.roles.cache.find(role => role.name === "Muted");

        

        if (!mutedUser) return message.channel.send()

        if (!message.author) return;

   

        if (!mutedRole) {

            message.guild.roles.create({

                data: {

                  name: 'Muted',

                  color: '#6C877C',

                  permissions: ["CREATE_INSTANT_INVITE", "VIEW_CHANNEL"],

                },

              })

                .catch(console.error);

        }

        mutedUser.roles.add(mutedRole).catch(console.error);


正如在代码中看到的那样,我添加了机器人将在角色不可用时扮演角色的部分。但是,它仍然认为该角色从未存在过。


在复制之前,我还写了这样的代码:


            if (!mutedRole) {

                guild.roles.create({

                    data: {

                      name: 'Muted',

                      color: '#6C877C',

                      permissions: ["CREATE_INSTANT_INVITE", "VIEW_CHANNEL"],

                    },

                  })

                    .catch(console.error);

            }

结果还是一样。我还将机器人的角色放在我的测试服务器上所有角色的最顶层列表中。谁能找出原因?


我目前正在使用 discord.js v12 和稳定版本的节点。


注意:完整代码在这里:https ://github.com/centralomd/breadbot/blob/master/commands/mute.js


德玛西亚99
浏览 66回答 1
1回答

RISEBY

错误来自第 14 行:const mutedUser = message.mentions.users.first() || message.guild.members.get(args[0])如果集合中没有提及,则message.mentions.users您正在尝试获取GuildMemberusing message.guild.members.get()。Discord JS v12 引入了管理器的概念,您将无法再直接使用 Collection 方法,例如在 和Collection.get()等数据结构Client.users上Guild.members。你必须改变它:const mutedUser = message.mentions.users.first() || message.guild.members.cache.get(args[0]) if (!mutedUser) return message.channel.send("Invalid user.");注意:message.mentions.users也会获得其他公会的用户。我建议你使用message.mentions.members.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript