簡體   English   中英

Discord.js:如何通過 Discord 用戶 ID 查找服務器成員(在 Discord 中分配角色)?

[英]Discord.js: How to find server member (to assign roles in Discord) by Discord User-ID?

我正在構建一個 Web 應用程序,該應用程序對具有不一致 oauth 的用戶進行身份驗證。 當用戶在 laravel 應用程序中注冊時,來自不和諧 oauth 的給定數據將保存到 sql 數據庫中。 在此數據中是用戶名、鑒別器和唯一的 discord 用戶 ID。 我現在有一個單獨的 node.js 服務器運行 discord.js 和 forms 一個機器人。 我希望這個機器人在 discord 服務器上為經過身份驗證的用戶分配“注冊”角色。 目前,我只能將角色分配給通過訪問 discord.js 消息 object 向服務器上的機器人發送消息的用戶,如下所示。

bot.on("messageCreate", (message) => {
    if (message.content.toLowerCase().startsWith("!role add")) {
        let member = message.mentions.members.first();
        let role = message.mentions.roles.first()
        member.roles.add(role)
    }
}) //this works. But how can a member be found only using the Discord User ID?

這是問題:Discord.js 中是否有辦法通過提供 discord 用戶 ID(由 OAuth 提供並保存到我的數據庫中)來查找成員,而不是從用戶那里檢索消息?

我希望我的問題很清楚,不要混淆。 我沒有詢問有關 http / 服務器-服務器通信或 Laravel/Oauth/DB 操作的任何事情,因為這已經有效。 我只是找不到像 function 這樣的

let member = bot.findGuildMemberByID("USER-ID HERE");

這是通用架構的可視化,以使其更加清晰。 建築學。最下面亂七八糟的東西是數據庫中顯示用戶id的一行

只需獲取您要在其中找到成員的公會:

const guild = client.guilds.cache.get("GUILD-ID HERE"); // or message.guild

然后你可以通過他們的 ID 獲得一個成員:

使用get

const member = guild.members.cache.get("USER-ID HERE");

過濾所有公會成員

const member = guild.members.cache.find(member => member.id === "USER-ID HERE");

獲取成員:

const member = guild.members.fetch("USER-ID HERE");

實際上,您只需要 id 即可將角色添加到成員。 Discord API 有一個端點

discord.js 目前沒有對此的“內置”方法,但我已經為此提出了拉取請求,但它還沒有准備好

相反,您可以在內部使用 rest,它也在那里使用

const { REST } = require("discord.js") // will need to use @discordjs/rest if not using v14

// ...

const rest = new REST({ version: "9" }).setToken(client.token)
await rest.put(Routes.guildMemberRole(guildId, userId, roleId), {
  reason // optional - reason for adding the role
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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