资讯动态

Undiscord 消息过滤指南:用 has:link / has:file 精准批量删除 Discord 消息

发布时间:2026/10/15 18:39:06 来源:尧图企业网站定制
即时通讯开发工具【免费下载链接】undiscordUndiscord - Delete all messages in a Discord server / channel or DM (Easy and fast) Bulk delete项目地址https://gitcode.com/gh_mirrors/un/undiscord点击查看免费下载本文围绕 Undiscord 的Filter过滤器功能展开讲解如何利用has: link与has: file两类筛选条件只删除包含链接或附带文件图片、视频等的 Discord 消息。结合本仓库源码你将理解过滤选项从前端勾选、参数组装到 Discord Search API 请求的完整调用链路并能掌握其与内容搜索、正则模式、作者 ID 等过滤手段的组合用法实现精准、可控的批量清理。一、过滤器在 Undiscord 中的定位Undiscord 是一个浏览器端 UserScript用户脚本用于批量删除 Discord 频道或私聊中的消息核心逻辑在 src/undiscord-core.js 中实现界面由 src/undiscord-ui.js 渲染。默认情况下它会删除满足条件的所有消息而过滤器Filter的作用就是缩小删除范围只处理你真正想清理的那部分消息。过滤相关的 UI 位于 Undiscord 窗口侧边栏的Filter折叠面板中见 src/ui/undiscord.html包含以下几项Search#search仅删除包含指定文本的消息has: link#hasLink复选框仅删除含链接的消息has: file#hasFile复选框仅删除含文件的消息Include pinned#includePinned复选框是否把被置顶pinned的消息也纳入删除范围。其中has: link与has: file正是 help/filters.md 讲解的两个核心选项也是本篇文章的主题。二、has: link——只删除含链接的消息在Filter面板中勾选has: link后批量删除流程只会命中包含链接URL的消息其余消息即使满足作者、时间等其他条件也会被跳过。从 UI 到核心逻辑的传递路径非常直观点击 Delete 按钮触发startAction()时脚本读取复选框状态// src/undiscord-ui.js const hasLink $(input#hasLink).checked; const hasFile $(input#hasFile).checked;随后被写入UndiscordCore.options// src/undiscord-ui.js undiscordCore.options { ...undiscordCore.options, ... hasLink, hasFile, ... };UndiscordCore在构造时给这两个选项定义了默认值null并附有语义注释见 src/undiscord-core.jshasLink: null, // Filter messages that contains link hasFile: null, // Filter messages that contains file运行开始时run()方法还会把这两个开关的实际取值打印到日志方便确认过滤是否生效src/undiscord-core.jslog.debug( ... hasLink ${!!this.options.hasLink}, hasFile ${!!this.options.hasFile}, );三、has: file——只删除含文件的消息勾选has: file后只有附带文件attachment的消息会被删除。官方文档特别强调图片images、视频videos也属于文件因此这个选项同样会命中含图片、视频等媒体附件的消息。这两个选项可以同时勾选此时链接和文件两类消息都会被纳入删除范围二者的命中结果是或的关系。四、底层原理过滤器如何驱动 Discord Search APIhelp/filters.md明确指出该功能依赖 Discord 的搜索search能力来定位消息。这一点在源码中得到完整印证——search()方法src/undiscord-core.js每次迭代都会向 Discord 的搜索接口发起请求服务器Server场景https://discord.com/api/v9/guilds/{guildId}/messages/search私聊DMguildId 为me场景https://discord.com/api/v9/channels/{channelId}/messages/search请求参数由queryString()辅助函数src/utils/helpers.js组装该函数会自动剔除值为undefined的参数因此未勾选的过滤条件不会出现在请求中。与过滤器直接相关的两行是// src/undiscord-core.js [has, this.options.hasLink ? link : undefined], [has, this.options.hasFile ? file : undefined],也就是说勾选状态实际发送的参数仅勾选 has: linkhaslink仅勾选 has: filehasfile两者都勾选haslinkhasfile都不勾选不发送has参数即不限链接/文件这两个参数与author_id、channel_id、min_id、max_id、content、include_nsfw等一起构成完整的搜索请求。这正是原文档所说uses the Discord search to find messages的实现细节过滤器不是客户端本地遍历后判断的而是由 Discord 服务端搜索索引直接完成筛选。五、与其它过滤条件的组合使用has: link/has: file是搜索层过滤与下面这些条件配合可以进一步收窄删除范围形成完整的过滤体系完整配置见 src/ui/undiscord.htmlSearch含文本勾选链接/文件过滤的同时在 Search 框输入关键词可精确到含链接且内容包含某文本的消息Pattern正则表达式在 Filter 面板的 Pattern 输入框中填写正则核心层会用new RegExp(this.options.pattern, i)大小写不敏感对消息内容做匹配src/undiscord-core.jsAuthor ID只删除指定作者的消息配合链接/文件过滤可清理某人发的广告链接这类场景Include pinned默认不删除置顶消息勾选后才纳入src/undiscord-core.js消息区间 / 日期区间用minId/maxId或minDate/maxDate限定删除的时间范围注意 UI 提示日期过滤与消息区间过滤互斥。六、命中后的二次校验消息类型过滤即使搜索接口返回了符合has: link/has: file条件的结果删除前还有一道客户端二次校验——filterResponse()src/undiscord-core.js会从每个会话组中提取实际命中的消息convo.find(message message.hit true)过滤掉系统消息等不可删除的类型仅保留type 0普通消息以及type在 621 之间的消息src/undiscord-core.js按置顶状态和 Pattern 正则进一步筛选。被跳过不可删或不符合条件的消息会进入_skippedMessages并用于计算下一页搜索的offset确保流程持续推进而不陷入死循环。七、使用中的注意事项与限制依赖 Discord 搜索索引搜索接口返回 HTTP202时表示该频道尚未被 Discord 建立索引脚本会读取响应中的retry_after等待后自动重试src/undiscord-core.js可能触发限流429搜索过快或删除过快都会被 Discord 限流脚本会读取retry_after并动态调大searchDelay/deleteDelay后重试src/undiscord-core.js这两个延迟的初始值可在界面Advanced settings中通过滑块设置范围分别为 100–60000ms 与 50–10000ms见 src/ui/undiscord.html删除数量上限Discord 对单个账号的历史消息有系统级限制如频道中超过一定时间的消息无法由普通用户删除搜索结果页每页 25 条会随删除进度动态变化脚本以total_results的最大值作为预估总量src/undiscord-core.js安全提醒任何自动化操作用户账号的脚本都存在账号风险使用前请阅读 README.md 中的免责声明切勿分享自己的 Authorization Token详见 help/authToken.md。八、小结has: link与has: file是 Undiscord 最常用的两类搜索过滤器它们将筛选工作下沉到 Discord 服务端搜索索引实现了只删链接只删文件/图片/视频的精准批量删除。从 help/filters.md 到 src/undiscord-ui.js 的取值、src/undiscord-core.js 的参数组装再到 src/utils/helpers.js 的请求序列化整条链路清晰可循。理解这一机制后你还可以进一步结合 Pattern 正则、作者 ID、置顶开关等条件构建出完全符合自己需求的删除策略。赞分享即时通讯开发工具【免费下载链接】undiscordUndiscord - Delete all messages in a Discord server / channel or DM (Easy and fast) Bulk delete项目地址https://gitcode.com/gh_mirrors/un/undiscord点击查看免费下载相关推荐10分钟上手RxRealmiOS开发者必备的响应式数据库操作技巧10分钟上手RxRealmiOS开发者必备的响应式数据库操作技巧 RxRealm是一款专为iOS开发者打造的响应式数据库操作库它将RxSwift的强大功能与智能地址解析实战指南一站式解决中文地址处理难题提升效率80%智能地址解析实战指南一站式解决中文地址处理难题提升效率80% 还在为处理杂乱无章的中文地址信息而烦恼吗Address Parse智能地址解析工具能够智能解析数据清洗后端Undiscord插件开发入门从零开始构建Discord消息批量删除工具Undiscord插件开发入门从零开始构建Discord消息批量删除工具 欢迎来到Undiscord插件开发教程Undiscord是一款强大的Discord即时通讯开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