node.js - Discord.js 在 guildMemberAdd 上添加角色并不总是有效
问题描述
我遇到了 Discord.js v12 和 Node.js v15.7.0 的问题。
这是代码:
client.on('guildMemberAdd', member => {
var i = "336796839582105600";
var role = member.guild.roles.cache.find(r => r.id === i);
member.roles.add(role).then(console.log('Role added: ' + member.id));
});
该代码似乎在我用于开发的不和谐服务器上完美运行。但是当在拥有超过 2500k 用户的不和谐服务器上用于生产时,代码被执行,审计日志显示机器人按预期添加了角色,但是当你查看用户配置文件时,没有角色出现,直到有人授予手动分配给新用户的角色。
这种行为并不总是发生,有时会添加角色,有时不会。
机器人配置的特权网关意图都已启用(服务器成员意图和存在意图)。
解决方案
首先,我建议你使用 Node 的稳定版本(即 14)它可能会导致许多意想不到的事情,除非你知道你在用 Node v15 做什么。
您无需获取角色对象即可将角色添加到新成员。
您可以简单地使用角色 ID,而我在使用角色 ID 添加角色时从未遇到任何问题。
member.roles.add("ROLE_ID").then(console.log('Role added: ' + member.id));
推荐阅读
- jquery - JQM is messing up look and function of select combobox
- html - CSS 文件:我想从 .aspx 页面读取 css 文件
- webserver - 如何在 app-v 中对 nodejs 或 kestrel 等网络服务器进行排序?
- machine-learning - 按提交 ID 过滤 mlflow 运行
- sql - 如何为 sql server 中的一列设置自定义模板?
- apache-kafka - 如何在 Kafka 中启动连接器时克服 IllegalAccessError
- kotlin - 试图在 gradle kotlindsl 中包含 swagger-codegen
- php - 无法检测到 sql 语法错误
- nativescript - 如何正确切换活动?
- javascript - Angular 上的 Chart.js 与 @types/chart.js