feat: update transfer command to remove target path requirement and adjust usage instructions
This commit is contained in:
@@ -2,7 +2,6 @@ package handlers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
@@ -28,7 +27,7 @@ func handleTransferCmd(ctx *ext.Context, update *ext.Update) error {
|
||||
logger := log.FromContext(ctx)
|
||||
args := strutil.ParseArgsRespectQuotes(update.EffectiveMessage.Text)
|
||||
|
||||
if len(args) < 3 {
|
||||
if len(args) < 2 {
|
||||
ctx.Reply(update, ext.ReplyTextString(i18n.T(i18nk.BotMsgTransferUsage, nil)), nil)
|
||||
return dispatcher.EndGroups
|
||||
}
|
||||
@@ -42,9 +41,6 @@ func handleTransferCmd(ctx *ext.Context, update *ext.Update) error {
|
||||
sourceStorageName := sourceParts[0]
|
||||
sourcePath := sourceParts[1]
|
||||
|
||||
// Parse target path (without storage name)
|
||||
targetPath := args[2]
|
||||
|
||||
userID := update.GetUserChat().GetID()
|
||||
|
||||
// Get source storage
|
||||
@@ -94,8 +90,8 @@ func handleTransferCmd(ctx *ext.Context, update *ext.Update) error {
|
||||
|
||||
// Optional filter
|
||||
var filter *regexp.Regexp
|
||||
if len(args) >= 4 {
|
||||
filter, err = regexp.Compile(args[3])
|
||||
if len(args) >= 3 {
|
||||
filter, err = regexp.Compile(args[2])
|
||||
if err != nil {
|
||||
ctx.EditMessage(update.EffectiveChat().GetID(), &tg.MessagesEditMessageRequest{
|
||||
ID: replied.ID,
|
||||
@@ -139,7 +135,6 @@ func handleTransferCmd(ctx *ext.Context, update *ext.Update) error {
|
||||
TransferSourceStorName: sourceStorageName,
|
||||
TransferSourcePath: sourcePath,
|
||||
TransferFiles: filePaths,
|
||||
TransferTargetPath: targetPath,
|
||||
})
|
||||
if err != nil {
|
||||
logger.Errorf("Failed to build storage selection keyboard: %s", err)
|
||||
@@ -209,7 +204,6 @@ func handleTransferCallback(ctx *ext.Context, userID int64, targetStorage storag
|
||||
}
|
||||
|
||||
// Build task elements for the selected files
|
||||
targetPath := path.Join(dirPath, data.TransferTargetPath)
|
||||
elems := make([]transfer.TaskElement, 0, len(data.TransferFiles))
|
||||
var totalSize int64
|
||||
for _, filePath := range data.TransferFiles {
|
||||
@@ -218,7 +212,7 @@ func handleTransferCallback(ctx *ext.Context, userID int64, targetStorage storag
|
||||
logger.Warnf("File not found in source storage: %s", filePath)
|
||||
continue
|
||||
}
|
||||
elem := transfer.NewTaskElement(sourceStorage, fileInfo, targetStorage, targetPath)
|
||||
elem := transfer.NewTaskElement(sourceStorage, fileInfo, targetStorage, dirPath)
|
||||
elems = append(elems, *elem)
|
||||
totalSize += fileInfo.Size
|
||||
}
|
||||
|
||||
@@ -57,7 +57,6 @@ func BuildAddSelectStorageKeyboard(stors []storage.Storage, adddata tcbdata.Add)
|
||||
TransferSourceStorName: adddata.TransferSourceStorName,
|
||||
TransferSourcePath: adddata.TransferSourcePath,
|
||||
TransferFiles: adddata.TransferFiles,
|
||||
TransferTargetPath: adddata.TransferTargetPath,
|
||||
}
|
||||
dataid := xid.New().String()
|
||||
err := cache.Set(dataid, data)
|
||||
|
||||
@@ -299,11 +299,11 @@ bot:
|
||||
error_download_failed: "yt-dlp download failed: {{.Error}}"
|
||||
transfer:
|
||||
usage: |
|
||||
Usage: /transfer <source_storage>:/<source_path> <target_path> [filter]
|
||||
Usage: /transfer <source_storage>:/<source_path> [filter]
|
||||
Examples:
|
||||
/transfer local1:/downloads /backup
|
||||
/transfer alist1:/media/photos /photos
|
||||
/transfer webdav1:/files /archive ".*\.mp4$"
|
||||
/transfer local1:/downloads
|
||||
/transfer alist1:/media/photos
|
||||
/transfer webdav1:/files ".*\.mp4$"
|
||||
error_invalid_source: "Invalid source path format, should be: storage_name:/path"
|
||||
error_invalid_target: "Invalid target path format, should be: storage_name:/path"
|
||||
error_storage_not_found: "Storage '{{.StorageName}}' not found or access denied: {{.Error}}"
|
||||
|
||||
@@ -300,11 +300,11 @@ bot:
|
||||
error_download_failed: "yt-dlp 下载失败: {{.Error}}"
|
||||
transfer:
|
||||
usage: |
|
||||
用法: /transfer <source_storage>:/<source_path> <target_path> [filter]
|
||||
用法: /transfer <source_storage>:/<source_path> [filter]
|
||||
示例:
|
||||
/transfer local1:/downloads /backup
|
||||
/transfer alist1:/media/photos /photos
|
||||
/transfer webdav1:/files /archive ".*\.mp4$"
|
||||
/transfer local1:/downloads
|
||||
/transfer alist1:/media/photos
|
||||
/transfer webdav1:/files ".*\.mp4$"
|
||||
error_invalid_source: "源路径格式无效,应为: storage_name:/path"
|
||||
error_invalid_target: "目标路径格式无效,应为: storage_name:/path"
|
||||
error_storage_not_found: "存储端 '{{.StorageName}}' 不存在或您无权访问: {{.Error}}"
|
||||
|
||||
@@ -54,7 +54,6 @@ type Add struct {
|
||||
TransferSourceStorName string
|
||||
TransferSourcePath string
|
||||
TransferFiles []string // file paths relative to source storage
|
||||
TransferTargetPath string
|
||||
}
|
||||
|
||||
type SetDefaultStorage struct {
|
||||
|
||||
Reference in New Issue
Block a user