mirror of
https://github.com/kemko/memes-telegram-integration.git
synced 2026-01-01 15:55:41 +03:00
feat: handle more message types (#13)
* feat: handle more message types * feat: rename processMessage Co-authored-by: Michael <161408495+michaelien@users.noreply.github.com> * feat: rename processMessage --------- Co-authored-by: Michael <161408495+michaelien@users.noreply.github.com>
This commit is contained in:
44
memogram.go
44
memogram.go
@@ -95,7 +95,7 @@ func (s *Service) handler(ctx context.Context, b *bot.Bot, m *models.Update) {
|
||||
if message.Caption != "" {
|
||||
content = message.Caption
|
||||
}
|
||||
hasResource := message.Document != nil || len(message.Photo) > 0
|
||||
hasResource := message.Document != nil || len(message.Photo) > 0 || message.Voice != nil || message.Video != nil
|
||||
if content == "" && !hasResource {
|
||||
b.SendMessage(ctx, &bot.SendMessageParams{
|
||||
ChatID: m.Message.Chat.ID,
|
||||
@@ -119,31 +119,20 @@ func (s *Service) handler(ctx context.Context, b *bot.Bot, m *models.Update) {
|
||||
}
|
||||
|
||||
if message.Document != nil {
|
||||
file, err := b.GetFile(ctx, &bot.GetFileParams{FileID: message.Document.FileID})
|
||||
if err != nil {
|
||||
s.sendError(b, m.Message.Chat.ID, errors.Wrap(err, "failed to get file"))
|
||||
return
|
||||
s.processFileMessage(ctx, b, m, message.Document.FileID, memo)
|
||||
}
|
||||
|
||||
_, err = s.saveResourceFromFile(ctx, file, memo)
|
||||
if err != nil {
|
||||
s.sendError(b, m.Message.Chat.ID, errors.Wrap(err, "failed to save resource"))
|
||||
return
|
||||
if message.Voice != nil {
|
||||
s.processFileMessage(ctx, b, m, message.Voice.FileID, memo)
|
||||
}
|
||||
|
||||
if message.Video != nil {
|
||||
s.processFileMessage(ctx, b, m, message.Video.FileID, memo)
|
||||
}
|
||||
|
||||
if len(message.Photo) > 0 {
|
||||
photo := message.Photo[len(message.Photo)-1]
|
||||
file, err := b.GetFile(ctx, &bot.GetFileParams{FileID: photo.FileID})
|
||||
if err != nil {
|
||||
s.sendError(b, m.Message.Chat.ID, errors.Wrap(err, "failed to get file"))
|
||||
return
|
||||
}
|
||||
|
||||
_, err = s.saveResourceFromFile(ctx, file, memo)
|
||||
if err != nil {
|
||||
s.sendError(b, m.Message.Chat.ID, errors.Wrap(err, "failed to save resource"))
|
||||
return
|
||||
}
|
||||
s.processFileMessage(ctx, b, m, photo.FileID, memo)
|
||||
}
|
||||
|
||||
b.SendMessage(ctx, &bot.SendMessageParams{
|
||||
@@ -211,6 +200,21 @@ func (s *Service) saveResourceFromFile(ctx context.Context, file *models.File, m
|
||||
return resource, nil
|
||||
}
|
||||
|
||||
func (s *Service) processFileMessage(ctx context.Context, b *bot.Bot, m *models.Update, fileID string, memo *v1pb.Memo) {
|
||||
file, err := b.GetFile(ctx, &bot.GetFileParams{FileID: fileID})
|
||||
if err != nil {
|
||||
s.sendError(b, m.Message.Chat.ID, errors.Wrap(err, "failed to get file"))
|
||||
return
|
||||
}
|
||||
|
||||
_, err = s.saveResourceFromFile(ctx, file, memo)
|
||||
if err != nil {
|
||||
s.sendError(b, m.Message.Chat.ID, errors.Wrap(err, "failed to save resource"))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func (s *Service) sendError(b *bot.Bot, chatID int64, err error) {
|
||||
slog.Error("error", slog.Any("err", err))
|
||||
b.SendMessage(context.Background(), &bot.SendMessageParams{
|
||||
|
||||
Reference in New Issue
Block a user