如何查询指定ID的Discord用户是否存在(机器人无共群场景)
无共同服务器时校验Discord用户是否存在的实现方法
你可以直接调用Discord.js客户端内置的client.users.fetch()方法完成需求,该方法通过调用Discord官方REST接口拉取用户信息,不需要目标用户与机器人处于同一服务器,也不依赖服务器成员缓存。
实现代码示例
async function verifyUserExists(targetUserId) { try { // 第二个参数force设为true代表跳过本地缓存直接请求官方接口,避免缓存导致的判断误差 const targetUser = await client.users.fetch(targetUserId, { force: true }); return Boolean(targetUser); } catch (err) { // Discord API错误码10013对应「未知用户」,即该ID无对应用户 if (err.code === 10013) { return false; } // 其他错误(如网络异常、API速率限制)可根据业务场景自行处理 throw err; } } // 调用方式 const userIsValid = await verifyUserExists('需要校验的用户ID'); if (!userIsValid) return;
注意事项
client.users.fetch()为异步方法,必须搭配await或者.then()链式调用处理结果,直接同步调用会返回Promise对象导致判断逻辑失效- 该方法不需要额外申请网关权限,哪怕你没有开启「服务器成员」「用户状态」等特权网关意图也可正常调用
- 不要高频调用该接口,避免触发Discord的API速率限制规则
内容的提问来源于stack exchange,提问作者MegaMix_Craft
相关产品推荐
相关产品推荐

