This commit is contained in:
krau
2025-08-22 01:57:09 +00:00
parent 041b2f5a1e
commit 0376213dfd
4 changed files with 43 additions and 25 deletions

View File

@@ -2,21 +2,43 @@
参与开发
#
在开始之前, 请 Fork 本项目, 并克隆到本地, 并确保 Go 版本 >= 1.23.
以下是一些贡献代码的指南或建议, 你不必完全遵守, 但将有助于快速 review 并合并你的提交:
新功能请先提交 Issue, 以便讨论设计和实现细节, 并避免因与项目设计不符而被拒绝.
使用现代开发工具, 确保提交前格式化代码, 并保持风格一致.
使用语义化提交, 避免提交消息模糊或过于简单.
贡献新存储端
#
Fork 本项目, 克隆到本地
在 pkg/enums/storage/storages.go 中添加新的存储端类型, 并运行代码生成
在 config/storage 目录下定义存储端配置, 并添加到 config/storage/factory.go 中
在 storage 目录下新建一个包, 编写存储端实现, 然后在 storage/storage.go 中导入并添加它
更新文档, 添加配置说明
"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://sabot.unv.app/contribute/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="参与开发"><meta property="og:description" content="参与开发 # 贡献新存储端 # Fork 本项目, 克隆到本地 在 pkg/enums/storage/storages.go 中添加新的存储端类型, 并运行代码生成 在 config/storage 目录下定义存储端配置, 并添加到 config/storage/factory.go 中 在 storage 目录下新建一个包, 编写存储端实现, 然后在 storage/storage.go 中导入并添加它 更新文档, 添加配置说明"><meta property="og:locale" content="zh"><meta property="og:type" content="website"><title>参与开发 | Save Any Bot</title><link rel=icon href=/favicon.png><link rel=manifest href=/manifest.json><link rel=canonical href=https://sabot.unv.app/contribute/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/contribute/ title=Contributing><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous><link rel=alternate type=application/rss+xml href=https://sabot.unv.app/contribute/index.xml title="Save Any Bot"></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control>
贡献新解析器
#
你可以选择使用 Go 编写原生的解析器实现(推荐), 或是使用 JavaScript 以插件的方式实现.
如果使用 Go 编写, 请:
在 parsers 目录下新建一个包, 编写解析器实现
在 parsers/parser.go 的 init 中注册解析器
如果使用 JavaScript 编写, 请参考 plugins/example_parser.js 的实现, 并在该文件夹下新建一个 js 文件, 实现你的解析逻辑."><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://sabot.unv.app/contribute/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="参与开发"><meta property="og:description" content="参与开发 # 在开始之前, 请 Fork 本项目, 并克隆到本地, 并确保 Go 版本 >= 1.23.
以下是一些贡献代码的指南或建议, 你不必完全遵守, 但将有助于快速 review 并合并你的提交:
新功能请先提交 Issue, 以便讨论设计和实现细节, 并避免因与项目设计不符而被拒绝. 使用现代开发工具, 确保提交前格式化代码, 并保持风格一致. 使用语义化提交, 避免提交消息模糊或过于简单. 贡献新存储端 # 在 pkg/enums/storage/storages.go 中添加新的存储端类型, 并运行代码生成 在 config/storage 目录下定义存储端配置, 并添加到 config/storage/factory.go 中 在 storage 目录下新建一个包, 编写存储端实现, 然后在 storage/storage.go 中导入并添加它 更新文档, 添加配置说明 贡献新解析器 # 你可以选择使用 Go 编写原生的解析器实现(推荐), 或是使用 JavaScript 以插件的方式实现.
如果使用 Go 编写, 请:
在 parsers 目录下新建一个包, 编写解析器实现 在 parsers/parser.go 的 init 中注册解析器 如果使用 JavaScript 编写, 请参考 plugins/example_parser.js 的实现, 并在该文件夹下新建一个 js 文件, 实现你的解析逻辑."><meta property="og:locale" content="zh"><meta property="og:type" content="website"><title>参与开发 | Save Any Bot</title><link rel=icon href=/favicon.png><link rel=manifest href=/manifest.json><link rel=canonical href=https://sabot.unv.app/contribute/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/contribute/ title=Contributing><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous><link rel=alternate type=application/rss+xml href=https://sabot.unv.app/contribute/index.xml title="Save Any Bot"></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control>
<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo class=book-icon><span>Save Any Bot</span></a></h2><ul class=book-languages><li><input type=checkbox id=languages class=toggle>
<label for=languages class=flex><a role=button class="flex flex-auto"><img src=/svg/translate.svg class=book-icon alt=Languages>
简体中文</a></label><ul><li><a href=/en/contribute/>English</a></li></ul></li></ul><ul><li><a href=https://github.com/krau/SaveAny-Bot target=_blank rel=noopener>🔗 GitHub</a></li></ul><ul><li><span>部署指南</span><ul><li><a href=/deployment/installation/>安装与更新</a></li><li><a href=/deployment/configuration/>配置说明</a><ul><li><a href=/deployment/configuration/storages/>存储端配置</a></li></ul></li></ul></li><li><a href=/usage/>使用帮助</a><ul></ul></li><li><a href=/help/>常见问题</a><ul></ul></li><li><a href=/contribute/ class=active>参与开发</a><ul></ul></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu></label><h3>参与开发</h3><label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#贡献新存储端>贡献新存储端</a></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=参与开发>参与开发
<a class=anchor href=#%e5%8f%82%e4%b8%8e%e5%bc%80%e5%8f%91>#</a></h1><h2 id=贡献新存储端>贡献新存储端
<a class=anchor href=#%e8%b4%a1%e7%8c%ae%e6%96%b0%e5%ad%98%e5%82%a8%e7%ab%af>#</a></h2><ol><li>Fork 本项目, 克隆到本地</li><li><code>pkg/enums/storage/storages.go</code> 中添加新的存储端类型, 并运行代码生成</li><li><code>config/storage</code> 目录下定义存储端配置, 并添加到 <code>config/storage/factory.go</code></li><li><code>storage</code> 目录下新建一个包, 编写存储端实现, 然后在 <code>storage/storage.go</code> 中导入并添加它</li><li>更新文档, 添加配置说明</li></ol></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/commit/4206d1fe9658e4f240e426827d65611ea33ab0ed title='最后修改者 krau | 2025/06/16' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2025/06/16</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/contribute/_index.md target=_blank rel=noopener><img src=/svg/edit.svg class=book-icon alt>
<span>编辑本页</span></a></div></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><div class=book-comments></div><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav id=TableOfContents><ul><li><a href=#贡献新存储端>贡献新存储端</a></li></ul></nav></div></aside></main></body></html>
简体中文</a></label><ul><li><a href=/en/contribute/>English</a></li></ul></li></ul><ul><li><a href=https://github.com/krau/SaveAny-Bot target=_blank rel=noopener>🔗 GitHub</a></li></ul><ul><li><span>部署指南</span><ul><li><a href=/deployment/installation/>安装与更新</a></li><li><a href=/deployment/configuration/>配置说明</a><ul><li><a href=/deployment/configuration/storages/>存储端配置</a></li></ul></li></ul></li><li><a href=/usage/>使用帮助</a><ul></ul></li><li><a href=/help/>常见问题</a><ul></ul></li><li><a href=/contribute/ class=active>参与开发</a><ul></ul></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu></label><h3>参与开发</h3><label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#贡献新存储端>贡献新存储端</a></li><li><a href=#贡献新解析器>贡献新解析器</a></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=参与开发>参与开发
<a class=anchor href=#%e5%8f%82%e4%b8%8e%e5%bc%80%e5%8f%91>#</a></h1><p>在开始之前, 请 Fork 本项目, 并克隆到本地, 并确保 Go 版本 >= 1.23.</p><p>以下是一些贡献代码的指南或建议, 你不必完全遵守, 但将有助于快速 review 并合并你的提交:</p><ul><li><strong>新功能请先提交 Issue</strong>, 以便讨论设计和实现细节, 并避免因与项目设计不符而被拒绝.</li><li><strong>使用现代开发工具</strong>, 确保提交前格式化代码, 并保持风格一致.</li><li><strong>使用<a href=https://www.conventionalcommits.org/zh-hans/v1.0.0/>语义化提交</a></strong>, 避免提交消息模糊或过于简单.</li></ul><h2 id=贡献新存储端>贡献新存储端
<a class=anchor href=#%e8%b4%a1%e7%8c%ae%e6%96%b0%e5%ad%98%e5%82%a8%e7%ab%af>#</a></h2><ol><li><code>pkg/enums/storage/storages.go</code> 中添加新的存储端类型, 并运行代码生成</li><li><code>config/storage</code> 目录下定义存储端配置, 并添加到 <code>config/storage/factory.go</code></li><li><code>storage</code> 目录下新建一个包, 编写存储端实现, 然后在 <code>storage/storage.go</code> 中导入并添加它</li><li>更新文档, 添加配置说明</li></ol><h2 id=贡献新解析器>贡献新解析器
<a class=anchor href=#%e8%b4%a1%e7%8c%ae%e6%96%b0%e8%a7%a3%e6%9e%90%e5%99%a8>#</a></h2><p>你可以选择使用 Go 编写原生的解析器实现(推荐), 或是使用 JavaScript 以插件的方式实现.</p><p>如果使用 Go 编写, 请:</p><ol><li><code>parsers</code> 目录下新建一个包, 编写解析器实现</li><li><code>parsers/parser.go</code><code>init</code> 中注册解析器</li></ol><p>如果使用 JavaScript 编写, 请参考 <code>plugins/example_parser.js</code> 的实现, 并在该文件夹下新建一个 js 文件, 实现你的解析逻辑.</p><p>需要注意, <code>plugins</code> 目录下解析器默认不会被编译到二进制文件中, 用户需要手动下载它们并放到本地指定目录下以启用它们.</p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/commit/5f9bba9ff777d0a379b5938ef7a944aa980bbc83 title='最后修改者 krau | 2025/08/22' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2025/08/22</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/contribute/_index.md target=_blank rel=noopener><img src=/svg/edit.svg class=book-icon alt>
<span>编辑本页</span></a></div></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><div class=book-comments></div><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav id=TableOfContents><ul><li><a href=#贡献新存储端>贡献新存储端</a></li><li><a href=#贡献新解析器>贡献新解析器</a></li></ul></nav></div></aside></main></body></html>

