You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:12:52