From 52a478c9d43a8b96bf3f94fa3597a33d4ea011b4 Mon Sep 17 00:00:00 2001 From: rs Date: Mon, 29 Aug 2022 23:39:39 +0500 Subject: [PATCH] fix(telegram/updates): treat all messages from getChannelDifference as channel messages --- telegram/updates/state.go | 4 ++-- telegram/updates/state_channel.go | 2 +- telegram/updates/utils.go | 25 +++++++++++++------------ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/telegram/updates/state.go b/telegram/updates/state.go index 1d71ab7ca7..e88e43ca50 100644 --- a/telegram/updates/state.go +++ b/telegram/updates/state.go @@ -374,7 +374,7 @@ func (s *state) getDifference() error { if len(diff.NewMessages) > 0 || len(diff.NewEncryptedMessages) > 0 { if err := s.handler.Handle(s.ctx, &tg.Updates{ Updates: append( - msgsToUpdates(diff.NewMessages), + msgsToUpdates(diff.NewMessages, false), encryptedMsgsToUpdates(diff.NewEncryptedMessages)..., ), Users: diff.Users, @@ -413,7 +413,7 @@ func (s *state) getDifference() error { if len(diff.NewMessages) > 0 || len(diff.NewEncryptedMessages) > 0 { if err := s.handler.Handle(s.ctx, &tg.Updates{ Updates: append( - msgsToUpdates(diff.NewMessages), + msgsToUpdates(diff.NewMessages, false), encryptedMsgsToUpdates(diff.NewEncryptedMessages)..., ), Users: diff.Users, diff --git a/telegram/updates/state_channel.go b/telegram/updates/state_channel.go index cf0e0441cc..21c662bb38 100644 --- a/telegram/updates/state_channel.go +++ b/telegram/updates/state_channel.go @@ -259,7 +259,7 @@ func (s *channelState) getDifference() error { if len(diff.NewMessages) > 0 { if err := s.handler.Handle(s.ctx, &tg.Updates{ - Updates: msgsToUpdates(diff.NewMessages), + Updates: msgsToUpdates(diff.NewMessages, true), Users: diff.Users, Chats: diff.Chats, }); err != nil { diff --git a/telegram/updates/utils.go b/telegram/updates/utils.go index b2e6a7f051..11b73d9693 100644 --- a/telegram/updates/utils.go +++ b/telegram/updates/utils.go @@ -52,35 +52,36 @@ func getDialogPts(dialog tg.DialogClass) (int, error) { return pts, nil } -func msgsToUpdates(msgs []tg.MessageClass) []tg.UpdateClass { - var updates []tg.UpdateClass +func msgsToUpdates(msgs []tg.MessageClass, channel bool) []tg.UpdateClass { + updates := make([]tg.UpdateClass, 0, len(msgs)) for _, msg := range msgs { - if msg, ok := msg.(*tg.Message); ok { - if _, ok := msg.PeerID.(*tg.PeerChannel); ok { - updates = append(updates, &tg.UpdateNewChannelMessage{ - Message: msg, - Pts: -1, - PtsCount: -1, - }) - continue - } + if channel { + updates = append(updates, &tg.UpdateNewChannelMessage{ + Message: msg, + Pts: -1, + PtsCount: -1, + }) + continue } + updates = append(updates, &tg.UpdateNewMessage{ Message: msg, Pts: -1, PtsCount: -1, }) } + return updates } func encryptedMsgsToUpdates(msgs []tg.EncryptedMessageClass) []tg.UpdateClass { - var updates []tg.UpdateClass + updates := make([]tg.UpdateClass, 0, len(msgs)) for _, msg := range msgs { updates = append(updates, &tg.UpdateNewEncryptedMessage{ Message: msg, Qts: -1, }) } + return updates }