View File

@@ -1 +1 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://sabot.unv.app/zh/sitemap.xml</loc><lastmod>2025-08-03T17:35:47+08:00</lastmod></sitemap><sitemap><loc>https://sabot.unv.app/en/sitemap.xml</loc><lastmod>2025-06-16T16:30:45+08:00</lastmod></sitemap></sitemapindex>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://sabot.unv.app/zh/sitemap.xml</loc><lastmod>2025-08-22T09:56:53+08:00</lastmod></sitemap><sitemap><loc>https://sabot.unv.app/en/sitemap.xml</loc><lastmod>2025-06-16T16:30:45+08:00</lastmod></sitemap></sitemapindex>

View File

@@ -7,9 +7,9 @@
转存文件
#
Bot 接受两种消息: 文件和链接.
对于链接, 目前支持以下类型的链接:
要使用 Bot 的转存 Telegram 文件功能, 需要向 Bot 发送或转发以下类型的消息.
文件或媒体消息, 如图片, 视频, 文档等
Telegram 消息链接, 例如: https://t.me/acherkrau/1097. 即使频道禁止了转发和保存, Bot 依然可以下载其文件.
Telegra.ph 的文章链接, Bot 将下载其中的所有图片
@@ -33,26 +33,21 @@ FILENAME-REGEX
MESSAGE-REGEX
IS-ALBUM
添加规则的基本语法:
&ldquo;规则类型 规则内容 存储名 路径&rdquo;
注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://sabot.unv.app/usage/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="使用帮助"><meta property="og:description" content="使用帮助 # 这里介绍 Save Any Bot 的一些功能和使用方法, 如果你没有在这里找到你需要的内容, 另请参阅 配置说明 或前往 Github Discussions 提问.
转存文件 # Bot 接受两种消息: 文件和链接.
对于链接, 目前支持以下类型的链接:
Telegram 消息链接, 例如: https://t.me/acherkrau/1097. 即使频道禁止了转发和保存, Bot 依然可以下载其文件. Telegra.ph 的文章链接, Bot 将下载其中的所有图片 静默模式 (silent) # 使用 /silent 命令可以开关静默模式.
添加规则的基本语法:"><meta name=theme-color media="(prefers-color-scheme: light)" content="#ffffff"><meta name=theme-color media="(prefers-color-scheme: dark)" content="#343a40"><meta name=color-scheme content="light dark"><meta property="og:url" content="https://sabot.unv.app/usage/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="使用帮助"><meta property="og:description" content="使用帮助 # 这里介绍 Save Any Bot 的一些功能和使用方法, 如果你没有在这里找到你需要的内容, 另请参阅 配置说明 或前往 Github Discussions 提问.
转存文件 # 要使用 Bot 的转存 Telegram 文件功能, 需要向 Bot 发送或转发以下类型的消息.
文件或媒体消息, 如图片, 视频, 文档等 Telegram 消息链接, 例如: https://t.me/acherkrau/1097. 即使频道禁止了转发和保存, Bot 依然可以下载其文件. Telegra.ph 的文章链接, Bot 将下载其中的所有图片 静默模式 (silent) # 使用 /silent 命令可以开关静默模式.
默认情况下不开启静默模式, Bot 会询问你每个文件的保存位置.
开启静默模式后, Bot 会直接保存文件到默认位置, 无需确认.
在开启静默模式之前, 需要使用 /storage 命令设置默认保存位置.
存储规则 # 允许你为 Bot 在上传文件到存储时设置一些重定向规则, 用于自动整理所保存的文件.
见: #28
目前支持的规则类型:
FILENAME-REGEX MESSAGE-REGEX IS-ALBUM 添加规则的基本语法:
“规则类型 规则内容 存储名 路径”
注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:"><meta property="og:locale" content="zh"><meta property="og:type" content="website"><title>使用帮助 | Save Any Bot</title><link rel=icon href=/favicon.png><link rel=manifest href=/manifest.json><link rel=canonical href=https://sabot.unv.app/usage/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/ title=Usage><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous><link rel=alternate type=application/rss+xml href=https://sabot.unv.app/usage/index.xml title="Save Any Bot"></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control>
FILENAME-REGEX MESSAGE-REGEX IS-ALBUM 添加规则的基本语法:"><meta property="og:locale" content="zh"><meta property="og:type" content="website"><title>使用帮助 | Save Any Bot</title><link rel=icon href=/favicon.png><link rel=manifest href=/manifest.json><link rel=canonical href=https://sabot.unv.app/usage/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/ title=Usage><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous><link rel=alternate type=application/rss+xml href=https://sabot.unv.app/usage/index.xml title="Save Any Bot"></head><body dir=ltr><input type=checkbox class="hidden toggle" id=menu-control>
<input type=checkbox class="hidden toggle" id=toc-control><main class="container flex"><aside class=book-menu><div class=book-menu-content><nav><h2 class=book-brand><a class="flex align-center" href=/><img src=/logo.png alt=Logo class=book-icon><span>Save Any Bot</span></a></h2><ul class=book-languages><li><input type=checkbox id=languages class=toggle>
<label for=languages class=flex><a role=button class="flex flex-auto"><img src=/svg/translate.svg class=book-icon alt=Languages>
简体中文</a></label><ul><li><a href=/en/usage/>English</a></li></ul></li></ul><ul><li><a href=https://github.com/krau/SaveAny-Bot target=_blank rel=noopener>🔗 GitHub</a></li></ul><ul><li><span>部署指南</span><ul><li><a href=/deployment/installation/>安装与更新</a></li><li><a href=/deployment/configuration/>配置说明</a><ul><li><a href=/deployment/configuration/storages/>存储端配置</a></li></ul></li></ul></li><li><a href=/usage/ class=active>使用帮助</a><ul></ul></li><li><a href=/help/>常见问题</a><ul></ul></li><li><a href=/contribute/>参与开发</a><ul></ul></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu></label><h3>使用帮助</h3><label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#转存文件>转存文件</a></li><li><a href=#静默模式-silent>静默模式 (silent)</a></li><li><a href=#存储规则>存储规则</a><ul><li><a href=#filename-regex>FILENAME-REGEX</a></li><li><a href=#message-regex>MESSAGE-REGEX</a></li><li><a href=#is-album>IS-ALBUM</a></li></ul></li><li><a href=#监听聊天>监听聊天</a><ul><li><a href=#msgre>msgre</a></li></ul></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=使用帮助>使用帮助
简体中文</a></label><ul><li><a href=/en/usage/>English</a></li></ul></li></ul><ul><li><a href=https://github.com/krau/SaveAny-Bot target=_blank rel=noopener>🔗 GitHub</a></li></ul><ul><li><span>部署指南</span><ul><li><a href=/deployment/installation/>安装与更新</a></li><li><a href=/deployment/configuration/>配置说明</a><ul><li><a href=/deployment/configuration/storages/>存储端配置</a></li></ul></li></ul></li><li><a href=/usage/ class=active>使用帮助</a><ul></ul></li><li><a href=/help/>常见问题</a><ul></ul></li><li><a href=/contribute/>参与开发</a><ul></ul></li></ul></nav><script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script></div></aside><div class=book-page><header class=book-header><div class="flex align-center justify-between"><label for=menu-control><img src=/svg/menu.svg class=book-icon alt=Menu></label><h3>使用帮助</h3><label for=toc-control><img src=/svg/toc.svg class=book-icon alt="Table of Contents"></label></div><aside class="hidden clearfix"><nav id=TableOfContents><ul><li><a href=#转存文件>转存文件</a></li><li><a href=#静默模式-silent>静默模式 (silent)</a></li><li><a href=#存储规则>存储规则</a><ul><li><a href=#filename-regex>FILENAME-REGEX</a></li><li><a href=#message-regex>MESSAGE-REGEX</a></li><li><a href=#is-album>IS-ALBUM</a></li></ul></li><li><a href=#监听聊天>监听聊天</a><ul><li><a href=#msgre>msgre</a></li></ul></li><li><a href=#转存-telegram-之外的文件>转存 Telegram 之外的文件</a></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=使用帮助>使用帮助
<a class=anchor href=#%e4%bd%bf%e7%94%a8%e5%b8%ae%e5%8a%a9>#</a></h1><p>这里介绍 Save Any Bot 的一些功能和使用方法, 如果你没有在这里找到你需要的内容, 另请参阅 <a href=../deployment/configuration>配置说明</a> 或前往 Github <a href=https://github.com/krau/SaveAny-Bot/discussions>Discussions</a> 提问.</p><h2 id=转存文件>转存文件
<a class=anchor href=#%e8%bd%ac%e5%ad%98%e6%96%87%e4%bb%b6>#</a></h2><p>Bot 接受两种消息: 文件和链接.</p><p>对于链接, 目前支持以下类型的链接:</p><ol><li>Telegram 消息链接, 例如: <code>https://t.me/acherkrau/1097</code>. <strong>即使频道禁止了转发和保存, Bot 依然可以下载其文件.</strong></li><li>Telegra.ph 的文章链接, Bot 将下载其中的所有图片</li></ol><h2 id=静默模式-silent>静默模式 (silent)
<a class=anchor href=#%e8%bd%ac%e5%ad%98%e6%96%87%e4%bb%b6>#</a></h2><p>要使用 Bot 的转存 Telegram 文件功能, 需要向 Bot 发送或转发以下类型的消息.</p><ol><li>文件或媒体消息, 如图片, 视频, 文档等</li><li>Telegram 消息链接, 例如: <code>https://t.me/acherkrau/1097</code>. <strong>即使频道禁止了转发和保存, Bot 依然可以下载其文件.</strong></li><li>Telegra.ph 的文章链接, Bot 将下载其中的所有图片</li></ol><h2 id=静默模式-silent>静默模式 (silent)
<a class=anchor href=#%e9%9d%99%e9%bb%98%e6%a8%a1%e5%bc%8f-silent>#</a></h2><p>使用 <code>/silent</code> 命令可以开关静默模式.</p><p>默认情况下不开启静默模式, Bot 会询问你每个文件的保存位置.</p><p>开启静默模式后, Bot 会直接保存文件到默认位置, 无需确认.</p><p>在开启静默模式之前, 需要使用 <code>/storage</code> 命令设置默认保存位置.</p><h2 id=存储规则>存储规则
<a class=anchor href=#%e5%ad%98%e5%82%a8%e8%a7%84%e5%88%99>#</a></h2><p>允许你为 Bot 在上传文件到存储时设置一些重定向规则, 用于自动整理所保存的文件.</p><p>见: <a href=https://github.com/krau/SaveAny-Bot/issues/28 target=_blank>#28</a></p><p>目前支持的规则类型:</p><ol><li>FILENAME-REGEX</li><li>MESSAGE-REGEX</li><li>IS-ALBUM</li></ol><p>添加规则的基本语法:</p><p>&ldquo;规则类型 规则内容 存储名 路径&rdquo;</p><p>注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:</p><pre tabindex=0><code>/rule add FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
</code></pre><p>此外, 规则中的存储名若使用 &ldquo;CHOSEN&rdquo; , 则表示存储到点击按钮选择的存储端的路径下</p><p>规则类型:</p><h3 id=filename-regex>FILENAME-REGEX
@@ -65,6 +60,7 @@ FILENAME-REGEX MESSAGE-REGEX IS-ALBUM 添加规则的基本语法:
</code></pre><p>取消监听:</p><pre tabindex=0><code>/unwatch &lt;chat_id/username&gt;
</code></pre><p>过滤器类型:</p><h3 id=msgre>msgre
<a class=anchor href=#msgre>#</a></h3><p>正则匹配消息文本, 例如:</p><pre tabindex=0><code>/watch 12345678 msgre:.*hello.*
</code></pre><p>这将会监听 ID 为 12345678 的聊天, 并且只保存消息文本中包含 &ldquo;hello&rdquo; 的消息.</p></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/commit/0c5bb2ba77d1b6f79e5a3834fbff7c3c56979212 title='最后修改者 krau | 2025/08/03' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2025/08/03</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/_index.md target=_blank rel=noopener><img src=/svg/edit.svg class=book-icon alt>
<span>编辑本页</span></a></div></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><div class=book-comments></div><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav id=TableOfContents><ul><li><a href=#转存文件>转存文件</a></li><li><a href=#静默模式-silent>静默模式 (silent)</a></li><li><a href=#存储规则>存储规则</a><ul><li><a href=#filename-regex>FILENAME-REGEX</a></li><li><a href=#message-regex>MESSAGE-REGEX</a></li><li><a href=#is-album>IS-ALBUM</a></li></ul></li><li><a href=#监听聊天>监听聊天</a><ul><li><a href=#msgre>msgre</a></li></ul></li></ul></nav></div></aside></main></body></html>
</code></pre><p>这将会监听 ID 为 12345678 的聊天, 并且只保存消息文本中包含 &ldquo;hello&rdquo; 的消息.</p><h2 id=转存-telegram-之外的文件>转存 Telegram 之外的文件
<a class=anchor href=#%e8%bd%ac%e5%ad%98-telegram-%e4%b9%8b%e5%a4%96%e7%9a%84%e6%96%87%e4%bb%b6>#</a></h2><p>除了 Telegram 上的文件, Bot 还可通过 JavaScript 插件或内置解析器来支持转存其他网站的文件.</p><blockquote><p>查看<a href=../contribute>贡献解析器</a>文档了解详情</p></blockquote><p>只需向 Bot 发送符合解析器要求的链接即可使用, 当前内置的解析器:</p><ul><li>Twitter</li></ul></article><footer class=book-footer><div class="flex flex-wrap justify-between"><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/commit/5f9bba9ff777d0a379b5938ef7a944aa980bbc83 title='最后修改者 krau | 2025/08/22' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2025/08/22</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/_index.md target=_blank rel=noopener><img src=/svg/edit.svg class=book-icon alt>
<span>编辑本页</span></a></div></div><script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script></footer><div class=book-comments></div><label for=menu-control class="hidden book-menu-overlay"></label></div><aside class=book-toc><div class=book-toc-content><nav id=TableOfContents><ul><li><a href=#转存文件>转存文件</a></li><li><a href=#静默模式-silent>静默模式 (silent)</a></li><li><a href=#存储规则>存储规则</a><ul><li><a href=#filename-regex>FILENAME-REGEX</a></li><li><a href=#message-regex>MESSAGE-REGEX</a></li><li><a href=#is-album>IS-ALBUM</a></li></ul></li><li><a href=#监听聊天>监听聊天</a><ul><li><a href=#msgre>msgre</a></li></ul></li><li><a href=#转存-telegram-之外的文件>转存 Telegram 之外的文件</a></li></ul></nav></div></aside></main></body></html>

