mirror of
https://github.com/krau/SaveAny-Bot.git
synced 2026-06-29 03:01:24 +08:00
deploy: 38355dfd14
This commit is contained in:
236
usage/api/index.html
Normal file
236
usage/api/index.html
Normal 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>"0.0.0.0"</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>"your-token"</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 <your-token>
|
||||
</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>"error"</span>: <span style=color:#e6db74>"unauthorized"</span>, <span style=color:#f92672>"message"</span>: <span style=color:#e6db74>"invalid token"</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>"error"</span>: <span style=color:#e6db74>"error_code"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"message"</span>: <span style=color:#e6db74>"错误说明"</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>"status"</span>: <span style=color:#e6db74>"ok"</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>"storages"</span>: [
|
||||
</span></span><span style=display:flex><span> { <span style=color:#f92672>"name"</span>: <span style=color:#e6db74>"local"</span>, <span style=color:#f92672>"type"</span>: <span style=color:#e6db74>"local"</span> },
|
||||
</span></span><span style=display:flex><span> { <span style=color:#f92672>"name"</span>: <span style=color:#e6db74>"MyMinio"</span>, <span style=color:#f92672>"type"</span>: <span style=color:#e6db74>"s3"</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>"types"</span>: [
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"directlinks"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"ytdlp"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"aria2"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"parseditem"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"tgfiles"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"tphpics"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"transfer"</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 <token>
|
||||
</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>"type"</span>: <span style=color:#e6db74>"<任务类型>"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"<存储名>"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"<子目录>"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"webhook"</span>: <span style=color:#e6db74>"<回调URL>"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</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>"task_id"</span>: <span style=color:#e6db74>"abc123xyz"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"type"</span>: <span style=color:#e6db74>"directlinks"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"status"</span>: <span style=color:#e6db74>"queued"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"created_at"</span>: <span style=color:#e6db74>"2026-03-11T10:00:00Z"</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>"type"</span>: <span style=color:#e6db74>"directlinks"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"downloads"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"urls"</span>: [
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"https://example.com/file.zip"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"https://example.com/other.zip"</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>"type"</span>: <span style=color:#e6db74>"ytdlp"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"videos"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"urls"</span>: [<span style=color:#e6db74>"https://www.youtube.com/watch?v=xxx"</span>],
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"flags"</span>: [<span style=color:#e6db74>"--extract-audio"</span>, <span style=color:#e6db74>"--audio-format"</span>, <span style=color:#e6db74>"mp3"</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>"type"</span>: <span style=color:#e6db74>"aria2"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"downloads"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"urls"</span>: [<span style=color:#e6db74>"magnet:?xt=urn:btih:..."</span>],
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"options"</span>: { <span style=color:#f92672>"split"</span>: <span style=color:#e6db74>"4"</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>"type"</span>: <span style=color:#e6db74>"parseditem"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"parsed"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"url"</span>: <span style=color:#e6db74>"https://some-site.com/page"</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>"type"</span>: <span style=color:#e6db74>"tgfiles"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"telegram"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"message_links"</span>: [
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"https://t.me/username/123"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#e6db74>"https://t.me/c/1234567890/456"</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>"type"</span>: <span style=color:#e6db74>"tphpics"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"telegraph"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"telegraph_url"</span>: <span style=color:#e6db74>"https://telegra.ph/Some-Article-01-01"</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>"type"</span>: <span style=color:#e6db74>"transfer"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"params"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"source_storage"</span>: <span style=color:#e6db74>"MyS3"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"source_path"</span>: <span style=color:#e6db74>"backups/"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"target_storage"</span>: <span style=color:#e6db74>"LocalDisk"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"target_path"</span>: <span style=color:#e6db74>"restored/"</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>"tasks"</span>: [
|
||||
</span></span><span style=display:flex><span> {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"task_id"</span>: <span style=color:#e6db74>"abc123xyz"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"type"</span>: <span style=color:#e6db74>"directlinks"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"status"</span>: <span style=color:#e6db74>"running"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"title"</span>: <span style=color:#e6db74>"file.zip"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"downloads"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"error"</span>: <span style=color:#e6db74>""</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"created_at"</span>: <span style=color:#e6db74>"2026-03-11T10:00:00Z"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"updated_at"</span>: <span style=color:#e6db74>"2026-03-11T10:00:05Z"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"progress"</span>: {
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"total_bytes"</span>: <span style=color:#ae81ff>10485760</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"downloaded_bytes"</span>: <span style=color:#ae81ff>5242880</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"percent"</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>"total"</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>"message"</span>: <span style=color:#e6db74>"task cancelled successfully"</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>"task_id"</span>: <span style=color:#e6db74>"abc123xyz"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"type"</span>: <span style=color:#e6db74>"directlinks"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"status"</span>: <span style=color:#e6db74>"completed"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"storage"</span>: <span style=color:#e6db74>"local"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"path"</span>: <span style=color:#e6db74>"downloads"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"completed_at"</span>: <span style=color:#e6db74>"2026-03-11T10:01:00Z"</span>,
|
||||
</span></span><span style=display:flex><span> <span style=color:#f92672>"error"</span>: <span style=color:#e6db74>""</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
53
usage/aria2/index.html
Normal 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 <uri1> <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>"http://localhost:6800/jsonrpc"</span>
|
||||
</span></span><span style=display:flex><span><span style=color:#a6e22e>secret</span> = <span style=color:#e6db74>"your-rpc-secret"</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>
|
||||
21
usage/directlinks/index.html
Normal file
21
usage/directlinks/index.html
Normal 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 <url1> <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>
|
||||
@@ -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>“规则类型 规则内容 存储名 路径”</p><p>注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:</p><pre tabindex=0><code>/rule add FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
|
||||
</code></pre><p>此外, 规则中的存储名若使用 “CHOSEN” , 则表示存储到点击按钮选择的存储端的路径下</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>规则中的路径若使用 “NEW-FOR-ALBUM” , 则表示为该组消息新建一个文件夹来存储它们. 见: <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 <chat_id/username> [filter]
|
||||
</code></pre><p>取消监听:</p><pre tabindex=0><code>/unwatch <chat_id/username>
|
||||
</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 的聊天, 并且只保存消息文本中包含 “hello” 的消息.</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 <url1> <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 <uri1> <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>"http://localhost:6800/jsonrpc"</span>
|
||||
</span></span><span style=display:flex><span><span style=color:#a6e22e>secret</span> = <span style=color:#e6db74>"your-rpc-secret"</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 <url1> <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 <format></code>: 指定下载格式 (如 <code>best</code>, <code>worst</code>, <code>bestvideo+bestaudio</code>)</li><li><code>--extract-audio</code>: 提取音频</li><li><code>--audio-format <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 <source_storage>:/<source_path> <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>".*\.mp4</span>$<span style=color:#e6db74>"</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>"(?i)\.(jpg|png|gif)</span>$<span style=color:#e6db74>"</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>
|
||||
243
usage/index.xml
243
usage/index.xml
@@ -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><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></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><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></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><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></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><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></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><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></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><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&gt;</code>: 指定下载格式 (如 <code>best</code>, <code>worst</code>, <code>bestvideo+bestaudio</code>)</li>
|
||||
<li><code>--extract-audio</code>: 提取音频</li>
|
||||
<li><code>--audio-format &lt;format&gt;</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></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><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></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><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></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><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></description></item></channel></rss>
|
||||
21
usage/parsers/index.html
Normal file
21
usage/parsers/index.html
Normal 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
60
usage/rules/index.html
Normal 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
|
||||
|
||||
添加规则的基本语法:
|
||||
“规则类型 规则内容 存储名 路径”
|
||||
注意空格的使用, 语法正确 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 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>“规则类型 规则内容 存储名 路径”</p><p>注意空格的使用, 语法正确 bot 才能解析, 以下是一条合法的添加规则命令:</p><pre tabindex=0><code>/rule add FILENAME-REGEX (?i)\.(mp4|mkv|ts|avi|flv)$ MyAlist /视频
|
||||
</code></pre><p>此外, 规则中的存储名若使用 “CHOSEN” , 则表示存储到点击按钮选择的存储端的路径下</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>规则中的路径若使用 “NEW-FOR-ALBUM” , 则表示为该组消息新建一个文件夹来存储它们. 见: <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
17
usage/silent/index.html
Normal 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
63
usage/transfer/index.html
Normal 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 <source_storage>:/<source_path> <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>".*\.mp4</span>$<span style=color:#e6db74>"</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>"(?i)\.(jpg|png|gif)</span>$<span style=color:#e6db74>"</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
38
usage/watch/index.html
Normal 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 的聊天, 并且只保存消息文本中包含 “hello” 的消息."><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 <chat_id/username> [filter]
|
||||
</code></pre><p>取消监听:</p><pre tabindex=0><code>/unwatch <chat_id/username>
|
||||
</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 的聊天, 并且只保存消息文本中包含 “hello” 的消息.</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
50
usage/ytdlp/index.html
Normal 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 <url1> <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 <format></code>: 指定下载格式 (如 <code>best</code>, <code>worst</code>, <code>bestvideo+bestaudio</code>)</li><li><code>--extract-audio</code>: 提取音频</li><li><code>--audio-format <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>
|
||||
Reference in New Issue
Block a user