如何通过dm给用户添加角色

Posted

技术标签:

【中文标题】如何通过dm给用户添加角色【英文标题】:How to add a role to a user through dm 【发布时间】:2021-06-17 21:09:37 【问题描述】:

所以用户加入服务器并且必须对机器人进行 dm,然后机器人应该给他一个特定的角色(成员)。这是我的代码的一部分:

client.on('message', msg => 
    if (msg.channel.type == "dm") 
        user = msg.author.id;
        if (msg.content.startsWith("-bind")) 
            for (var i = 0; i < keys.length; i++) 
                if (msg.content.includes(keys[i]) && msg.content.includes(keys_perma[i])) 

                    keys[i] = user;

                    let server = client.guilds.cache.get('792890734139015218')
                    var memberRole = server.roles.cache.find(role => role.name === "Member")
                    let member = server.members.cache.get(msg.author.id)

                    member.roles.add(memberRole)

                    temp = 1;

                    msg.author.send("Key bound!");

                    break;
                

但是 member.roles.add(memberRole) 给了我错误:无法读取未定义的属性“角色”

我希望任何人都可以帮助我:)

【问题讨论】:

您是为特定服务器构建机器人还是公共机器人? 针对特定服务器 【参考方案1】:

member 正在返回未定义,最好获取成员而不是依赖缓存。对于这个例子,我将使用Promise#then() 来获取成员。

let member = server.members.fetch(msg.author.id).then(m => 
   m.roles.add(memberRole);
);

【讨论】:

以上是关于如何通过dm给用户添加角色的主要内容,如果未能解决你的问题,请参考以下文章

在新的 discordjs 中从 DM 向用户添加角色

Discord.js :将特定服务器上的角色添加到 DM 机器人的用户

如何通过 REST API 将 Keycloak 领域角色添加到组

Laravel 5.4 如何通过表单请求为用户分配角色?

如何通过 laravel 5.6 中的角色保护用户管理区域?

通过 Intent 将变量传递给活动总是相同的