View File

@@ -1 +1 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://sabot.unv.app/deployment/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/"/></url><url><loc>https://sabot.unv.app/usage/</loc><lastmod>2025-08-03T17:35:47+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/usage/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/usage/"/></url><url><loc>https://sabot.unv.app/help/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/help/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/help/"/></url><url><loc>https://sabot.unv.app/contribute/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/contribute/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/contribute/"/></url><url><loc>https://sabot.unv.app/categories/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/categories/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/categories/"/></url><url><loc>https://sabot.unv.app/tags/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/tags/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/tags/"/></url><url><loc>https://sabot.unv.app/deployment/installation/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/installation/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/installation/"/></url><url><loc>https://sabot.unv.app/deployment/configuration/storages/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/configuration/storages/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/configuration/storages/"/></url><url><loc>https://sabot.unv.app/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/"/></url><url><loc>https://sabot.unv.app/deployment/configuration/</loc><lastmod>2025-08-03T17:35:47+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/configuration/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/configuration/"/></url></urlset>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://sabot.unv.app/deployment/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/"/></url><url><loc>https://sabot.unv.app/usage/</loc><lastmod>2025-08-22T09:56:53+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/usage/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/usage/"/></url><url><loc>https://sabot.unv.app/help/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/help/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/help/"/></url><url><loc>https://sabot.unv.app/contribute/</loc><lastmod>2025-08-22T09:56:53+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/contribute/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/contribute/"/></url><url><loc>https://sabot.unv.app/categories/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/categories/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/categories/"/></url><url><loc>https://sabot.unv.app/tags/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/tags/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/tags/"/></url><url><loc>https://sabot.unv.app/deployment/installation/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/installation/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/installation/"/></url><url><loc>https://sabot.unv.app/deployment/configuration/storages/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/configuration/storages/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/configuration/storages/"/></url><url><loc>https://sabot.unv.app/</loc><lastmod>2025-06-16T15:58:03+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/"/></url><url><loc>https://sabot.unv.app/deployment/configuration/</loc><lastmod>2025-08-03T17:35:47+08:00</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sabot.unv.app/en/deployment/configuration/"/><xhtml:link rel="alternate" hreflang="zh" href="https://sabot.unv.app/deployment/configuration/"/></url></urlset>