文件命名与重名策略 #
可通过 /config 和 /template 自定义文件命名方式与重名冲突策略。
/config — 用户配置
#
/config 命令包含以下设置:
- 文件名策略:保存文件的命名方式
- 重名文件保存策略:目标存储中已存在同名文件时的处理方式
- 静默模式:直接保存到默认位置,不再每次询问
- 默认存储:选择静默模式和无规则匹配时使用的默认存储及目录
- 文件名模板:查看当前模板与
/template用法
设置按用户分别保存,对该用户后续所有的保存与转存任务生效。
文件名策略 #
| 选项 | 行为 |
|---|---|
默认 | 使用媒体原始文件名,无原始文件名时使用生成名称 |
优先从消息生成 | 优先根据消息内容(如 caption、文本)生成文件名,而非原始文件名 |
自定义模板 | 使用 /template 设置的自定义模板渲染文件名 |
重名文件保存策略 #
| 选项 | 行为 |
|---|---|
始终重命名 (默认) | 保留已有文件,新文件自动追加后缀保存 |
每次询问 | 每次遇到重名时通过内联按钮提示选择 |
始终覆盖 | 用新文件替换已有文件 |
始终跳过 | 跳过不保存 |
重名策略仅在能够检测文件是否已存在的存储后端生效. 不支持检测文件是否存在的存储后端会退化为覆盖行为.
/template — 自定义文件名模板
#
当文件名策略设置为 自定义模板 时, SaveAny-Bot 会用 /template 配置的模板来渲染所保存文件的文件名.
/template [模板]
- 不带参数运行
/template会显示当前模板以及帮助说明 - 带模板字符串运行则会把它设为你的文件名模板
模板使用 Go text/template 语法. 可用变量如下:
| 变量 | 说明 |
|---|---|
{{.msgid}} | Telegram 消息 ID |
{{.msgtags}} | 消息中的标签, 以 _ 连接输出 |
{{.msggen}} | 根据消息生成的文件名 |
{{.msgdate}} | 消息日期, 格式 YYYY-MM-DD_HH-MM-SS |
{{.msgraw}} | 消息的原始文本内容 (不做处理) |
{{.origname}} | 媒体的原始文件名 (如有) |
{{.chatid}} | 消息所在聊天的 ID |
示例:
# 固定前缀 + 消息 ID + 日期
/template 图片_{{.msgid}}_{{.msgdate}}.jpg
# 优先使用原始文件名, 没有则用生成名
/template {{.origname}}
当媒体组按批次保存时 (发送给 Bot 的媒体组, 以及命中 `NEW-FOR-ALBUM` 规则的监听媒体组), 没有自身文本的文件会使用媒体组的文本填充模板变量和消息规则, 因此每个文件都能取得 `{{.msgtags}}` 与 `{{.msgraw}}`. 若模板对多个文件产生相同名称, 后续文件会保留自动生成的名称.
模板仅在文件名策略设置为 `自定义模板` 时生效. 如果模板解析失败, SaveAny-Bot 会回退到默认的文件名生成逻辑.