簡體   English   中英

Discord.js 從特定公會中刪除用戶角色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM