Node.js 无法添加角色Discord.js

Node.js 无法添加角色Discord.js,node.js,discord.js,Node.js,Discord.js,因此,我正在编写一个discord bot,其中有一个命令,该命令知道用户何时更改为自定义状态,如果特殊状态为“hello”,则bot将在特定通道中发送消息,并向用户添加角色。但是代码给了我一个错误 代码如下: bot.on('presenceUpdate', (oldMember, newMember) => { console.log(newMember.activities[0].state) let guildChannels = newMember.guild.c

因此,我正在编写一个discord bot,其中有一个命令,该命令知道用户何时更改为自定义状态,如果特殊状态为“hello”,则bot将在特定通道中发送消息,并向用户添加角色。但是代码给了我一个错误

代码如下:

bot.on('presenceUpdate', (oldMember, newMember) => {
    console.log(newMember.activities[0].state)
    let guildChannels = newMember.guild.channels;

    var Cha = guildChannels.cache.find(channel => channel.name === "general")

    if(newMember.activities[0].state === "hello") {
        Cha.send('hello !')
        .then(msg => {
            
            let GradeUser = bot.users.cache.find(user => user.id == newMember.userID);
            let role = msg.guild.roles.cache.find(r => r.id == "742423876004216883");
            GradeUser.roles.add('742423876004216883')

        })
        .catch(console.error)
    }

});
下面是错误:

TypeError: Cannot read property 'add' of undefined
    at C:\Users\Nathan\Desktop\Dev\Effectivement Bot\index.js:320:29   
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

我只想解决角色错误(添加角色)

您需要使用GuildMember对象,而不是用户对象

来自discord.js指南

用户和行会会员之间有什么区别? 许多用户对用户和行会成员之间的区别感到困惑。简单的答案是,用户代表全局Discord用户,而GuildMember代表特定服务器上的Discord用户。这意味着只有GuildMembers可以拥有权限、角色和昵称,例如,因为所有这些都是服务器绑定的信息,在用户所在的每台服务器上可能会有所不同


bot.users.cache.find()
替换为
msg.guild.members.cache.find()
您需要使用GuildMember对象,而不是用户对象

来自discord.js指南

用户和行会会员之间有什么区别? 许多用户对用户和行会成员之间的区别感到困惑。简单的答案是,用户代表全局Discord用户,而GuildMember代表特定服务器上的Discord用户。这意味着只有GuildMembers可以拥有权限、角色和昵称,例如,因为所有这些都是服务器绑定的信息,在用户所在的每台服务器上可能会有所不同


bot.users.cache.find()
替换为
msg.guild.members.cache.find()

没问题,很高兴我能帮忙没问题,很高兴我能帮忙