首页 > 解决方案 > 给消息作者一个角色 - Discord.js

问题描述

我开始制作命令,消息作者在输入命令后应该获得角色。但我总是收到“无法读取未定义的‘添加’属性”的错误。

代码:

case 'ticket':
                if(!message.channel.id === "757221433335218216") return;
                if (message.channel.id === "757221433335218216"){
                    var randomRole = Math.random()
                    const person = message.author
                   var roleCreator = message.guild.roles.create({
                    data: {
                        name: randomRole.toLocaleString(),
                        color: "#ff0000",
                        permissions: 0
                    }
                }).then(role => {
                    person.roles.add(roleCreator)
                });
                break;

标签: javascriptnode.jsdiscorddiscord.jsbots

解决方案


  1. 要使用.add(),您需要 GuildMember 而不是用户
  2. 要添加角色,您应该传递角色而不是角色创建者。
case 'ticket':
                if(!message.channel.id === "757221433335218216") return;
                if (message.channel.id === "757221433335218216"){
                    var randomRole = Math.random()
                    const person = message.member //<< Here, get the author as an GuildMember instead of getting author as an User
                   var roleCreator = message.guild.roles.create({
                    data: {
                        name: randomRole.toLocaleString(),
                        color: "#ff0000",
                        permissions: 0
                    }
                }).then(role => {
                    person.roles.add(role) // <<Here, passing role instead of roleceator
                });
                break;

推荐阅读