文件命名与重名策略

文件命名与重名策略 #

可通过 /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 会回退到默认的文件名生成逻辑.