javascript - Discord.js 从特定公会中删除用户角色
问题描述
我正在尝试为 Discord 制作会员机器人。机器人将从 API 中检索用户 ID 和角色,并需要从用户中删除此角色。
首先,我得到了特定用户所在的公会:
const guild = client.guilds.cache.get('842361027562831872');
然后我通过名称找到角色:
let role = guild.roles.cache.find(role => role.name === "Sport");
if (!role) return;
然后我试图通过他的 ID 找到用户,并删除上述角色。但是用户始终未定义:
guild.members.cache.get(user.user).roles.remove(role);
通常,当我添加角色时,我使用消息对象,然后使用该消息中的公会,如下所示:
let role = message.guild.roles.cache.find(role => role.name === "Sport");
if (!role) return;
message.guild.members.cache.get(message.author.id).roles.add(role);
但是,我从 API 检索数据,所以我必须以另一种方式进行。
我的脚本的完整代码:
get('/expired', '', function (result) {
let users = result.data.users;
const guild = client.guilds.cache.get('842361027562831872');
users.forEach(user => {
let role = guild.roles.cache.find(role => role.name === user.role);
if (!role) return;
guild.members.cache.get(user.user).roles.remove(role);
});
});
解决方案
所以显然我不得不使用 fetch 方法,然后返回一个承诺。
guild.members.fetch(user.user).then(member => {
member.roles.remove(role);
member.send(`Your subscription for ${user.role} is expired.`);
}).catch(console.log);
然后我可以删除该用户的角色并向他/她发送直接消息。
推荐阅读
- maven - 所需的原型不存在
- scala - 将元组的值分配给Scala中的单个变量
- kotlin - Kotlin - 获取 Firebase Image DownloadUrl 返回“com.google.android.gms.tasks.zzu”
- php - Eloquent Eager Loading “此集合实例上不存在属性 [service_code]”
- javascript - 如何从 express-validators escape() 函数中排除字符
- c - 链接生成文件以使用 SDL 库
- apache - 重定向.htaccess 中没有特定用户代理的每个人?
- zxing.net - ZXing.NET EAN8Writer 获取校验和
- r - 使用脚本文件中的代码创建 R 包
- javascript - 通过 Ajax 调用使用 JSON 传递值