mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
feat: format message from telegram and upload attachments (#1924)
* feat: format message from telegram and download documents * fix: remove bool in expression * refactor: convert to markdown * refactor: resolve remarks and add support new message types * refactor: resolve remarks * feat: add test for mime type --------- Co-authored-by: Александр Тумайкин <AATumaykin@tsum.ru>
This commit is contained in:
committed by
GitHub
parent
f074bb1be2
commit
c5a1f4c839
@ -8,18 +8,72 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// downloadFileId download file with fileID, return the filepath and blob.
|
||||
func (b *Bot) downloadFileID(ctx context.Context, fileID string) (string, []byte, error) {
|
||||
file, err := b.GetFile(ctx, fileID)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
blob, err := b.downloadFilepath(ctx, file.FilePath)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
func (b *Bot) downloadAttachment(ctx context.Context, message *Message) (*Attachment, error) {
|
||||
var fileID, fileName, mimeType string
|
||||
switch {
|
||||
case len(message.Photo) > 0:
|
||||
fileID = message.GetMaxPhotoFileID()
|
||||
case message.Animation != nil:
|
||||
fileID = message.Animation.FileID
|
||||
fileName = message.Animation.FileName
|
||||
mimeType = message.Animation.MimeType
|
||||
case message.Audio != nil:
|
||||
fileID = message.Audio.FileID
|
||||
fileName = message.Audio.FileName
|
||||
mimeType = message.Audio.MimeType
|
||||
case message.Document != nil:
|
||||
fileID = message.Document.FileID
|
||||
fileName = message.Document.FileName
|
||||
mimeType = message.Document.MimeType
|
||||
case message.Video != nil:
|
||||
fileID = message.Video.FileID
|
||||
fileName = message.Video.FileName
|
||||
mimeType = message.Video.MimeType
|
||||
case message.VideoNote != nil:
|
||||
fileID = message.VideoNote.FileID
|
||||
case message.Voice != nil:
|
||||
fileID = message.Voice.FileID
|
||||
mimeType = message.Voice.MimeType
|
||||
}
|
||||
|
||||
return file.FilePath, blob, nil
|
||||
if fileID == "" {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
attachment, err := b.downloadFileID(ctx, fileID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if fileName != "" {
|
||||
attachment.FileName = fileName
|
||||
}
|
||||
|
||||
if mimeType != "" {
|
||||
attachment.MimeType = mimeType
|
||||
}
|
||||
|
||||
return attachment, nil
|
||||
}
|
||||
|
||||
// downloadFileId download file with fileID, return Blob struct.
|
||||
func (b *Bot) downloadFileID(ctx context.Context, fileID string) (*Attachment, error) {
|
||||
file, err := b.GetFile(ctx, fileID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data, err := b.downloadFilepath(ctx, file.FilePath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
blob := &Attachment{
|
||||
FileName: file.FilePath,
|
||||
Data: data,
|
||||
FileSize: file.FileSize,
|
||||
}
|
||||
|
||||
return blob, nil
|
||||
}
|
||||
|
||||
// downloadFilepath download file with filepath, you can get filepath by calling GetFile.
|
||||
|
Reference in New Issue
Block a user