news 2026/10/15 14:45:17

Undiscord 获取 Author ID(用户 ID)全指南:自动检测、手动复制与 403 错误排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Undiscord 获取 Author ID(用户 ID)全指南:自动检测、手动复制与 403 错误排查
  • 即时通讯
  • 开发工具

【免费下载链接】undiscord

Undiscord - Delete all messages in a Discord server / channel or DM (Easy and fast) Bulk delete

项目地址:https://gitcode.com/gh_mirrors/un/undiscord
点击查看免费下载

Author ID(Discord 用户 ID,即雪花 ID/Snowflake)是 Undiscord 定位"要删除谁的消息"的核心标识:脚本在搜索消息时以author_id作为关键过滤参数,只有填对了 Author ID,批量删除才能命中你本人发送的消息。本文围绕 Undiscord 官方帮助文档 help/authorId.md 展开,完整讲解两条获取路径——弹出窗口一键自动检测与手动复制头像 ID,并说明 Developer Mode 前置条件、DM 会话中删除他人消息会触发 Error 403 的限制,以及这些行为在 src/undiscord-core.js 与 src/utils/getIds.js 中的底层实现依据。

Author ID 在 Undiscord 中的作用

Undiscord 的删除引擎UndiscordCore在初始化时把authorId定义为"你要删除消息的作者 ID"(见 src/undiscord-core.js 的 options 定义):

