diff options
author | Mo Tarbin <mhed.t91@gmail.com> | 2024-07-17 01:11:36 -0400 |
---|---|---|
committer | Mo Tarbin <mhed.t91@gmail.com> | 2024-07-17 01:11:36 -0400 |
commit | 7a5eacdaf31b228ab07d5c8422d179d210e57825 (patch) | |
tree | 21806783d2ce48536ae5505e0d5b147514031ef5 /internal/notifier/telegram | |
parent | 83a9abc9d683cd8be848d8e49020bf1f02f55319 (diff) | |
parent | 861a1666e48a91d43db6d1fd272dac832013f5b7 (diff) | |
download | donetick-7a5eacdaf31b228ab07d5c8422d179d210e57825.tar.gz donetick-7a5eacdaf31b228ab07d5c8422d179d210e57825.tar.bz2 donetick-7a5eacdaf31b228ab07d5c8422d179d210e57825.zip |
Merge branch 'dev'
Diffstat (limited to 'internal/notifier/telegram')
-rw-r--r-- | internal/notifier/telegram/telegram.go | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/internal/notifier/telegram/telegram.go b/internal/notifier/telegram/telegram.go index 54c0905..3f064b6 100644 --- a/internal/notifier/telegram/telegram.go +++ b/internal/notifier/telegram/telegram.go @@ -2,6 +2,7 @@ package telegram import ( "context" + "encoding/json" "fmt" "strconv" @@ -49,22 +50,38 @@ func (tn *TelegramNotifier) SendChoreReminder(c context.Context, chore *chModel. } } -func (tn *TelegramNotifier) SendChoreCompletion(c context.Context, chore *chModel.Chore, users []*uModel.User) { +func (tn *TelegramNotifier) SendChoreCompletion(c context.Context, chore *chModel.Chore, user *uModel.User) { log := logging.FromContext(c) - for _, user := range users { - if user.ChatID == 0 { - continue + var mt *chModel.NotificationMetadata + if err := json.Unmarshal([]byte(*chore.NotificationMetadata), &mt); err != nil { + log.Error("Error unmarshalling notification metadata", err) + } + + targets := []int64{} + if user.ChatID != 0 { + targets = append(targets, user.ChatID) + } + if mt.CircleGroup && mt.CircleGroupID != nil { + // attempt to parse it: + + if *mt.CircleGroupID != 0 { + targets = append(targets, *mt.CircleGroupID) } - text := fmt.Sprintf("🎉 *%s* is completed! is off the list, %s! 🌟 ", chore.Name, user.DisplayName) - msg := tgbotapi.NewMessage(user.ChatID, text) + + } + + text := fmt.Sprintf("🎉 *%s* is completed! is off the list, %s! 🌟 ", chore.Name, user.DisplayName) + for _, target := range targets { + msg := tgbotapi.NewMessage(target, text) + msg.ParseMode = "Markdown" _, err := tn.bot.Send(msg) if err != nil { log.Error("Error sending message to user: ", err) log.Debug("Error sending message, chore: ", chore.Name, " user: ", user.DisplayName, " chatID: ", user.ChatID, " user id: ", user.ID) } - } + } func (tn *TelegramNotifier) SendChoreOverdue(c context.Context, chore *chModel.Chore, users []*uModel.User) { |