Files
sendico/api/notification/internal/server/notificationimp/telegram_reaction.go
2026-01-20 22:29:30 +01:00

47 lines
1.4 KiB
Go

package notificationimp
import (
"context"
"strings"
"github.com/tech/sendico/pkg/merrors"
"github.com/tech/sendico/pkg/model"
"go.uber.org/zap"
)
func (a *NotificationAPI) onTelegramReaction(ctx context.Context, request *model.TelegramReactionRequest) error {
if request == nil {
return merrors.InvalidArgument("telegram reaction request is nil", "request")
}
if a.tg == nil {
return merrors.Internal("telegram client is not configured")
}
chatID := strings.TrimSpace(request.ChatID)
messageID := strings.TrimSpace(request.MessageID)
if chatID == "" {
return merrors.InvalidArgument("telegram chat_id is required", "chat_id")
}
if messageID == "" {
return merrors.InvalidArgument("telegram message_id is required", "message_id")
}
emoji := strings.TrimSpace(request.Emoji)
if emoji == "" {
return merrors.InvalidArgument("telegram emoji is required", "emoji")
}
if err := a.tg.SetMessageReaction(ctx, chatID, messageID, emoji); err != nil {
a.logger.Warn("Failed to send telegram reaction",
zap.Error(err),
zap.String("request_id", strings.TrimSpace(request.RequestID)),
zap.String("chat_id", chatID),
zap.String("message_id", messageID),
zap.String("emoji", emoji))
return err
}
a.logger.Info("Telegram reaction sent",
zap.String("request_id", strings.TrimSpace(request.RequestID)),
zap.String("chat_id", chatID),
zap.String("message_id", messageID),
zap.String("emoji", emoji))
return nil
}