From e56bf1f8fcf9a1c24dd306ed4db4606fafd35db9 Mon Sep 17 00:00:00 2001 From: martylukyy <35452459+martylukyy@users.noreply.github.com> Date: Sat, 14 Sep 2024 11:03:42 +0200 Subject: [PATCH] feat(notifications): Telegram set sender (#1723) feat(notifications): add conditional sender payload for telegram --- internal/domain/notification.go | 1 + internal/notification/message_builder.go | 2 ++ internal/notification/telegram.go | 3 +++ 3 files changed, 6 insertions(+) diff --git a/internal/domain/notification.go b/internal/domain/notification.go index 56b2dff..d282412 100644 --- a/internal/domain/notification.go +++ b/internal/domain/notification.go @@ -64,6 +64,7 @@ type NotificationPayload struct { Protocol ReleaseProtocol // torrent, usenet Implementation ReleaseImplementation // irc, rss, api Timestamp time.Time + Sender string } type NotificationType string diff --git a/internal/notification/message_builder.go b/internal/notification/message_builder.go index 5f87c56..6b899ce 100644 --- a/internal/notification/message_builder.go +++ b/internal/notification/message_builder.go @@ -26,6 +26,7 @@ type MessageBuilderPlainText struct{} // BuildBody constructs the body of the notification message. func (b *MessageBuilderPlainText) BuildBody(payload domain.NotificationPayload) string { messageParts := []ConditionMessagePart{ + {payload.Sender != "", "%v\n", []interface{}{payload.Sender}}, {payload.Subject != "" && payload.Message != "", "%v\n%v", []interface{}{payload.Subject, payload.Message}}, {payload.ReleaseName != "", "New release: %v\n", []interface{}{payload.ReleaseName}}, {payload.Size > 0, "Size: %v\n", []interface{}{humanize.Bytes(payload.Size)}}, @@ -45,6 +46,7 @@ type MessageBuilderHTML struct{} func (b *MessageBuilderHTML) BuildBody(payload domain.NotificationPayload) string { messageParts := []ConditionMessagePart{ + {payload.Sender != "", "%v\n", []interface{}{html.EscapeString(payload.Sender)}}, {payload.Subject != "" && payload.Message != "", "%v %v\n", []interface{}{html.EscapeString(payload.Subject), html.EscapeString(payload.Message)}}, {payload.ReleaseName != "", "New release: %v\n", []interface{}{html.EscapeString(payload.ReleaseName)}}, {payload.Size > 0, "Size: %v\n", []interface{}{humanize.Bytes(payload.Size)}}, diff --git a/internal/notification/telegram.go b/internal/notification/telegram.go index 7d5a50d..f60958a 100644 --- a/internal/notification/telegram.go +++ b/internal/notification/telegram.go @@ -63,6 +63,9 @@ func NewTelegramSender(log zerolog.Logger, settings domain.Notification) domain. } func (s *telegramSender) Send(event domain.NotificationEvent, payload domain.NotificationPayload) error { + + payload.Sender = "autobrr" + message := s.builder.BuildBody(payload) m := TelegramMessage{ ChatID: s.Settings.Channel,