options = { authToken: null, // Your authorization token authorId: null, // Author of the messages you want to delete guildId: null, // Server were the messages are located channelId: null, // Channel were the messages are located // ... };

当脚本执行搜索时,search()方法会把authorId拼入 Discord 搜索 API 的查询参数:

resp = await fetch(API_SEARCH_URL + 'search?' + queryString([ ['author_id', this.options.authorId || undefined], // ...

(见 src/undiscord-core.js)

也就是说,搜索接口会只返回"该作者"的消息,其余人的消息根本不会进入候选列表。因此填错或漏填 Author ID,要么删不到任何消息,要么脚本在确认阶段展示的待删消息预览与实际预期不符。这也是为什么官方文档把 Author ID 的获取放在了使用流程的最前面。

简易方式:点击 "Me" 按钮自动检测

官方文档提供了最快的一条路径:

在 Undiscord 弹出窗口的Author输入框旁,直接点击Me按钮,脚本会自动检测并填入你的 ID。

在界面模板中,Author ID 输入框与me按钮是一对组合(见 src/ui/undiscord.html):

<fieldset> <legend> Author ID <a href="{{WIKI}}/authorId" title="Help" target="_blank" rel="noopener noreferrer">help</a> </legend> <div class="multiInput"> <div class="input-wrapper"> <input class="input" id="authorId" type="text" priv> </div> <button id="getAuthor">me</button> </div> </fieldset>

按钮的点击行为绑定在 src/undiscord-ui.js:

$('button#getAuthor').onclick = () => $('input#authorId').value = getAuthorId();

其底层实现getAuthorId()位于 src/utils/getIds.js。它通过注入一个隐藏 iframe 读取 Discord 网页应用的localStorage,从中解析user_id_cache字段:

export function getAuthorId() { const LS = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage; return JSON.parse(LS.user_id_cache); }

从源码结构可以推断,"自动检测"的本质是读取 Discord 缓存在本地存储里的当前登录用户 ID(user_id_cache),因此它永远返回的是你自己账号的 ID,这正是 Undiscord 批量删除自己消息的使用场景。需要说明的是:这个读取动作发生在浏览器内的 Discord 网页应用上下文中,脚本本身没有额外网络请求,也不会上传该 ID。

何时推荐使用此方式:清理自己账号在某个频道/DM 里的全部历史消息时,直接点me即可,无需任何手动操作;在导入 Discord 数据包(index.json)时脚本也会自动填充 Author ID(见 src/undiscord-ui.js)。

手动方式:右键头像复制 ID(不是消息!)

官方文档强调,如果不想用自动检测(例如需要精确确认 ID 来源),可以手动获取:

  1. 在聊天中发送一条消息,右键点击这条消息上的你的头像(avatar);
  2. 在右键菜单中选择Copy ID(复制 ID);
  3. 将复制到的数字 ID 粘贴回 Undiscord 窗口的Author ID输入框。

官方文档在此处特别用大写强调了一个高频踩坑点:

NOT THE MESSAGE THE AVATAR.(是头像,不是消息!)

右键"消息本体"复制到的 ID 是这条消息的 ID(message ID),而右键"头像"复制到的才是用户 ID(author ID)。两者都是 18 位左右的雪花 ID,但用途完全不同——把消息 ID 填进 Author ID 会导致搜索条件author_id匹配不到任何作者,最终一条消息都删不掉。关于消息 ID 的用途,可参考 help/messageId.md(用于"某条消息之后/之前"的区间限定)。

手动方式与自动方式的区别:自动方式恒等于当前登录账号;手动方式理论上可以填入任何人的 ID。但正如官方文档警告的,脚本删除他人消息会受 Discord 权限模型约束(详见下文"Error 403"部分),所以手动方式主要用于:确认 ID、排查自动检测失效、或在"请求数据包导入"等边缘场景下核对。

前置条件:右键菜单没有 "Copy ID"?

无论是复制头像 ID 还是消息 ID,右键菜单里的Copy ID选项都不是默认存在的。官方文档指出:

如果Copy ID不显示,需要先启用Developer mode(开发者模式)。

开启步骤见 help/developerMode.md:

  1. 打开 Discord 的用户设置(Settings);
  2. 进入外观(Appearance)分类;
  3. 打开开发者模式(Developer mode)开关。

开启后刷新 Discord 页面,再右键头像即可看到Copy ID菜单项。该开关同样作用于频道 ID、服务器 ID、消息 ID 的复制(相关获取方法见 help/channelId.md),是使用 Undiscord 各项手动 ID 获取功能时的通用前置条件。

DM 场景限制:为什么删除他人消息会得到 Error 403

官方文档在手动方式一节中明确警告:

你不能删除他人在 DM(私聊)会话中发送的消息,否则会得到Error 403。

这条限制可以从两个层面理解:

(1)Discord 权限模型层面:DM 会话是双方私有空间,任何一方都没有"代删对方消息"的权限。Undiscord 以你自己的账号身份(Authorization Token)调用删除接口,删除他人消息时 Discord 服务端会直接以 403 Forbidden 拒绝。

(2)Undiscord 实现层面:删除请求由 src/undiscord-core.js 的deleteMessage()发出,走DELETE https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}。当响应resp.ok为 false 时,脚本会记录failCount++并在日志区输出类似 "Error deleting message, API responded with status 403" 的信息(见 src/undiscord-core.js)。由于失败消息会进入failCount而非delCount,最终统计中"已删除/失败"的数量也会如实反映这一情况。

注意:在服务器(Server)频道中能否删除他人消息,取决于该服务器是否授予你"管理消息"权限;而 DM 场景下则是平台层面的硬限制,与权限配置无关。从 src/undiscord-core.js 的搜索逻辑可以看出,当guildId为@me时脚本即按 DM 模式处理搜索请求。

另外值得补充的是:即使搜索阶段能通过author_id过滤到他人消息(例如你手动填入对方 ID),删除阶段依然会被 403 拦截,因此在 DM 中请始终使用自己的 Author ID,只删除自己发送的消息。

常见问题与排查清单

结合官方文档要点与源码实现,整理如下排查顺序:

现象可能原因处理方式
右键菜单没有Copy ID未开启 Developer mode按 help/developerMode.md 在 设置 → 外观 中开启开发者模式
点me按钮后输入框为空浏览器环境未正确注入 iframe 读取 localStorage,或 Discord 网页应用未加载完成刷新 Discord 页面后重试;仍失败可改用右键头像手动复制
填了 ID 却一条都搜不到复制的是消息 ID 而非用户 ID(右键了消息而非头像)右键头像重新复制;可参考 help/messageId.md 区分两类 ID 的用途
删到一半大量 403在 DM 中尝试删除他人消息,或服务器权限不足确认 Author ID 为自己的 ID;服务器场景请确认拥有"管理消息"权限
确认弹窗中预览的消息作者都不是自己Author ID 被误填为他人清除输入框,重新点击me自动填入

结语

Author ID 是 Undiscord 批量删除流程的"身份钥匙":me按钮从 src/utils/getIds.js 的getAuthorId()读取本地缓存的当前用户 ID 实现一键填充,手动方式则依赖 Developer mode 下的右键"复制 ID",二者互为补充。牢记两个关键点即可避开绝大多数坑:右键要复制的是头像(用户 ID)而不是消息本体,以及DM 会话中只能删除自己的消息,否则必遇 Error 403。本文依据的官方文档为 help/authorId.md,配套的 help/developerMode.md、help/channelId.md、help/messageId.md 可在仓库 help 目录下继续查阅。

  • 即时通讯
  • 开发工具

【免费下载链接】undiscord

Undiscord - Delete all messages in a Discord server / channel or DM (Easy and fast) Bulk delete

项目地址:https://gitcode.com/gh_mirrors/un/undiscord
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 14:45:03

React Native验证码输入框实战:跨平台一致性与事件治理

1. 项目概述&#xff1a;一个被低估却高频踩坑的交互组件在某跨平台系统重构过程中&#xff0c;我接手了一个看似简单的任务&#xff1a;把登录页里那个“6位数字验证码输入框”从纯React Native原生TextInput改成带自动聚焦、删除联动、粘贴识别的完整体验。结果花了整整三天—…

作者头像 李华
网站建设 2026/10/15 14:44:59

STM32 RS485通信实战:硬件设计、帧协议与调试避坑指南

简介&#xff1a;基于STM32F103RCT6的RS485通讯逻辑代码工程&#xff0c;面向嵌入式开发者和STM32初学者&#xff0c;解决串口代码向新平台移植以及RS485多机通信实现的问题。压缩包共80个文件、约341KB&#xff0c;以C源码和H头文件为主体&#xff0c;另有STM32启动文件、Keil…

作者头像 李华
网站建设 2026/10/15 14:44:57

符号表底层原理与工程实践:从二叉查找树到HashMap选型指南

符号表这个名字&#xff0c;乍一听像编译原理里的冷门概念&#xff0c;但它其实就是我们每天都在打交道的键值对集合。Java的HashMap、TreeMap&#xff0c;Python的dict&#xff0c;Redis里的Hash结构&#xff0c;底层都是这个思想——你给我一个键&#xff0c;我还你一个值&am…

作者头像 李华
网站建设 2026/10/15 14:44:47

OpenShell 交互外壳框架:命令注册、补全与权限管理实战

1. 从“OpenShell”这个名字说起&#xff1a;它到底想解决什么问题第一次看到“OpenShell”这个词&#xff0c;很多人会下意识地把它和“开源”“命令行”“终端外壳”联系起来。这个直觉方向是对的&#xff0c;但不够准确。在真实的项目语境里&#xff0c;OpenShell 通常指的是…

作者头像 李华
网站建设 2026/10/15 14:44:36

B站动漫数据爬虫与分析系统:时间序列建模+工业级反爬实战

简介&#xff1a;本资源是一套面向Python初学者与数据分析爱好者的B站动漫数据全链路实践项目&#xff0c;聚焦爬虫采集、清洗、分析与可视化四大核心环节&#xff0c;助力读者掌握从网页抓取到洞察呈现的完整数据工作流。压缩包共23个文件&#xff0c;含3个Jupyter Notebook&a…

作者头像 李华
网站建设 2026/10/15 14:44:35

jquery.validate.js 1.8.1 表单校验配置与避坑指南

简介&#xff1a;这是一份面向Web前端开发者的jQuery Validate插件1.8.1版本配套实例包。插件通过HTML属性与JavaScript配置即可完成表单字段的必填、邮箱、URL、数字、长度等校验&#xff0c;并支持自定义验证规则与错误消息定制&#xff0c;适用于需要快速构建可靠表单验证的…

作者头像 李华