如何使用JavaScript获取Discord服务器成员的用户ID?
获取Discord成员ID并调用Tatsu积分API(JavaScript实现)
一、获取Discord成员ID的方法
1. 手动获取(非开发场景)
- 打开Discord客户端,进入「用户设置」→「高级」,开启开发者模式
- 右键点击目标成员的头像/用户名,选择「复制ID」,即可得到该成员的Discord ID
2. 用Discord.js自动获取(开发机器人/脚本)
如果要批量获取或集成到机器人中,用Discord.js是最便捷的方式:
首先安装依赖:
npm install discord.js
示例代码:
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers // 必须开启此意图才能获取成员列表 ] }); // 机器人登录成功后执行 client.on('ready', async () => { console.log(`已登录: ${client.user.tag}`); const guildId = '你的服务器ID'; // 替换为你的Discord服务器ID const guild = client.guilds.cache.get(guildId); if (!guild) { console.error('找不到目标服务器'); return; } // 获取服务器所有成员(大服务器需用fetch避免缓存不全) await guild.members.fetch(); guild.members.cache.forEach(member => { const memberId = member.user.id; console.log(`用户: ${member.user.tag}, ID: ${memberId}`); // 直接调用Tatsu API fetchTatsuPoints(memberId, guildId); }); }); // 调用Tatsu积分API的函数 async function fetchTatsuPoints(memberId, guildId) { const apiKey = '你的Tatsu API密钥'; // 从Tatsu开发者后台获取 const apiUrl = `https://dev.tatsu.gg/api/guilds/${guildId}/members/${memberId}/points`; try { const res = await fetch(apiUrl, { method: 'GET', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' } }); if (!res.ok) throw new Error(`请求失败: ${res.statusText}`); const pointsData = await res.json(); console.log(`${memberId} 的积分:`, pointsData); } catch (err) { console.error(`获取 ${memberId} 积分失败:`, err); } } // 登录机器人,替换为你的机器人令牌 client.login('你的Discord机器人令牌');
注意:
- 机器人需要在服务器中拥有「服务器成员权限」,且在Discord开发者门户开启
GuildMembers网关意图 - Tatsu API密钥需确保拥有目标服务器的访问权限
3. 直接调用Discord REST API(无框架)
如果不想依赖Discord.js,可直接调用Discord官方API获取成员ID:
async function getMemberIds(guildId, botToken) { const apiUrl = `https://discord.com/api/v10/guilds/${guildId}/members?limit=1000`; const memberIds = []; try { const res = await fetch(apiUrl, { headers: { 'Authorization': `Bot ${botToken}` } }); if (!res.ok) throw new Error(`获取成员失败: ${res.statusText}`); const members = await res.json(); members.forEach(m => { memberIds.push(m.user.id); console.log(`成员ID: ${m.user.id}`); }); return memberIds; } catch (err) { console.error('获取成员ID出错:', err); return []; } } // 使用示例 const guildId = '你的服务器ID'; const botToken = '你的机器人令牌'; getMemberIds(guildId, botToken).then(ids => { ids.forEach(id => fetchTatsuPoints(id, guildId)); });
内容的提问来源于stack exchange,提问作者Rio
相关产品推荐
相关产品推荐

