[英]Discord.js remove role of user from a specific guild
我正在嘗試為 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);
通常,當我添加角色時,我會使用消息 Object ,然后使用該消息中的公會,如下所示:
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 方法,然后返回 promise。
guild.members.fetch(user.user).then(member => {
member.roles.remove(role);
member.send(`Your subscription for ${user.role} is expired.`);
}).catch(console.log);
然后我可以刪除該用戶的角色並向他/她發送直接消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.