[英]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");
只需獲取您要在其中找到成員的公會:
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.