This commit is contained in:
krau
2026-03-11 11:38:19 +00:00
parent d25e585651
commit 6e3c293dce
45 changed files with 1823 additions and 184 deletions

236
usage/api/index.html Normal file
View File

@@ -0,0 +1,236 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='
HTTP API
#
SaveAny-Bot 提供了一套 HTTP API允许你通过程序化方式创建下载/转存任务、查询任务状态、取消任务等,无需通过 Telegram 操作。
启用 API
#
在 config.toml 中添加或修改以下配置:
[api]
enable = true
host = "0.0.0.0" # 监听地址,默认 0.0.0.0
port = 8080 # 监听端口,默认 8080
token = "your-token" # 鉴权 Token强烈建议设置
也可通过环境变量覆盖(前缀 SAVEANY_
环境变量
对应配置项
SAVEANY_API_ENABLE
api.enable
SAVEANY_API_HOST
api.host
SAVEANY_API_PORT
api.port
SAVEANY_API_TOKEN
api.token
若 `token` 为空API 服务将**不进行任何鉴权**即可访问,存在安全风险。
鉴权
#
当配置了 token 时,所有 API 请求均需在 HTTP 请求头中携带 Bearer Token
Authorization: Bearer <your-token>
鉴权失败时返回 401
{ "error": "unauthorized", "message": "invalid token" }
错误响应格式
#
所有错误均使用统一的 JSON 格式:'><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/api/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="HTTP API"><meta property="og:description" content='HTTP API # SaveAny-Bot 提供了一套 HTTP API允许你通过程序化方式创建下载/转存任务、查询任务状态、取消任务等,无需通过 Telegram 操作。
启用 API # 在 config.toml 中添加或修改以下配置:
[api] enable = true host = "0.0.0.0" # 监听地址,默认 0.0.0.0 port = 8080 # 监听端口,默认 8080 token = "your-token" # 鉴权 Token强烈建议设置 也可通过环境变量覆盖(前缀 SAVEANY_
环境变量 对应配置项 SAVEANY_API_ENABLE api.enable SAVEANY_API_HOST api.host SAVEANY_API_PORT api.port SAVEANY_API_TOKEN api.token 若 `token` 为空API 服务将**不进行任何鉴权**即可访问,存在安全风险。 鉴权 # 当配置了 token 时,所有 API 请求均需在 HTTP 请求头中携带 Bearer Token
Authorization: Bearer <your-token> 鉴权失败时返回 401
{ "error": "unauthorized", "message": "invalid token" } 错误响应格式 # 所有错误均使用统一的 JSON 格式:'><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><title>HTTP API | 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/api/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/api/ title="HTTP API"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/api/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/ class=active>HTTP API</a></li></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>HTTP API</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=#启用-api>启用 API</a></li><li><a href=#鉴权>鉴权</a></li><li><a href=#错误响应格式>错误响应格式</a></li><li><a href=#接口列表>接口列表</a><ul><li><a href=#get-health--健康检查>GET /health — 健康检查</a></li><li><a href=#get-apiv1storages--列出存储>GET /api/v1/storages — 列出存储</a></li><li><a href=#get-apiv1task-types--列出支持的任务类型>GET /api/v1/task-types — 列出支持的任务类型</a></li><li><a href=#post-apiv1tasks--创建任务>POST /api/v1/tasks — 创建任务</a></li><li><a href=#get-apiv1tasks--列出所有任务>GET /api/v1/tasks — 列出所有任务</a></li><li><a href=#get-apiv1taskstask_id--查询任务>GET /api/v1/tasks/{task_id} — 查询任务</a></li><li><a href=#delete-apiv1taskstask_id--取消任务>DELETE /api/v1/tasks/{task_id} — 取消任务</a></li></ul></li><li><a href=#任务状态>任务状态</a></li><li><a href=#webhook-回调>Webhook 回调</a></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=http-api>HTTP API
<a class=anchor href=#http-api>#</a></h1><p>SaveAny-Bot 提供了一套 HTTP API允许你通过程序化方式创建下载/转存任务、查询任务状态、取消任务等,无需通过 Telegram 操作。</p><h2 id=启用-api>启用 API
<a class=anchor href=#%e5%90%af%e7%94%a8-api>#</a></h2><p><code>config.toml</code> 中添加或修改以下配置:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-toml data-lang=toml><span style=display:flex><span>[<span style=color:#a6e22e>api</span>]
</span></span><span style=display:flex><span><span style=color:#a6e22e>enable</span> = <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>host</span> = <span style=color:#e6db74>&#34;0.0.0.0&#34;</span> <span style=color:#75715e># 监听地址,默认 0.0.0.0</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>port</span> = <span style=color:#ae81ff>8080</span> <span style=color:#75715e># 监听端口,默认 8080</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>token</span> = <span style=color:#e6db74>&#34;your-token&#34;</span> <span style=color:#75715e># 鉴权 Token强烈建议设置</span>
</span></span></code></pre></div><p>也可通过环境变量覆盖(前缀 <code>SAVEANY_</code></p><table><thead><tr><th>环境变量</th><th>对应配置项</th></tr></thead><tbody><tr><td><code>SAVEANY_API_ENABLE</code></td><td><code>api.enable</code></td></tr><tr><td><code>SAVEANY_API_HOST</code></td><td><code>api.host</code></td></tr><tr><td><code>SAVEANY_API_PORT</code></td><td><code>api.port</code></td></tr><tr><td><code>SAVEANY_API_TOKEN</code></td><td><code>api.token</code></td></tr></tbody></table><blockquote class="book-hint warning">若 `token` 为空API 服务将**不进行任何鉴权**即可访问,存在安全风险。</blockquote><h2 id=鉴权>鉴权
<a class=anchor href=#%e9%89%b4%e6%9d%83>#</a></h2><p>当配置了 <code>token</code> 时,所有 API 请求均需在 HTTP 请求头中携带 Bearer Token</p><pre tabindex=0><code>Authorization: Bearer &lt;your-token&gt;
</code></pre><p>鉴权失败时返回 <code>401</code></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{ <span style=color:#f92672>&#34;error&#34;</span>: <span style=color:#e6db74>&#34;unauthorized&#34;</span>, <span style=color:#f92672>&#34;message&#34;</span>: <span style=color:#e6db74>&#34;invalid token&#34;</span> }
</span></span></code></pre></div><h2 id=错误响应格式>错误响应格式
<a class=anchor href=#%e9%94%99%e8%af%af%e5%93%8d%e5%ba%94%e6%a0%bc%e5%bc%8f>#</a></h2><p>所有错误均使用统一的 JSON 格式:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;error&#34;</span>: <span style=color:#e6db74>&#34;error_code&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;message&#34;</span>: <span style=color:#e6db74>&#34;错误说明&#34;</span>
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p>常见错误码:</p><table><thead><tr><th>错误码</th><th>HTTP 状态</th><th>含义</th></tr></thead><tbody><tr><td><code>unauthorized</code></td><td>401</td><td>鉴权失败</td></tr><tr><td><code>method_not_allowed</code></td><td>405</td><td>HTTP 方法不正确</td></tr><tr><td><code>invalid_request</code></td><td>400</td><td>请求体/参数非法</td></tr><tr><td><code>task_creation_failed</code></td><td>400</td><td>任务创建失败</td></tr><tr><td><code>task_not_found</code></td><td>404</td><td>任务 ID 不存在</td></tr><tr><td><code>cancel_failed</code></td><td>500</td><td>取消任务失败</td></tr><tr><td><code>internal_error</code></td><td>500</td><td>服务器内部错误</td></tr></tbody></table><hr><h2 id=接口列表>接口列表
<a class=anchor href=#%e6%8e%a5%e5%8f%a3%e5%88%97%e8%a1%a8>#</a></h2><h3 id=get-health--健康检查>GET /health — 健康检查
<a class=anchor href=#get-health--%e5%81%a5%e5%ba%b7%e6%a3%80%e6%9f%a5>#</a></h3><p>无需鉴权。</p><p><strong>响应 <code>200 OK</code></strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{ <span style=color:#f92672>&#34;status&#34;</span>: <span style=color:#e6db74>&#34;ok&#34;</span> }
</span></span></code></pre></div><hr><h3 id=get-apiv1storages--列出存储>GET /api/v1/storages — 列出存储
<a class=anchor href=#get-apiv1storages--%e5%88%97%e5%87%ba%e5%ad%98%e5%82%a8>#</a></h3><p>返回当前所有已加载的存储后端。</p><p><strong>响应 <code>200 OK</code></strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storages&#34;</span>: [
</span></span><span style=display:flex><span> { <span style=color:#f92672>&#34;name&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>, <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span> },
</span></span><span style=display:flex><span> { <span style=color:#f92672>&#34;name&#34;</span>: <span style=color:#e6db74>&#34;MyMinio&#34;</span>, <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;s3&#34;</span> }
</span></span><span style=display:flex><span> ]
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><hr><h3 id=get-apiv1task-types--列出支持的任务类型>GET /api/v1/task-types — 列出支持的任务类型
<a class=anchor href=#get-apiv1task-types--%e5%88%97%e5%87%ba%e6%94%af%e6%8c%81%e7%9a%84%e4%bb%bb%e5%8a%a1%e7%b1%bb%e5%9e%8b>#</a></h3><p><strong>响应 <code>200 OK</code></strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;types&#34;</span>: [
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;directlinks&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;ytdlp&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;aria2&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;parseditem&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;tgfiles&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;tphpics&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;transfer&#34;</span>
</span></span><span style=display:flex><span> ]
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><hr><h3 id=post-apiv1tasks--创建任务>POST /api/v1/tasks — 创建任务
<a class=anchor href=#post-apiv1tasks--%e5%88%9b%e5%bb%ba%e4%bb%bb%e5%8a%a1>#</a></h3><p><strong>请求头:</strong></p><pre tabindex=0><code>Content-Type: application/json
Authorization: Bearer &lt;token&gt;
</code></pre><p><strong>请求体:</strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;&lt;任务类型&gt;&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;&lt;存储名&gt;&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;&lt;子目录&gt;&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;webhook&#34;</span>: <span style=color:#e6db74>&#34;&lt;回调URL&gt;&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: { }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>type</code></td><td>string</td><td></td><td>任务类型,见下文</td></tr><tr><td><code>storage</code></td><td>string</td><td></td><td>目标存储名,须与配置中的存储名一致</td></tr><tr><td><code>path</code></td><td>string</td><td></td><td>存储内的子目录路径</td></tr><tr><td><code>webhook</code></td><td>string</td><td></td><td>任务完成/失败时的回调地址</td></tr><tr><td><code>params</code></td><td>object</td><td></td><td>各任务类型的专属参数,见下文</td></tr></tbody></table><p><strong>响应 <code>201 Created</code></strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;task_id&#34;</span>: <span style=color:#e6db74>&#34;abc123xyz&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;directlinks&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;status&#34;</span>: <span style=color:#e6db74>&#34;queued&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;created_at&#34;</span>: <span style=color:#e6db74>&#34;2026-03-11T10:00:00Z&#34;</span>
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h4 id=任务类型与-params>任务类型与 params
<a class=anchor href=#%e4%bb%bb%e5%8a%a1%e7%b1%bb%e5%9e%8b%e4%b8%8e-params>#</a></h4><h5 id=directlinks--直接下载链接>directlinks — 直接下载链接
<a class=anchor href=#directlinks--%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bd%bd%e9%93%be%e6%8e%a5>#</a></h5><p>下载一个或多个 HTTP/HTTPS 直链文件。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;directlinks&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;downloads&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;urls&#34;</span>: [
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;https://example.com/file.zip&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;https://example.com/other.zip&#34;</span>
</span></span><span style=display:flex><span> ]
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>params 字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>urls</code></td><td>[]string</td><td></td><td>下载地址列表,至少 1 条</td></tr></tbody></table><h5 id=ytdlp--yt-dlp-视频下载>ytdlp — yt-dlp 视频下载
<a class=anchor href=#ytdlp--yt-dlp-%e8%a7%86%e9%a2%91%e4%b8%8b%e8%bd%bd>#</a></h5><blockquote class="book-hint warning">需要在系统中安装 yt-dlp。</blockquote><p>通过 yt-dlp 下载视频/音频,支持 YouTube、Bilibili 等 1000+ 网站。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;ytdlp&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;videos&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;urls&#34;</span>: [<span style=color:#e6db74>&#34;https://www.youtube.com/watch?v=xxx&#34;</span>],
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;flags&#34;</span>: [<span style=color:#e6db74>&#34;--extract-audio&#34;</span>, <span style=color:#e6db74>&#34;--audio-format&#34;</span>, <span style=color:#e6db74>&#34;mp3&#34;</span>]
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>params 字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>urls</code></td><td>[]string</td><td></td><td>媒体链接列表,至少 1 条</td></tr><tr><td><code>flags</code></td><td>[]string</td><td></td><td>额外的 yt-dlp 命令行参数</td></tr></tbody></table><h5 id=aria2--aria2-下载>aria2 — Aria2 下载
<a class=anchor href=#aria2--aria2-%e4%b8%8b%e8%bd%bd>#</a></h5><blockquote class="book-hint warning">需要在配置文件中启用并配置 Aria2 RPC。</blockquote><p>通过 Aria2 下载管理器下载文件,支持 HTTP/HTTPS、FTP、BitTorrent磁力链接、种子等协议。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;aria2&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;downloads&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;urls&#34;</span>: [<span style=color:#e6db74>&#34;magnet:?xt=urn:btih:...&#34;</span>],
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;options&#34;</span>: { <span style=color:#f92672>&#34;split&#34;</span>: <span style=color:#e6db74>&#34;4&#34;</span> }
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>params 字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>urls</code></td><td>[]string</td><td></td><td>下载地址列表,至少 1 条</td></tr><tr><td><code>options</code></td><td>map[string]string</td><td></td><td>Aria2 下载选项</td></tr></tbody></table><h5 id=parseditem--解析器下载>parseditem — 解析器下载
<a class=anchor href=#parseditem--%e8%a7%a3%e6%9e%90%e5%99%a8%e4%b8%8b%e8%bd%bd>#</a></h5><p>将 URL 交由已注册的 JS 插件或内置解析器处理后下载。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;parseditem&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;parsed&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;url&#34;</span>: <span style=color:#e6db74>&#34;https://some-site.com/page&#34;</span>
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>params 字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>url</code></td><td>string</td><td></td><td>待解析的页面 URL</td></tr></tbody></table><p>若没有任何解析器能处理该 URL则返回 <code>400 task_creation_failed</code></p><h5 id=tgfiles--telegram-消息文件下载>tgfiles — Telegram 消息文件下载
<a class=anchor href=#tgfiles--telegram-%e6%b6%88%e6%81%af%e6%96%87%e4%bb%b6%e4%b8%8b%e8%bd%bd>#</a></h5><p>通过 Telegram 消息链接下载文件。支持以下链接格式:</p><ul><li><code>https://t.me/username/123</code> — 公开频道/群组</li><li><code>https://t.me/c/123456789/123</code> — 私有频道(数字 ID</li><li><code>https://t.me/c/123456789/111/456</code> — 话题消息</li><li><code>https://t.me/username/111/456</code> — 用户名频道下的话题消息</li></ul><p>若消息属于媒体组(相册),默认下载整组文件。在链接末尾追加 <code>?single</code> 可强制只下载单条消息的文件。</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;tgfiles&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;telegram&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;message_links&#34;</span>: [
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;https://t.me/username/123&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#e6db74>&#34;https://t.me/c/1234567890/456&#34;</span>
</span></span><span style=display:flex><span> ]
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>params 字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>message_links</code></td><td>[]string</td><td></td><td>Telegram 消息链接列表,至少 1 条</td></tr></tbody></table><h5 id=tphpics--telegraph-文章图片下载>tphpics — Telegraph 文章图片下载
<a class=anchor href=#tphpics--telegraph-%e6%96%87%e7%ab%a0%e5%9b%be%e7%89%87%e4%b8%8b%e8%bd%bd>#</a></h5><p>下载 Telegra.ph 文章中的所有图片。</p><p>支持的链接前缀:<code>https://telegra.ph/</code><code>http://telegra.ph/</code><code>https://telegraph.co/</code><code>http://telegraph.co/</code></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;tphpics&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;telegraph&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;telegraph_url&#34;</span>: <span style=color:#e6db74>&#34;https://telegra.ph/Some-Article-01-01&#34;</span>
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>params 字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>telegraph_url</code></td><td>string</td><td></td><td>Telegra.ph 文章 URL</td></tr></tbody></table><h5 id=transfer--存储间文件传输>transfer — 存储间文件传输
<a class=anchor href=#transfer--%e5%ad%98%e5%82%a8%e9%97%b4%e6%96%87%e4%bb%b6%e4%bc%a0%e8%be%93>#</a></h5><p>在两个存储后端之间直接传输文件,无需经过 Telegram。源存储须支持列举list和读取read操作。</p><blockquote class="book-hint info">`transfer` 任务中,顶层的 `storage` 字段仍然必须填写(用于通过参数校验),但实际使用的存储由 `params` 中的 `source_storage` 和 `target_storage` 决定。</blockquote><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;transfer&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;params&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;source_storage&#34;</span>: <span style=color:#e6db74>&#34;MyS3&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;source_path&#34;</span>: <span style=color:#e6db74>&#34;backups/&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;target_storage&#34;</span>: <span style=color:#e6db74>&#34;LocalDisk&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;target_path&#34;</span>: <span style=color:#e6db74>&#34;restored/&#34;</span>
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><table><thead><tr><th>params 字段</th><th>类型</th><th>必填</th><th>说明</th></tr></thead><tbody><tr><td><code>source_storage</code></td><td>string</td><td></td><td>源存储名</td></tr><tr><td><code>source_path</code></td><td>string</td><td></td><td>源存储中的路径,须包含至少一个文件</td></tr><tr><td><code>target_storage</code></td><td>string</td><td></td><td>目标存储名</td></tr><tr><td><code>target_path</code></td><td>string</td><td></td><td>目标存储中的路径</td></tr></tbody></table><hr><h3 id=get-apiv1tasks--列出所有任务>GET /api/v1/tasks — 列出所有任务
<a class=anchor href=#get-apiv1tasks--%e5%88%97%e5%87%ba%e6%89%80%e6%9c%89%e4%bb%bb%e5%8a%a1>#</a></h3><p>返回所有 API 创建的任务(仅在内存中保留,重启后清空)。</p><p><strong>响应 <code>200 OK</code></strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;tasks&#34;</span>: [
</span></span><span style=display:flex><span> {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;task_id&#34;</span>: <span style=color:#e6db74>&#34;abc123xyz&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;directlinks&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;status&#34;</span>: <span style=color:#e6db74>&#34;running&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;title&#34;</span>: <span style=color:#e6db74>&#34;file.zip&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;downloads&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;error&#34;</span>: <span style=color:#e6db74>&#34;&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;created_at&#34;</span>: <span style=color:#e6db74>&#34;2026-03-11T10:00:00Z&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;updated_at&#34;</span>: <span style=color:#e6db74>&#34;2026-03-11T10:00:05Z&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;progress&#34;</span>: {
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;total_bytes&#34;</span>: <span style=color:#ae81ff>10485760</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;downloaded_bytes&#34;</span>: <span style=color:#ae81ff>5242880</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;percent&#34;</span>: <span style=color:#ae81ff>50.0</span>
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> ],
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;total&#34;</span>: <span style=color:#ae81ff>1</span>
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p><code>progress</code> 字段仅在 <code>total_bytes > 0</code> 时出现。<code>error</code> 字段仅在有错误时出现。</p><hr><h3 id=get-apiv1taskstask_id--查询任务>GET /api/v1/tasks/{task_id} — 查询任务
<a class=anchor href=#get-apiv1taskstask_id--%e6%9f%a5%e8%af%a2%e4%bb%bb%e5%8a%a1>#</a></h3><p><strong>路径参数:</strong> <code>task_id</code> — 创建任务时返回的 ID。</p><p><strong>响应 <code>200 OK</code></strong> 同上列表中的单个任务对象。</p><p><strong>错误响应:</strong></p><ul><li><code>400 invalid_request</code> — 路径中未提供 task_id</li><li><code>404 task_not_found</code> — 任务不存在</li></ul><hr><h3 id=delete-apiv1taskstask_id--取消任务>DELETE /api/v1/tasks/{task_id} — 取消任务
<a class=anchor href=#delete-apiv1taskstask_id--%e5%8f%96%e6%b6%88%e4%bb%bb%e5%8a%a1>#</a></h3><p><strong>路径参数:</strong> <code>task_id</code></p><p><strong>响应 <code>200 OK</code></strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{ <span style=color:#f92672>&#34;message&#34;</span>: <span style=color:#e6db74>&#34;task cancelled successfully&#34;</span> }
</span></span></code></pre></div><p><strong>错误响应:</strong></p><ul><li><code>400 invalid_request</code> — 路径中未提供 task_id</li><li><code>404 task_not_found</code> — 任务不存在</li><li><code>500 cancel_failed</code> — 取消操作失败</li></ul><hr><h2 id=任务状态>任务状态
<a class=anchor href=#%e4%bb%bb%e5%8a%a1%e7%8a%b6%e6%80%81>#</a></h2><table><thead><tr><th>状态值</th><th>含义</th></tr></thead><tbody><tr><td><code>queued</code></td><td>已入队,等待执行</td></tr><tr><td><code>running</code></td><td>正在执行</td></tr><tr><td><code>completed</code></td><td>已成功完成</td></tr><tr><td><code>failed</code></td><td>执行失败</td></tr><tr><td><code>cancelled</code></td><td>已通过 DELETE 接口取消</td></tr></tbody></table><hr><h2 id=webhook-回调>Webhook 回调
<a class=anchor href=#webhook-%e5%9b%9e%e8%b0%83>#</a></h2><p>创建任务时可设置 <code>webhook</code> 字段。当任务进入终态(<code>completed</code><code>failed</code><code>cancelled</code>Bot 会向该地址发送一个 <code>POST</code> 请求。</p><p><strong>回调请求头:</strong></p><pre tabindex=0><code>Content-Type: application/json
User-Agent: SaveAny-Bot/1.0
</code></pre><p><strong>回调请求体:</strong></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-json data-lang=json><span style=display:flex><span>{
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;task_id&#34;</span>: <span style=color:#e6db74>&#34;abc123xyz&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;type&#34;</span>: <span style=color:#e6db74>&#34;directlinks&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;status&#34;</span>: <span style=color:#e6db74>&#34;completed&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;storage&#34;</span>: <span style=color:#e6db74>&#34;local&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;path&#34;</span>: <span style=color:#e6db74>&#34;downloads&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;completed_at&#34;</span>: <span style=color:#e6db74>&#34;2026-03-11T10:01:00Z&#34;</span>,
</span></span><span style=display:flex><span> <span style=color:#f92672>&#34;error&#34;</span>: <span style=color:#e6db74>&#34;&#34;</span>
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p><code>completed_at</code> 仅在状态为 <code>completed</code><code>failed</code> 时出现。<code>error</code> 仅在有错误时出现。</p><p><strong>重试机制:</strong> 最多重试 3 次,重试间隔依次为 1 秒、2 秒、3 秒。每次请求超时为 30 秒。</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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/api.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=#启用-api>启用 API</a></li><li><a href=#鉴权>鉴权</a></li><li><a href=#错误响应格式>错误响应格式</a></li><li><a href=#接口列表>接口列表</a><ul><li><a href=#get-health--健康检查>GET /health — 健康检查</a></li><li><a href=#get-apiv1storages--列出存储>GET /api/v1/storages — 列出存储</a></li><li><a href=#get-apiv1task-types--列出支持的任务类型>GET /api/v1/task-types — 列出支持的任务类型</a></li><li><a href=#post-apiv1tasks--创建任务>POST /api/v1/tasks — 创建任务</a></li><li><a href=#get-apiv1tasks--列出所有任务>GET /api/v1/tasks — 列出所有任务</a></li><li><a href=#get-apiv1taskstask_id--查询任务>GET /api/v1/tasks/{task_id} — 查询任务</a></li><li><a href=#delete-apiv1taskstask_id--取消任务>DELETE /api/v1/tasks/{task_id} — 取消任务</a></li></ul></li><li><a href=#任务状态>任务状态</a></li><li><a href=#webhook-回调>Webhook 回调</a></li></ul></nav></div></aside></main></body></html>

53
usage/aria2/index.html Normal file
View File

@@ -0,0 +1,53 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='
Aria2 下载
#
该功能需要在配置文件中启用 Aria2 并配置 RPC 连接.
使用 /aria2dl 命令可以通过 Aria2 下载管理器下载文件, 支持 HTTP/HTTPS、FTP、BitTorrent 等多种协议.
/aria2dl <uri1> [uri2] [uri3] ...
示例:
# 下载 HTTP 链接
/aria2dl https://example.com/file.zip
# 下载磁力链接
/aria2dl magnet:?xt=urn:btih:...
# 下载种子文件 (需要先上传 .torrent 文件)
/aria2dl https://example.com/file.torrent
配置 Aria2:
在 config.toml 中添加:
[aria2]
enable = true
url = "http://localhost:6800/jsonrpc"
secret = "your-rpc-secret" # 如果配置了 rpc-secret
remove_after_transfer = true # 转存完成后删除本地文件
'><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/aria2/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="Aria2 下载"><meta property="og:description" content='Aria2 下载 # 该功能需要在配置文件中启用 Aria2 并配置 RPC 连接. 使用 /aria2dl 命令可以通过 Aria2 下载管理器下载文件, 支持 HTTP/HTTPS、FTP、BitTorrent 等多种协议.
/aria2dl <uri1> [uri2] [uri3] ... 示例:
# 下载 HTTP 链接 /aria2dl https://example.com/file.zip # 下载磁力链接 /aria2dl magnet:?xt=urn:btih:... # 下载种子文件 (需要先上传 .torrent 文件) /aria2dl https://example.com/file.torrent 配置 Aria2:
在 config.toml 中添加:
[aria2] enable = true url = "http://localhost:6800/jsonrpc" secret = "your-rpc-secret" # 如果配置了 rpc-secret remove_after_transfer = true # 转存完成后删除本地文件'><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><title>Aria2 下载 | 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/aria2/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/aria2/ title="Aria2 Download"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/aria2/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/ class=active>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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>Aria2 下载</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></nav></aside></header><article class="markdown book-article"><h1 id=aria2-下载>Aria2 下载
<a class=anchor href=#aria2-%e4%b8%8b%e8%bd%bd>#</a></h1><blockquote class="book-hint warning">该功能需要在配置文件中启用 Aria2 并配置 RPC 连接.</blockquote><p>使用 <code>/aria2dl</code> 命令可以通过 Aria2 下载管理器下载文件, 支持 HTTP/HTTPS、FTP、BitTorrent 等多种协议.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/aria2dl &lt;uri1&gt; <span style=color:#f92672>[</span>uri2<span style=color:#f92672>]</span> <span style=color:#f92672>[</span>uri3<span style=color:#f92672>]</span> ...
</span></span></code></pre></div><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#75715e># 下载 HTTP 链接</span>
</span></span><span style=display:flex><span>/aria2dl https://example.com/file.zip
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 下载磁力链接</span>
</span></span><span style=display:flex><span>/aria2dl magnet:?xt<span style=color:#f92672>=</span>urn:btih:...
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 下载种子文件 (需要先上传 .torrent 文件)</span>
</span></span><span style=display:flex><span>/aria2dl https://example.com/file.torrent
</span></span></code></pre></div><p>配置 Aria2:</p><p><code>config.toml</code> 中添加:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-toml data-lang=toml><span style=display:flex><span>[<span style=color:#a6e22e>aria2</span>]
</span></span><span style=display:flex><span><span style=color:#a6e22e>enable</span> = <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>url</span> = <span style=color:#e6db74>&#34;http://localhost:6800/jsonrpc&#34;</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>secret</span> = <span style=color:#e6db74>&#34;your-rpc-secret&#34;</span> <span style=color:#75715e># 如果配置了 rpc-secret</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>remove_after_transfer</span> = <span style=color:#66d9ef>true</span> <span style=color:#75715e># 转存完成后删除本地文件</span>
</span></span></code></pre></div></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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/aria2.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></nav></div></aside></main></body></html>

View File

@@ -0,0 +1,21 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="
直接下载链接
#
使用 /dl 命令可以直接下载一个或多个 HTTP/HTTPS 链接的文件到存储中.
/dl <url1> [url2] [url3] ...
示例:
/dl https://example.com/file.zip
/dl https://example.com/file1.zip https://example.com/file2.zip
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/directlinks/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="直接下载链接"><meta property="og:description" content="直接下载链接 # 使用 /dl 命令可以直接下载一个或多个 HTTP/HTTPS 链接的文件到存储中.
/dl <url1> [url2] [url3] ... 示例:
/dl https://example.com/file.zip /dl https://example.com/file1.zip https://example.com/file2.zip Bot 会验证链接格式, 然后让你选择目标存储位置."><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><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/directlinks/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/directlinks/ title="Direct Download Links"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/directlinks/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/ class=active>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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></nav></aside></header><article class="markdown book-article"><h1 id=直接下载链接>直接下载链接
<a class=anchor href=#%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bd%bd%e9%93%be%e6%8e%a5>#</a></h1><p>使用 <code>/dl</code> 命令可以直接下载一个或多个 HTTP/HTTPS 链接的文件到存储中.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/dl &lt;url1&gt; <span style=color:#f92672>[</span>url2<span style=color:#f92672>]</span> <span style=color:#f92672>[</span>url3<span style=color:#f92672>]</span> ...
</span></span></code></pre></div><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/dl https://example.com/file.zip
</span></span><span style=display:flex><span>/dl https://example.com/file1.zip https://example.com/file2.zip
</span></span></code></pre></div><p>Bot 会验证链接格式, 然后让你选择目标存储位置.</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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/directlinks.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></nav></div></aside></main></body></html>

View File

@@ -12,98 +12,13 @@
文件或媒体消息, 如图片, 视频, 文档等
Telegram 消息链接, 例如: https://t.me/acherkrau/1097. 即使频道禁止了转发和保存, Bot 依然可以下载其文件.
Telegra.ph 的文章链接, Bot 将下载其中的所有图片
静默模式 (silent)
#
使用 /silent 命令可以开关静默模式.
默认情况下不开启静默模式, Bot 会询问你每个文件的保存位置.
开启静默模式后, Bot 会直接保存文件到默认位置, 无需确认.
在开启静默模式之前, 需要使用 /storage 命令设置默认保存位置.
存储规则
#
允许你为 Bot 在上传文件到存储时设置一些重定向规则, 用于自动整理所保存的文件.
见: #28
目前支持的规则类型:
FILENAME-REGEX
MESSAGE-REGEX
IS-ALBUM
添加规则的基本语法:"><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 提问.
"><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 添加规则的基本语法:"><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>
文件或媒体消息, 如图片, 视频, 文档等 Telegram 消息链接, 例如: https://t.me/acherkrau/1097. 即使频道禁止了转发和保存, Bot 依然可以下载其文件. Telegra.ph 的文章链接, 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>
<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><li><a href=#直接下载链接>直接下载链接</a></li><li><a href=#aria2-下载>Aria2 下载</a></li><li><a href=#yt-dlp-视频下载>yt-dlp 视频下载</a></li><li><a href=#存储间传输>存储间传输</a></li><li><a href=#转存-telegram-之外的文件>转存 Telegram 之外的文件</a></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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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></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 的转存 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
<a class=anchor href=#filename-regex>#</a></h3><p>根据文件名正则匹配, 规则内容要求为一个合法的正则表达式, 如</p><pre tabindex=0><code>FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
</code></pre><p>表示将文件名后缀为 mp4,mkv,ts,avi,flv 的文件放到名为 MyAlist 存储下的 /视频 目录内 (同时受配置文件中的 <code>base_path</code> 影响)</p><h3 id=message-regex>MESSAGE-REGEX
<a class=anchor href=#message-regex>#</a></h3><p>同上, 但是是根据消息本身的文本内容正则匹配</p><h3 id=is-album>IS-ALBUM
<a class=anchor href=#is-album>#</a></h3><p>匹配相册消息 (media group), 规则内容只能为 <code>true</code><code>false</code>.</p><p>规则中的路径若使用 &ldquo;NEW-FOR-ALBUM&rdquo; , 则表示为该组消息新建一个文件夹来存储它们. 见: <a href=https://github.com/krau/SaveAny-Bot/issues/87>https://github.com/krau/SaveAny-Bot/issues/87</a></p><p>例如:</p><pre tabindex=0><code>IS-ALBUM true MyWebdav NEW-FOR-ALBUM
</code></pre><p>这将会把以 media group 形式发送的消息保存到名为 MyWebdav 的存储下, 并为每个相册新建一个文件夹(由第一个文件生成)来存储它们.</p><h2 id=监听聊天>监听聊天
<a class=anchor href=#%e7%9b%91%e5%90%ac%e8%81%8a%e5%a4%a9>#</a></h2><blockquote class="book-hint warning">该功能需开启 UserBot 集成.</blockquote><p>监听指定聊天的消息, 并自动保存到默认存储中, 遵从存储规则, 并且可以设置过滤器来只保存匹配的消息.</p><p>监听聊天:</p><pre tabindex=0><code>/watch &lt;chat_id/username&gt; [filter]
</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><h2 id=直接下载链接>直接下载链接
<a class=anchor href=#%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bd%bd%e9%93%be%e6%8e%a5>#</a></h2><p>使用 <code>/dl</code> 命令可以直接下载一个或多个 HTTP/HTTPS 链接的文件到存储中.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/dl &lt;url1&gt; <span style=color:#f92672>[</span>url2<span style=color:#f92672>]</span> <span style=color:#f92672>[</span>url3<span style=color:#f92672>]</span> ...
</span></span></code></pre></div><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/dl https://example.com/file.zip
</span></span><span style=display:flex><span>/dl https://example.com/file1.zip https://example.com/file2.zip
</span></span></code></pre></div><p>Bot 会验证链接格式, 然后让你选择目标存储位置.</p><h2 id=aria2-下载>Aria2 下载
<a class=anchor href=#aria2-%e4%b8%8b%e8%bd%bd>#</a></h2><blockquote class="book-hint warning">该功能需要在配置文件中启用 Aria2 并配置 RPC 连接.</blockquote><p>使用 <code>/aria2dl</code> 命令可以通过 Aria2 下载管理器下载文件, 支持 HTTP/HTTPS、FTP、BitTorrent 等多种协议.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/aria2dl &lt;uri1&gt; <span style=color:#f92672>[</span>uri2<span style=color:#f92672>]</span> <span style=color:#f92672>[</span>uri3<span style=color:#f92672>]</span> ...
</span></span></code></pre></div><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#75715e># 下载 HTTP 链接</span>
</span></span><span style=display:flex><span>/aria2dl https://example.com/file.zip
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 下载磁力链接</span>
</span></span><span style=display:flex><span>/aria2dl magnet:?xt<span style=color:#f92672>=</span>urn:btih:...
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 下载种子文件 (需要先上传 .torrent 文件)</span>
</span></span><span style=display:flex><span>/aria2dl https://example.com/file.torrent
</span></span></code></pre></div><p>配置 Aria2:</p><p><code>config.toml</code> 中添加:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-toml data-lang=toml><span style=display:flex><span>[<span style=color:#a6e22e>aria2</span>]
</span></span><span style=display:flex><span><span style=color:#a6e22e>enable</span> = <span style=color:#66d9ef>true</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>url</span> = <span style=color:#e6db74>&#34;http://localhost:6800/jsonrpc&#34;</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>secret</span> = <span style=color:#e6db74>&#34;your-rpc-secret&#34;</span> <span style=color:#75715e># 如果配置了 rpc-secret</span>
</span></span><span style=display:flex><span><span style=color:#a6e22e>remove_after_transfer</span> = <span style=color:#66d9ef>true</span> <span style=color:#75715e># 转存完成后删除本地文件</span>
</span></span></code></pre></div><h2 id=yt-dlp-视频下载>yt-dlp 视频下载
<a class=anchor href=#yt-dlp-%e8%a7%86%e9%a2%91%e4%b8%8b%e8%bd%bd>#</a></h2><blockquote class="book-hint warning">该功能需要在系统中安装 yt-dlp 命令行工具.</blockquote><p>使用 <code>/ytdlp</code> 命令可以下载支持的视频网站的视频和音频, 支持 YouTube、Bilibili、Twitter 等 1000+ 个网站.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/ytdlp &lt;url1&gt; <span style=color:#f92672>[</span>url2<span style=color:#f92672>]</span> <span style=color:#f92672>[</span>flags...<span style=color:#f92672>]</span>
</span></span></code></pre></div><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#75715e># 基本下载</span>
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>dQw4w9WgXcQ
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 下载多个视频</span>
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>video1 https://www.youtube.com/watch?v<span style=color:#f92672>=</span>video2
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 使用自定义参数</span>
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>dQw4w9WgXcQ -f best
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>dQw4w9WgXcQ --extract-audio --audio-format mp3
</span></span></code></pre></div><p>常用参数:</p><ul><li><code>-f &lt;format></code>: 指定下载格式 (如 <code>best</code>, <code>worst</code>, <code>bestvideo+bestaudio</code>)</li><li><code>--extract-audio</code>: 提取音频</li><li><code>--audio-format &lt;format></code>: 音频格式 (如 <code>mp3</code>, <code>m4a</code>, <code>wav</code>)</li><li><code>--write-sub</code>: 下载字幕</li><li><code>--write-thumbnail</code>: 下载缩略图</li></ul><p>更多参数请参考 <a href=https://github.com/yt-dlp/yt-dlp#usage-and-options>yt-dlp 文档</a>.</p><h2 id=存储间传输>存储间传输
<a class=anchor href=#%e5%ad%98%e5%82%a8%e9%97%b4%e4%bc%a0%e8%be%93>#</a></h2><p>使用 <code>/transfer</code> 命令可以在不同存储之间直接传输文件, 无需经过 Telegram.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/transfer &lt;source_storage&gt;:/&lt;source_path&gt; <span style=color:#f92672>[</span>filter<span style=color:#f92672>]</span>
</span></span></code></pre></div><p>参数说明:</p><ul><li><code>source_storage</code>: 源存储名称</li><li><code>source_path</code>: 源路径</li><li><code>filter</code>: 可选的正则表达式过滤器, 只传输匹配的文件</li></ul><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#75715e># 传输整个目录</span>
</span></span><span style=display:flex><span>/transfer local1:/downloads
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 传输指定路径的文件</span>
</span></span><span style=display:flex><span>/transfer alist1:/media/photos
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 只传输 mp4 文件</span>
</span></span><span style=display:flex><span>/transfer webdav1:/videos <span style=color:#e6db74>&#34;.*\.mp4</span>$<span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 传输图片文件</span>
</span></span><span style=display:flex><span>/transfer local1:/pictures <span style=color:#e6db74>&#34;(?i)\.(jpg|png|gif)</span>$<span style=color:#e6db74>&#34;</span>
</span></span></code></pre></div><p>Bot 会:</p><ol><li>列出源路径下的所有文件</li><li>应用过滤器 (如果提供)</li><li>显示文件数量和总大小</li><li>让你选择目标存储</li><li>让你选择目标目录 (如果该存储配置了目录)</li><li>开始传输任务</li></ol><p>注意:</p><ul><li>源存储必须支持列举和读取功能</li><li>目标存储必须支持写入功能</li><li>传输过程显示实时进度</li><li>支持取消正在进行的传输任务</li></ul><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><li>Kemono</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/33a886fac9ff1d63ee44bb246eaad8bb3441035f title='最后修改者 krau | 2026/01/19' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/01/19</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=#直接下载链接>直接下载链接</a></li><li><a href=#aria2-下载>Aria2 下载</a></li><li><a href=#yt-dlp-视频下载>yt-dlp 视频下载</a></li><li><a href=#存储间传输>存储间传输</a></li><li><a href=#转存-telegram-之外的文件>转存 Telegram 之外的文件</a></li></ul></nav></div></aside></main></body></html>
<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></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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</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></ul></nav></div></aside></main></body></html>

View File

@@ -1 +1,242 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>使用帮助 on Save Any Bot</title><link>https://sabot.unv.app/usage/</link><description>Recent content in 使用帮助 on Save Any Bot</description><generator>Hugo</generator><language>zh</language><atom:link href="https://sabot.unv.app/usage/index.xml" rel="self" type="application/rss+xml"/></channel></rss>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>使用帮助 on Save Any Bot</title><link>https://sabot.unv.app/usage/</link><description>Recent content in 使用帮助 on Save Any Bot</description><generator>Hugo</generator><language>zh</language><atom:link href="https://sabot.unv.app/usage/index.xml" rel="self" type="application/rss+xml"/><item><title>静默模式</title><link>https://sabot.unv.app/usage/silent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/silent/</guid><description>&lt;h1 id="静默模式-silent">
静默模式 (silent)
&lt;a class="anchor" href="#%e9%9d%99%e9%bb%98%e6%a8%a1%e5%bc%8f-silent">#&lt;/a>
&lt;/h1>
&lt;p>使用 &lt;code>/silent&lt;/code> 命令可以开关静默模式.&lt;/p>
&lt;p>默认情况下不开启静默模式, Bot 会询问你每个文件的保存位置.&lt;/p>
&lt;p>开启静默模式后, Bot 会直接保存文件到默认位置, 无需确认.&lt;/p>
&lt;p>在开启静默模式之前, 需要使用 &lt;code>/storage&lt;/code> 命令设置默认保存位置.&lt;/p></description></item><item><title>存储规则</title><link>https://sabot.unv.app/usage/rules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/rules/</guid><description>&lt;h1 id="存储规则">
存储规则
&lt;a class="anchor" href="#%e5%ad%98%e5%82%a8%e8%a7%84%e5%88%99">#&lt;/a>
&lt;/h1>
&lt;p>允许你为 Bot 在上传文件到存储时设置一些重定向规则, 用于自动整理所保存的文件.&lt;/p>
&lt;p>见: &lt;a href="https://github.com/krau/SaveAny-Bot/issues/28" target="_blank">#28&lt;/a>&lt;/p>
&lt;p>目前支持的规则类型:&lt;/p>
&lt;ol>
&lt;li>FILENAME-REGEX&lt;/li>
&lt;li>MESSAGE-REGEX&lt;/li>
&lt;li>IS-ALBUM&lt;/li>
&lt;/ol>
&lt;p>添加规则的基本语法:&lt;/p>
&lt;p>&amp;ldquo;规则类型 规则内容 存储名 路径&amp;rdquo;&lt;/p>
&lt;p>注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:&lt;/p>
&lt;pre tabindex="0">&lt;code>/rule add FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
&lt;/code>&lt;/pre>&lt;p>此外, 规则中的存储名若使用 &amp;ldquo;CHOSEN&amp;rdquo; , 则表示存储到点击按钮选择的存储端的路径下&lt;/p>
&lt;p>规则类型:&lt;/p>
&lt;h2 id="filename-regex">
FILENAME-REGEX
&lt;a class="anchor" href="#filename-regex">#&lt;/a>
&lt;/h2>
&lt;p>根据文件名正则匹配, 规则内容要求为一个合法的正则表达式, 如&lt;/p>
&lt;pre tabindex="0">&lt;code>FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
&lt;/code>&lt;/pre>&lt;p>表示将文件名后缀为 mp4,mkv,ts,avi,flv 的文件放到名为 MyAlist 存储下的 /视频 目录内 (同时受配置文件中的 &lt;code>base_path&lt;/code> 影响)&lt;/p>
&lt;h2 id="message-regex">
MESSAGE-REGEX
&lt;a class="anchor" href="#message-regex">#&lt;/a>
&lt;/h2>
&lt;p>同上, 但是是根据消息本身的文本内容正则匹配&lt;/p>
&lt;h2 id="is-album">
IS-ALBUM
&lt;a class="anchor" href="#is-album">#&lt;/a>
&lt;/h2>
&lt;p>匹配相册消息 (media group), 规则内容只能为 &lt;code>true&lt;/code> 或 &lt;code>false&lt;/code>.&lt;/p>
&lt;p>规则中的路径若使用 &amp;ldquo;NEW-FOR-ALBUM&amp;rdquo; , 则表示为该组消息新建一个文件夹来存储它们. 见: &lt;a href="https://github.com/krau/SaveAny-Bot/issues/87">https://github.com/krau/SaveAny-Bot/issues/87&lt;/a>&lt;/p></description></item><item><title>监听聊天</title><link>https://sabot.unv.app/usage/watch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/watch/</guid><description>&lt;h1 id="监听聊天">
监听聊天
&lt;a class="anchor" href="#%e7%9b%91%e5%90%ac%e8%81%8a%e5%a4%a9">#&lt;/a>
&lt;/h1>
&lt;blockquote class="book-hint warning">
该功能需开启 UserBot 集成.
&lt;/blockquote>
&lt;p>监听指定聊天的消息, 并自动保存到默认存储中, 遵从存储规则, 并且可以设置过滤器来只保存匹配的消息.&lt;/p>
&lt;p>监听聊天:&lt;/p>
&lt;pre tabindex="0">&lt;code>/watch &amp;lt;chat_id/username&amp;gt; [filter]
&lt;/code>&lt;/pre>&lt;p>取消监听:&lt;/p>
&lt;pre tabindex="0">&lt;code>/unwatch &amp;lt;chat_id/username&amp;gt;
&lt;/code>&lt;/pre>&lt;p>过滤器类型:&lt;/p>
&lt;h2 id="msgre">
msgre
&lt;a class="anchor" href="#msgre">#&lt;/a>
&lt;/h2>
&lt;p>正则匹配消息文本, 例如:&lt;/p>
&lt;pre tabindex="0">&lt;code>/watch 12345678 msgre:.*hello.*
&lt;/code>&lt;/pre>&lt;p>这将会监听 ID 为 12345678 的聊天, 并且只保存消息文本中包含 &amp;ldquo;hello&amp;rdquo; 的消息.&lt;/p></description></item><item><title>直接下载链接</title><link>https://sabot.unv.app/usage/directlinks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/directlinks/</guid><description>&lt;h1 id="直接下载链接">
直接下载链接
&lt;a class="anchor" href="#%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bd%bd%e9%93%be%e6%8e%a5">#&lt;/a>
&lt;/h1>
&lt;p>使用 &lt;code>/dl&lt;/code> 命令可以直接下载一个或多个 HTTP/HTTPS 链接的文件到存储中.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>/dl &amp;lt;url1&amp;gt; &lt;span style="color:#f92672">[&lt;/span>url2&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>url3&lt;span style="color:#f92672">]&lt;/span> ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>示例:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>/dl https://example.com/file.zip
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/dl https://example.com/file1.zip https://example.com/file2.zip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Bot 会验证链接格式, 然后让你选择目标存储位置.&lt;/p></description></item><item><title>Aria2 下载</title><link>https://sabot.unv.app/usage/aria2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/aria2/</guid><description>&lt;h1 id="aria2-下载">
Aria2 下载
&lt;a class="anchor" href="#aria2-%e4%b8%8b%e8%bd%bd">#&lt;/a>
&lt;/h1>
&lt;blockquote class="book-hint warning">
该功能需要在配置文件中启用 Aria2 并配置 RPC 连接.
&lt;/blockquote>
&lt;p>使用 &lt;code>/aria2dl&lt;/code> 命令可以通过 Aria2 下载管理器下载文件, 支持 HTTP/HTTPS、FTP、BitTorrent 等多种协议.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>/aria2dl &amp;lt;uri1&amp;gt; &lt;span style="color:#f92672">[&lt;/span>uri2&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>uri3&lt;span style="color:#f92672">]&lt;/span> ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>示例:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 下载 HTTP 链接&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/aria2dl https://example.com/file.zip
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 下载磁力链接&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/aria2dl magnet:?xt&lt;span style="color:#f92672">=&lt;/span>urn:btih:...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 下载种子文件 (需要先上传 .torrent 文件)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/aria2dl https://example.com/file.torrent
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>配置 Aria2:&lt;/p>
&lt;p>在 &lt;code>config.toml&lt;/code> 中添加:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6e22e">aria2&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">enable&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">url&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;http://localhost:6800/jsonrpc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">secret&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;your-rpc-secret&amp;#34;&lt;/span> &lt;span style="color:#75715e"># 如果配置了 rpc-secret&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">remove_after_transfer&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span> &lt;span style="color:#75715e"># 转存完成后删除本地文件&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>yt-dlp 视频下载</title><link>https://sabot.unv.app/usage/ytdlp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/ytdlp/</guid><description>&lt;h1 id="yt-dlp-视频下载">
yt-dlp 视频下载
&lt;a class="anchor" href="#yt-dlp-%e8%a7%86%e9%a2%91%e4%b8%8b%e8%bd%bd">#&lt;/a>
&lt;/h1>
&lt;blockquote class="book-hint warning">
该功能需要在系统中安装 yt-dlp 命令行工具.
&lt;/blockquote>
&lt;p>使用 &lt;code>/ytdlp&lt;/code> 命令可以下载支持的视频网站的视频和音频, 支持 YouTube、Bilibili、Twitter 等 1000+ 个网站.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>/ytdlp &amp;lt;url1&amp;gt; &lt;span style="color:#f92672">[&lt;/span>url2&lt;span style="color:#f92672">]&lt;/span> &lt;span style="color:#f92672">[&lt;/span>flags...&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>示例:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 基本下载&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/ytdlp https://www.youtube.com/watch?v&lt;span style="color:#f92672">=&lt;/span>dQw4w9WgXcQ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 下载多个视频&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/ytdlp https://www.youtube.com/watch?v&lt;span style="color:#f92672">=&lt;/span>video1 https://www.youtube.com/watch?v&lt;span style="color:#f92672">=&lt;/span>video2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 使用自定义参数&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/ytdlp https://www.youtube.com/watch?v&lt;span style="color:#f92672">=&lt;/span>dQw4w9WgXcQ -f best
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/ytdlp https://www.youtube.com/watch?v&lt;span style="color:#f92672">=&lt;/span>dQw4w9WgXcQ --extract-audio --audio-format mp3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>常用参数:&lt;/p>
&lt;ul>
&lt;li>&lt;code>-f &amp;lt;format&amp;gt;&lt;/code>: 指定下载格式 (如 &lt;code>best&lt;/code>, &lt;code>worst&lt;/code>, &lt;code>bestvideo+bestaudio&lt;/code>)&lt;/li>
&lt;li>&lt;code>--extract-audio&lt;/code>: 提取音频&lt;/li>
&lt;li>&lt;code>--audio-format &amp;lt;format&amp;gt;&lt;/code>: 音频格式 (如 &lt;code>mp3&lt;/code>, &lt;code>m4a&lt;/code>, &lt;code>wav&lt;/code>)&lt;/li>
&lt;li>&lt;code>--write-sub&lt;/code>: 下载字幕&lt;/li>
&lt;li>&lt;code>--write-thumbnail&lt;/code>: 下载缩略图&lt;/li>
&lt;/ul>
&lt;p>更多参数请参考 &lt;a href="https://github.com/yt-dlp/yt-dlp#usage-and-options">yt-dlp 文档&lt;/a>.&lt;/p></description></item><item><title>存储间传输</title><link>https://sabot.unv.app/usage/transfer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/transfer/</guid><description>&lt;h1 id="存储间传输">
存储间传输
&lt;a class="anchor" href="#%e5%ad%98%e5%82%a8%e9%97%b4%e4%bc%a0%e8%be%93">#&lt;/a>
&lt;/h1>
&lt;p>使用 &lt;code>/transfer&lt;/code> 命令可以在不同存储之间直接传输文件, 无需经过 Telegram.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>/transfer &amp;lt;source_storage&amp;gt;:/&amp;lt;source_path&amp;gt; &lt;span style="color:#f92672">[&lt;/span>filter&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>参数说明:&lt;/p>
&lt;ul>
&lt;li>&lt;code>source_storage&lt;/code>: 源存储名称&lt;/li>
&lt;li>&lt;code>source_path&lt;/code>: 源路径&lt;/li>
&lt;li>&lt;code>filter&lt;/code>: 可选的正则表达式过滤器, 只传输匹配的文件&lt;/li>
&lt;/ul>
&lt;p>示例:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 传输整个目录&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/transfer local1:/downloads
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 传输指定路径的文件&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/transfer alist1:/media/photos
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 只传输 mp4 文件&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/transfer webdav1:/videos &lt;span style="color:#e6db74">&amp;#34;.*\.mp4&lt;/span>$&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 传输图片文件&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/transfer local1:/pictures &lt;span style="color:#e6db74">&amp;#34;(?i)\.(jpg|png|gif)&lt;/span>$&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Bot 会:&lt;/p>
&lt;ol>
&lt;li>列出源路径下的所有文件&lt;/li>
&lt;li>应用过滤器 (如果提供)&lt;/li>
&lt;li>显示文件数量和总大小&lt;/li>
&lt;li>让你选择目标存储&lt;/li>
&lt;li>让你选择目标目录 (如果该存储配置了目录)&lt;/li>
&lt;li>开始传输任务&lt;/li>
&lt;/ol>
&lt;p>注意:&lt;/p>
&lt;ul>
&lt;li>源存储必须支持列举和读取功能&lt;/li>
&lt;li>目标存储必须支持写入功能&lt;/li>
&lt;li>传输过程显示实时进度&lt;/li>
&lt;li>支持取消正在进行的传输任务&lt;/li>
&lt;/ul></description></item><item><title>转存 Telegram 之外的文件</title><link>https://sabot.unv.app/usage/parsers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/parsers/</guid><description>&lt;h1 id="转存-telegram-之外的文件">
转存 Telegram 之外的文件
&lt;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">#&lt;/a>
&lt;/h1>
&lt;p>除了 Telegram 上的文件, Bot 还可通过 JavaScript 插件或内置解析器来支持转存其他网站的文件.&lt;/p>
&lt;blockquote>
&lt;p>查看&lt;a href="../contribute">贡献解析器&lt;/a>文档了解详情&lt;/p>&lt;/blockquote>
&lt;p>只需向 Bot 发送符合解析器要求的链接即可使用, 当前内置的解析器:&lt;/p>
&lt;ul>
&lt;li>Twitter&lt;/li>
&lt;li>Kemono&lt;/li>
&lt;/ul></description></item><item><title>HTTP API</title><link>https://sabot.unv.app/usage/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sabot.unv.app/usage/api/</guid><description>&lt;h1 id="http-api">
HTTP API
&lt;a class="anchor" href="#http-api">#&lt;/a>
&lt;/h1>
&lt;p>SaveAny-Bot 提供了一套 HTTP API允许你通过程序化方式创建下载/转存任务、查询任务状态、取消任务等,无需通过 Telegram 操作。&lt;/p>
&lt;h2 id="启用-api">
启用 API
&lt;a class="anchor" href="#%e5%90%af%e7%94%a8-api">#&lt;/a>
&lt;/h2>
&lt;p>在 &lt;code>config.toml&lt;/code> 中添加或修改以下配置:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6e22e">api&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">enable&lt;/span> = &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">host&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;0.0.0.0&amp;#34;&lt;/span> &lt;span style="color:#75715e"># 监听地址,默认 0.0.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">port&lt;/span> = &lt;span style="color:#ae81ff">8080&lt;/span> &lt;span style="color:#75715e"># 监听端口,默认 8080&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">token&lt;/span> = &lt;span style="color:#e6db74">&amp;#34;your-token&amp;#34;&lt;/span> &lt;span style="color:#75715e"># 鉴权 Token强烈建议设置&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>也可通过环境变量覆盖(前缀 &lt;code>SAVEANY_&lt;/code>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>环境变量&lt;/th>
&lt;th>对应配置项&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>SAVEANY_API_ENABLE&lt;/code>&lt;/td>
&lt;td>&lt;code>api.enable&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SAVEANY_API_HOST&lt;/code>&lt;/td>
&lt;td>&lt;code>api.host&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SAVEANY_API_PORT&lt;/code>&lt;/td>
&lt;td>&lt;code>api.port&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>SAVEANY_API_TOKEN&lt;/code>&lt;/td>
&lt;td>&lt;code>api.token&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote class="book-hint warning">
若 `token` 为空API 服务将**不进行任何鉴权**即可访问,存在安全风险。
&lt;/blockquote>
&lt;h2 id="鉴权">
鉴权
&lt;a class="anchor" href="#%e9%89%b4%e6%9d%83">#&lt;/a>
&lt;/h2>
&lt;p>当配置了 &lt;code>token&lt;/code> 时,所有 API 请求均需在 HTTP 请求头中携带 Bearer Token&lt;/p>
&lt;pre tabindex="0">&lt;code>Authorization: Bearer &amp;lt;your-token&amp;gt;
&lt;/code>&lt;/pre>&lt;p>鉴权失败时返回 &lt;code>401&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{ &lt;span style="color:#f92672">&amp;#34;error&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;unauthorized&amp;#34;&lt;/span>, &lt;span style="color:#f92672">&amp;#34;message&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;invalid token&amp;#34;&lt;/span> }
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="错误响应格式">
错误响应格式
&lt;a class="anchor" href="#%e9%94%99%e8%af%af%e5%93%8d%e5%ba%94%e6%a0%bc%e5%bc%8f">#&lt;/a>
&lt;/h2>
&lt;p>所有错误均使用统一的 JSON 格式:&lt;/p></description></item></channel></rss>

21
usage/parsers/index.html Normal file
View File

@@ -0,0 +1,21 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="
转存 Telegram 之外的文件
#
除了 Telegram 上的文件, Bot 还可通过 JavaScript 插件或内置解析器来支持转存其他网站的文件.
查看贡献解析器文档了解详情
只需向 Bot 发送符合解析器要求的链接即可使用, 当前内置的解析器:
Twitter
Kemono
"><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/parsers/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="转存 Telegram 之外的文件"><meta property="og:description" content="转存 Telegram 之外的文件 # 除了 Telegram 上的文件, Bot 还可通过 JavaScript 插件或内置解析器来支持转存其他网站的文件.
查看贡献解析器文档了解详情
只需向 Bot 发送符合解析器要求的链接即可使用, 当前内置的解析器:
Twitter Kemono"><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><title>转存 Telegram 之外的文件 | 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/parsers/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/parsers/ title="Save Files Outside Telegram"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/parsers/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/ class=active>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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>转存 Telegram 之外的文件</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></nav></aside></header><article class="markdown book-article"><h1 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></h1><p>除了 Telegram 上的文件, Bot 还可通过 JavaScript 插件或内置解析器来支持转存其他网站的文件.</p><blockquote><p>查看<a href=../contribute>贡献解析器</a>文档了解详情</p></blockquote><p>只需向 Bot 发送符合解析器要求的链接即可使用, 当前内置的解析器:</p><ul><li>Twitter</li><li>Kemono</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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/parsers.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></nav></div></aside></main></body></html>

60
usage/rules/index.html Normal file
View File

@@ -0,0 +1,60 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="
存储规则
#
允许你为 Bot 在上传文件到存储时设置一些重定向规则, 用于自动整理所保存的文件.
见: #28
目前支持的规则类型:
FILENAME-REGEX
MESSAGE-REGEX
IS-ALBUM
添加规则的基本语法:
&ldquo;规则类型 规则内容 存储名 路径&rdquo;
注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:
/rule add FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
此外, 规则中的存储名若使用 &ldquo;CHOSEN&rdquo; , 则表示存储到点击按钮选择的存储端的路径下
规则类型:
FILENAME-REGEX
#
根据文件名正则匹配, 规则内容要求为一个合法的正则表达式, 如
FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
表示将文件名后缀为 mp4,mkv,ts,avi,flv 的文件放到名为 MyAlist 存储下的 /视频 目录内 (同时受配置文件中的 base_path 影响)
MESSAGE-REGEX
#
同上, 但是是根据消息本身的文本内容正则匹配
IS-ALBUM
#
匹配相册消息 (media group), 规则内容只能为 true 或 false.
规则中的路径若使用 &ldquo;NEW-FOR-ALBUM&rdquo; , 则表示为该组消息新建一个文件夹来存储它们. 见: https://github.com/krau/SaveAny-Bot/issues/87"><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/rules/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="存储规则"><meta property="og:description" content="存储规则 # 允许你为 Bot 在上传文件到存储时设置一些重定向规则, 用于自动整理所保存的文件.
见: #28
目前支持的规则类型:
FILENAME-REGEX MESSAGE-REGEX IS-ALBUM 添加规则的基本语法:
“规则类型 规则内容 存储名 路径”
注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:
/rule add FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频 此外, 规则中的存储名若使用 “CHOSEN” , 则表示存储到点击按钮选择的存储端的路径下
规则类型:
FILENAME-REGEX # 根据文件名正则匹配, 规则内容要求为一个合法的正则表达式, 如
FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频 表示将文件名后缀为 mp4,mkv,ts,avi,flv 的文件放到名为 MyAlist 存储下的 /视频 目录内 (同时受配置文件中的 base_path 影响)
MESSAGE-REGEX # 同上, 但是是根据消息本身的文本内容正则匹配
IS-ALBUM # 匹配相册消息 (media group), 规则内容只能为 true 或 false.
规则中的路径若使用 “NEW-FOR-ALBUM” , 则表示为该组消息新建一个文件夹来存储它们. 见: https://github.com/krau/SaveAny-Bot/issues/87"><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><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/rules/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/rules/ title="Storage Rules"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/rules/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/ class=active>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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=#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></nav></aside></header><article class="markdown book-article"><h1 id=存储规则>存储规则
<a class=anchor href=#%e5%ad%98%e5%82%a8%e8%a7%84%e5%88%99>#</a></h1><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><h2 id=filename-regex>FILENAME-REGEX
<a class=anchor href=#filename-regex>#</a></h2><p>根据文件名正则匹配, 规则内容要求为一个合法的正则表达式, 如</p><pre tabindex=0><code>FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
</code></pre><p>表示将文件名后缀为 mp4,mkv,ts,avi,flv 的文件放到名为 MyAlist 存储下的 /视频 目录内 (同时受配置文件中的 <code>base_path</code> 影响)</p><h2 id=message-regex>MESSAGE-REGEX
<a class=anchor href=#message-regex>#</a></h2><p>同上, 但是是根据消息本身的文本内容正则匹配</p><h2 id=is-album>IS-ALBUM
<a class=anchor href=#is-album>#</a></h2><p>匹配相册消息 (media group), 规则内容只能为 <code>true</code><code>false</code>.</p><p>规则中的路径若使用 &ldquo;NEW-FOR-ALBUM&rdquo; , 则表示为该组消息新建一个文件夹来存储它们. 见: <a href=https://github.com/krau/SaveAny-Bot/issues/87>https://github.com/krau/SaveAny-Bot/issues/87</a></p><p>例如:</p><pre tabindex=0><code>IS-ALBUM true MyWebdav NEW-FOR-ALBUM
</code></pre><p>这将会把以 media group 形式发送的消息保存到名为 MyWebdav 的存储下, 并为每个相册新建一个文件夹(由第一个文件生成)来存储它们.</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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/rules.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=#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></nav></div></aside></main></body></html>

17
usage/silent/index.html Normal file
View File

@@ -0,0 +1,17 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="
静默模式 (silent)
#
使用 /silent 命令可以开关静默模式.
默认情况下不开启静默模式, Bot 会询问你每个文件的保存位置.
开启静默模式后, Bot 会直接保存文件到默认位置, 无需确认.
在开启静默模式之前, 需要使用 /storage 命令设置默认保存位置."><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/silent/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="静默模式"><meta property="og:description" content="静默模式 (silent) # 使用 /silent 命令可以开关静默模式.
默认情况下不开启静默模式, Bot 会询问你每个文件的保存位置.
开启静默模式后, Bot 会直接保存文件到默认位置, 无需确认.
在开启静默模式之前, 需要使用 /storage 命令设置默认保存位置."><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><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/silent/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/silent/ title="Silent Mode"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/silent/>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><li><a href=/usage/silent/ class=active>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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></nav></aside></header><article class="markdown book-article"><h1 id=静默模式-silent>静默模式 (silent)
<a class=anchor href=#%e9%9d%99%e9%bb%98%e6%a8%a1%e5%bc%8f-silent>#</a></h1><p>使用 <code>/silent</code> 命令可以开关静默模式.</p><p>默认情况下不开启静默模式, Bot 会询问你每个文件的保存位置.</p><p>开启静默模式后, Bot 会直接保存文件到默认位置, 无需确认.</p><p>在开启静默模式之前, 需要使用 <code>/storage</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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/silent.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></nav></div></aside></main></body></html>

63
usage/transfer/index.html Normal file
View File

@@ -0,0 +1,63 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content='
存储间传输
#
使用 /transfer 命令可以在不同存储之间直接传输文件, 无需经过 Telegram.
/transfer <source_storage>:/<source_path> [filter]
参数说明:
source_storage: 源存储名称
source_path: 源路径
filter: 可选的正则表达式过滤器, 只传输匹配的文件
示例:
# 传输整个目录
/transfer local1:/downloads
# 传输指定路径的文件
/transfer alist1:/media/photos
# 只传输 mp4 文件
/transfer webdav1:/videos ".*\.mp4$"
# 传输图片文件
/transfer local1:/pictures "(?i)\.(jpg|png|gif)$"
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/transfer/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="存储间传输"><meta property="og:description" content='存储间传输 # 使用 /transfer 命令可以在不同存储之间直接传输文件, 无需经过 Telegram.
/transfer <source_storage>:/<source_path> [filter] 参数说明:
source_storage: 源存储名称 source_path: 源路径 filter: 可选的正则表达式过滤器, 只传输匹配的文件 示例:
# 传输整个目录 /transfer local1:/downloads # 传输指定路径的文件 /transfer alist1:/media/photos # 只传输 mp4 文件 /transfer webdav1:/videos ".*\.mp4$" # 传输图片文件 /transfer local1:/pictures "(?i)\.(jpg|png|gif)$" Bot 会:
列出源路径下的所有文件 应用过滤器 (如果提供) 显示文件数量和总大小 让你选择目标存储 让你选择目标目录 (如果该存储配置了目录) 开始传输任务 注意:
源存储必须支持列举和读取功能 目标存储必须支持写入功能 传输过程显示实时进度 支持取消正在进行的传输任务'><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><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/transfer/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/transfer/ title="Storage Transfer"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/transfer/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/ class=active>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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></nav></aside></header><article class="markdown book-article"><h1 id=存储间传输>存储间传输
<a class=anchor href=#%e5%ad%98%e5%82%a8%e9%97%b4%e4%bc%a0%e8%be%93>#</a></h1><p>使用 <code>/transfer</code> 命令可以在不同存储之间直接传输文件, 无需经过 Telegram.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/transfer &lt;source_storage&gt;:/&lt;source_path&gt; <span style=color:#f92672>[</span>filter<span style=color:#f92672>]</span>
</span></span></code></pre></div><p>参数说明:</p><ul><li><code>source_storage</code>: 源存储名称</li><li><code>source_path</code>: 源路径</li><li><code>filter</code>: 可选的正则表达式过滤器, 只传输匹配的文件</li></ul><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#75715e># 传输整个目录</span>
</span></span><span style=display:flex><span>/transfer local1:/downloads
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 传输指定路径的文件</span>
</span></span><span style=display:flex><span>/transfer alist1:/media/photos
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 只传输 mp4 文件</span>
</span></span><span style=display:flex><span>/transfer webdav1:/videos <span style=color:#e6db74>&#34;.*\.mp4</span>$<span style=color:#e6db74>&#34;</span>
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 传输图片文件</span>
</span></span><span style=display:flex><span>/transfer local1:/pictures <span style=color:#e6db74>&#34;(?i)\.(jpg|png|gif)</span>$<span style=color:#e6db74>&#34;</span>
</span></span></code></pre></div><p>Bot 会:</p><ol><li>列出源路径下的所有文件</li><li>应用过滤器 (如果提供)</li><li>显示文件数量和总大小</li><li>让你选择目标存储</li><li>让你选择目标目录 (如果该存储配置了目录)</li><li>开始传输任务</li></ol><p>注意:</p><ul><li>源存储必须支持列举和读取功能</li><li>目标存储必须支持写入功能</li><li>传输过程显示实时进度</li><li>支持取消正在进行的传输任务</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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/transfer.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></nav></div></aside></main></body></html>

38
usage/watch/index.html Normal file
View File

@@ -0,0 +1,38 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="
监听聊天
#
该功能需开启 UserBot 集成.
监听指定聊天的消息, 并自动保存到默认存储中, 遵从存储规则, 并且可以设置过滤器来只保存匹配的消息.
监听聊天:
/watch <chat_id/username> [filter]
取消监听:
/unwatch <chat_id/username>
过滤器类型:
msgre
#
正则匹配消息文本, 例如:
/watch 12345678 msgre:.*hello.*
这将会监听 ID 为 12345678 的聊天, 并且只保存消息文本中包含 &ldquo;hello&rdquo; 的消息."><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/watch/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="监听聊天"><meta property="og:description" content="监听聊天 # 该功能需开启 UserBot 集成. 监听指定聊天的消息, 并自动保存到默认存储中, 遵从存储规则, 并且可以设置过滤器来只保存匹配的消息.
监听聊天:
/watch <chat_id/username> [filter] 取消监听:
/unwatch <chat_id/username> 过滤器类型:
msgre # 正则匹配消息文本, 例如:
/watch 12345678 msgre:.*hello.* 这将会监听 ID 为 12345678 的聊天, 并且只保存消息文本中包含 “hello” 的消息."><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><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/watch/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/watch/ title="Watch Chats"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/watch/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/ class=active>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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=#msgre>msgre</a></li></ul></nav></aside></header><article class="markdown book-article"><h1 id=监听聊天>监听聊天
<a class=anchor href=#%e7%9b%91%e5%90%ac%e8%81%8a%e5%a4%a9>#</a></h1><blockquote class="book-hint warning">该功能需开启 UserBot 集成.</blockquote><p>监听指定聊天的消息, 并自动保存到默认存储中, 遵从存储规则, 并且可以设置过滤器来只保存匹配的消息.</p><p>监听聊天:</p><pre tabindex=0><code>/watch &lt;chat_id/username&gt; [filter]
</code></pre><p>取消监听:</p><pre tabindex=0><code>/unwatch &lt;chat_id/username&gt;
</code></pre><p>过滤器类型:</p><h2 id=msgre>msgre
<a class=anchor href=#msgre>#</a></h2><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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/watch.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=#msgre>msgre</a></li></ul></nav></div></aside></main></body></html>

50
usage/ytdlp/index.html Normal file
View File

@@ -0,0 +1,50 @@
<!doctype html><html lang=zh dir=ltr><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="
yt-dlp 视频下载
#
该功能需要在系统中安装 yt-dlp 命令行工具.
使用 /ytdlp 命令可以下载支持的视频网站的视频和音频, 支持 YouTube、Bilibili、Twitter 等 1000+ 个网站.
/ytdlp <url1> [url2] [flags...]
示例:
# 基本下载
/ytdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ
# 下载多个视频
/ytdlp https://www.youtube.com/watch?v=video1 https://www.youtube.com/watch?v=video2
# 使用自定义参数
/ytdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ -f best
/ytdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ --extract-audio --audio-format mp3
常用参数:
-f <format>: 指定下载格式 (如 best, worst, bestvideo+bestaudio)
--extract-audio: 提取音频
--audio-format <format>: 音频格式 (如 mp3, m4a, wav)
--write-sub: 下载字幕
--write-thumbnail: 下载缩略图
更多参数请参考 yt-dlp 文档."><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/ytdlp/"><meta property="og:site_name" content="Save Any Bot"><meta property="og:title" content="yt-dlp 视频下载"><meta property="og:description" content="yt-dlp 视频下载 # 该功能需要在系统中安装 yt-dlp 命令行工具. 使用 /ytdlp 命令可以下载支持的视频网站的视频和音频, 支持 YouTube、Bilibili、Twitter 等 1000+ 个网站.
/ytdlp <url1> [url2] [flags...] 示例:
# 基本下载 /ytdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ # 下载多个视频 /ytdlp https://www.youtube.com/watch?v=video1 https://www.youtube.com/watch?v=video2 # 使用自定义参数 /ytdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ -f best /ytdlp https://www.youtube.com/watch?v=dQw4w9WgXcQ --extract-audio --audio-format mp3 常用参数:
-f <format>: 指定下载格式 (如 best, worst, bestvideo+bestaudio) --extract-audio: 提取音频 --audio-format <format>: 音频格式 (如 mp3, m4a, wav) --write-sub: 下载字幕 --write-thumbnail: 下载缩略图 更多参数请参考 yt-dlp 文档."><meta property="og:locale" content="zh"><meta property="og:type" content="article"><meta property="article:section" content="usage"><meta property="article:modified_time" content="2026-03-11T19:37:25+08:00"><title>yt-dlp 视频下载 | 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/ytdlp/><link rel=alternate hreflang=en href=https://sabot.unv.app/en/usage/ytdlp/ title="yt-dlp Video Download"><link rel=stylesheet href=/book.min.a22f4c7d8c2bdc5e3d6e34ba11cb59ab50ea5772594e71305bfd5a595dc78b7e.css integrity="sha256-oi9MfYwr3F49bjS6EctZq1DqV3JZTnEwW/1aWV3Hi34=" crossorigin=anonymous></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/ytdlp/>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><li><a href=/usage/silent/>静默模式</a></li><li><a href=/usage/rules/>存储规则</a></li><li><a href=/usage/watch/>监听聊天</a></li><li><a href=/usage/directlinks/>直接下载链接</a></li><li><a href=/usage/aria2/>Aria2 下载</a></li><li><a href=/usage/ytdlp/ class=active>yt-dlp 视频下载</a></li><li><a href=/usage/transfer/>存储间传输</a></li><li><a href=/usage/parsers/>转存 Telegram 之外的文件</a></li><li><a href=/usage/api/>HTTP API</a></li></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>yt-dlp 视频下载</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></nav></aside></header><article class="markdown book-article"><h1 id=yt-dlp-视频下载>yt-dlp 视频下载
<a class=anchor href=#yt-dlp-%e8%a7%86%e9%a2%91%e4%b8%8b%e8%bd%bd>#</a></h1><blockquote class="book-hint warning">该功能需要在系统中安装 yt-dlp 命令行工具.</blockquote><p>使用 <code>/ytdlp</code> 命令可以下载支持的视频网站的视频和音频, 支持 YouTube、Bilibili、Twitter 等 1000+ 个网站.</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>/ytdlp &lt;url1&gt; <span style=color:#f92672>[</span>url2<span style=color:#f92672>]</span> <span style=color:#f92672>[</span>flags...<span style=color:#f92672>]</span>
</span></span></code></pre></div><p>示例:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#75715e># 基本下载</span>
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>dQw4w9WgXcQ
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 下载多个视频</span>
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>video1 https://www.youtube.com/watch?v<span style=color:#f92672>=</span>video2
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#75715e># 使用自定义参数</span>
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>dQw4w9WgXcQ -f best
</span></span><span style=display:flex><span>/ytdlp https://www.youtube.com/watch?v<span style=color:#f92672>=</span>dQw4w9WgXcQ --extract-audio --audio-format mp3
</span></span></code></pre></div><p>常用参数:</p><ul><li><code>-f &lt;format></code>: 指定下载格式 (如 <code>best</code>, <code>worst</code>, <code>bestvideo+bestaudio</code>)</li><li><code>--extract-audio</code>: 提取音频</li><li><code>--audio-format &lt;format></code>: 音频格式 (如 <code>mp3</code>, <code>m4a</code>, <code>wav</code>)</li><li><code>--write-sub</code>: 下载字幕</li><li><code>--write-thumbnail</code>: 下载缩略图</li></ul><p>更多参数请参考 <a href=https://github.com/yt-dlp/yt-dlp#usage-and-options>yt-dlp 文档</a>.</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/38355dfd142f0f1a819a8837875b33da0d3a81b7 title='最后修改者 krau | 2026/03/11' target=_blank rel=noopener><img src=/svg/calendar.svg class=book-icon alt>
<span>2026/03/11</span></a></div><div><a class="flex align-center" href=https://github.com/krau/saveany-bot/edit/main/docs/content/zh/usage/ytdlp.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></nav></div></aside></main></body></html>