Discord如何批量导出服务器成员ID并保存为CSV?

功能定位:为什么需要成员ID清单
在 Discord 里,用户 ID 是全局唯一的 18 位数字串,用于机器人发私信、批量赋角色、外部 CRM 对账等场景。与昵称不同,ID 不会随改名而变动,因此常被当作“主键”。Discord 批量导出成员ID并保存为CSV 的核心诉求,就是把整台服务器的 ID 一次性抓下来,方便离线存档或第三方系统调用。
官方并未提供“一键导出”按钮,但给出了两条可行通道:①Server Insights 仪表盘(仅 Partner/Verified 可用,含 CSV 下载);②REST API 的 List Guild Members(所有人可用,需 Bot Token)。下文按“先官方、后自建”的顺序展开,并给出权限最小化与合规边界。
通道一:Server Insights CSV(Partner/Verified 专享)
入口与路径
桌面端:服务器名称右键 → Server Settings → Server Insights → 顶部 Export CSV 按钮。
移动端(iOS/Android 最新版):服务器 → 右上角「…」→ Settings → 向下找到 Insights → 同样位置可见 Export。
文件内容与局限
生成的 CSV 包含:user_id、username、discriminator、joined_at、roles(逗号拼接)。不含邮箱、手机号、隐私字段,因此不会触发 GDPR 的“高风险处理”条款。经验性观察:10 万成员服务器导出耗时约 30–40 秒,文件体积 4–6 MB。
提示:若按钮灰色,请确认服务器已满足 Partner 或 Verified 条件(可在 Settings → Partner Program 查看进度)。普通社区请直接看通道二。
通道二:自建 Bot 拉取 List Guild Members(通用方案)
创建最小权限 Bot
- 登录 Discord Developer Portal → New Application → 命名如
MemberExporter。 - 左侧 Bot → Add Bot → PUBLIC BOT 关闭(仅你可控)。
- OAuth2 → URL Generator → scopes 只勾
bot,权限只勾 View Channels 与 Read Members(最小集合)。 - 把生成的链接粘贴到浏览器,邀请它进目标服务器。
代码模板(Python 3.11)
import requests, csv, time
TOKEN = 'YOUR_BOT_TOKEN'
GUILD_ID = 'YOUR_SERVER_ID'
BASE = f'https://discord.com/api/v10/guilds/{GUILD_ID}/members'
headers = {'Authorization': f'Bot {TOKEN}'}
params = {'limit': 1000, 'after': 0}
csv_file = open('members.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(csv_file)
writer.writerow(['user_id', 'username', 'discriminator', 'joined_at'])
while True:
r = requests.get(BASE, headers=headers, params=params)
if r.status_code != 200:
print('非 200 响应,请检查权限或 Token'); break
data = r.json()
if not data: break
for m in data:
writer.writerow([m['user']['id'], m['user']['username'],
m['user']['discriminator'], m.get('joined_at','')])
params['after'] = data[-1]['user']['id']
time.sleep(1) # 全局速率约 10 req/s,保守留余量
csv_file.close()
print('已写入 members.csv')
运行前 pip install requests。经验性观察:1 万成员约 11 次请求,耗时 15 秒左右;10 万成员约 3 分钟,峰值内存 60 MB。
权限与合规边界
GDPR & 隐私最小化
欧盟服务器需在 隐私政策 中说明“ID 导出”目的、存储期限与删除机制。建议勾选 Community Server → Rules Screening,在入门问答里写明“我们可能出于技术维护需要导出用户 ID”,以取得合法性基础(合法利益)。
何时不该导出
- 服务器含 NSFW 未成年频道,且导出文件将共享给外部——可能违反 COPPA。
- 仅为了“备份头像”或“私信广告”——Discord Terms of Service 明确禁止未经请求的商业私信。
- 成员规模 > 1 000 000 且本地硬盘剩余空间 < 1 GB——CSV 大小可能爆盘。
故障排查速查表
| 现象 | 最可能原因 | 验证步骤 | 处置 |
|---|---|---|---|
| API 返回 403 | Bot 无 Read Members | 服务器 → Roles → @Bot 查看权限 | 重新勾选并重启脚本 |
| CSV 仅 1 行标题 | 服务器只有机器人自己 | 浏览器打开服务器成员列表 | 确认 Bot 已进正确服务器 |
| 脚本卡死无写入 | 速率被 Cloudflare 拦截 | 打印 r.headers.get('X-RateLimit-Remaining') | sleep 加到 1.5 s 或改用官方限速库 |
与第三方归档机器人的协同
若不想写代码,可在 top.gg 搜索关键词 export member list,筛选评分 > 80%、月度在线 > 10 k 的机器人。邀请前务必:
- 把“允许成员列表”权限设为仅管理员可见,防止机器人被劫持后批量泄露。
- 使用一次性专用频道下达导出命令,完成后立即收回频道读取权。
- 下载完 CSV 立刻让机器人离开服务器,减少长期攻击面。
警告:2026 年 4 月出现“免费导出机器人”钓鱼案例,诱导用户扫码后窃取 Token。验证方法:检查机器人 OAuth 权限列表是否仅含 Read Members,若出现 Manage Server 或 Manage Roles 立即取消授权。
最佳实践清单(可打印)
- 先确认服务器等级:Partner/Verified 直接用 Insights CSV,省去代码维护成本。
- 自建 Bot 时,Token 写入
.env并加入.gitignore,禁止硬编码上传 GitHub。 - 导出后立刻用
sha256sum members.csv > members.sha256留校验值,防止后续被篡改。 - CSV 存储在加密盘或 VeraCrypt 容器,期限不超过 30 天,到期自动删除。
- 任何二次转发(如发送给广告主)前,重新评估合法利益是否仍成立,必要时征求用户同意。
适用/不适用场景清单
| 场景 | 是否推荐 | 理由 |
|---|---|---|
| 10 万成员游戏战队,月度备份 | ✔ 推荐 | 数据量可控,合规风险低 |
| 500 人班级,教师做考勤 | ✔ 推荐 | 教育场景属合法利益 |
| 1 万成员 NFT 社群,转卖 ID 给营销商 | ✘ 不推荐 | 违反 ToS,可能被封号 |
| 成员含大量 13 岁以下用户 | ✘ 不推荐 | COPPA 要求可验证家长同意 |
验证与观测方法
为确保脚本完整性,可在服务器手动新增一个小号,记录其 ID,再运行脚本,检查 CSV 最后一行是否包含该 ID。若缺失,说明分页逻辑未走到末尾,需调高 sleep 或检查 after 参数。
版本差异与迁移建议
截至当前的最新版本(Stable 190300)仍使用 API v10。若未来 Discord 发布 v11,只需把脚本中的 /v10/ 替换为 /v11/ 并查看官方 Changelog 是否新增必填字段。Server Insights 的 CSV 列顺序可能随季度报表需求微调,建议下游 ETL 用列名而非索引定位。
FAQ(结构化数据)
为什么我只看到 1000 条成员?
List Guild Members 单次上限 1000,需用 after 参数分页循环,直到返回空数组。
导出后的 CSV 出现乱码怎么办?
用 Excel 打开前,先在“数据”→“自文本/CSV”里选 UTF-8 编码;或改用 Google Sheets 导入,可自动识别。
Bot 被踢出服务器,会中断导出吗?
会立即收到 403,脚本终止。需重新邀请 Bot 并从头开始分页,无法断点续传。
可以拿到用户邮箱吗?
不能。除非用户主动授权 OAuth2 email 作用域,否则 List Guild Members 仅返回 ID 与公开资料。
导出频率有限制吗?
官方无硬性上限,但经验性观察:同一 Bot 每日超过 50 次完整导出,可能被临时限速。建议每周一次或采用增量方案(记录最后一次 after 值)。
总结与下一步行动
Discord 批量导出成员ID并保存为CSV 并非隐藏功能,而是“权限+API 分页”的组合操作。Partner 服务器优先用 Server Insights 一键下载;普通服务器花 10 分钟搭一个最小权限 Bot 即可复现。完成后,务必对 CSV 做加密、限期与哈希校验,防止后续合规争议。
下一步,你可以:
① 把 CSV 导入 Google Sheets,用 =ARRAYFORMULA 快速筛选“最近 7 天加入”的成员;
② 结合 Activities SDK,做“新成员欢迎小游戏”自动发奖;
③ 若成员 > 50 万,考虑改用官方 Server Insights API(需白名单)做增量同步,降低本地 IO 压力。
只要遵循“最小权限、最短存储、明文告知”三原则,就能在享受自动化便利的同时,把合规风险压到最低。祝你导出顺利,数据安全。


