feat: reimpl save command

This commit is contained in:
krau
2024-10-12 12:55:44 +08:00
parent 5d6b1003e9
commit c8376f78a2

View File

@@ -35,7 +35,6 @@ SaveAny Bot - 转存你的 Telegram 文件
/silent - 静默模式
/storage - 设置默认存储位置
/save - 保存文件
/clean - 清除文件记录
静默模式: 开启后 Bot 直接保存到收到的文件到默认位置, 不再询问
`
@@ -112,7 +111,69 @@ func SaveCmd(message *telegram.NewMessage) error {
message.Reply("回复的消息不包含文件")
return nil
}
logger.L.Warn("TODO: HandleFileMessage")
msg, err := targetMessage.Reply("正在获取文件信息...")
if err != nil {
logger.L.Error(err)
message.Reply("获取文件信息失败")
return err
}
_, _, _, fileName, err := telegram.GetFileLocation(targetMessage.Media())
if err != nil {
logger.L.Error(err)
targetMessage.Reply("获取文件信息失败")
return err
}
if fileName == "" {
logger.L.Error("Empty file name")
targetMessage.Reply("文件名为空")
return nil
}
if err := dao.AddReceivedFile(&model.ReceivedFile{
Processing: false,
FileName: fileName,
ChatID: targetMessage.ChatID(),
MessageID: targetMessage.Message.ID,
ReplyMessageID: msg.ID,
}); err != nil {
logger.L.Error(err)
msg.Edit("保存文件信息失败")
return err
}
user, err := dao.GetUserByUserID(message.ChatID())
if err != nil {
logger.L.Error(err)
msg.Edit("获取用户信息失败")
return err
}
if !user.Silent {
msg.Edit("请选择要保存的位置:", telegram.SendOptions{
ReplyMarkup: AddTaskReplyMarkup(targetMessage.Message.ID),
})
return nil
}
if user.DefaultStorage == "" {
msg.Edit("请先使用 /storage 命令设置默认存储位置, 或者关闭静默模式")
return nil
}
queue.AddTask(types.Task{
Ctx: context.TODO(),
Status: types.Pending,
FileName: fileName,
Storage: types.StorageType(user.DefaultStorage),
ChatID: targetMessage.ChatID(),
MessageID: targetMessage.Message.ID,
ReplyMessageID: msg.ID,
})
msg.Edit(fmt.Sprintf("已添加到队列: %s\n当前排队任务数: %d", fileName, queue.Len()))
return nil
}