From 23bb0febe94bb8b95ffdc8935c4504bc0cd9139d Mon Sep 17 00:00:00 2001 From: Sumner Evans Date: Fri, 27 Sep 2024 08:46:44 -0600 Subject: [PATCH] client: ignore messages in left channels Signed-off-by: Sumner Evans --- pkg/connector/client.go | 5 +++-- pkg/connector/telegram.go | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/pkg/connector/client.go b/pkg/connector/client.go index db461a18..c5f562c7 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -135,13 +135,13 @@ func NewTelegramClient(ctx context.Context, tc *TelegramConnector, login *bridge EntityHandler: client.onEntityUpdate, } dispatcher.OnNewMessage(func(ctx context.Context, e tg.Entities, update *tg.UpdateNewMessage) error { - return client.onUpdateNewMessage(ctx, update) + return client.onUpdateNewMessage(ctx, e.Channels, update) }) dispatcher.OnChannel(func(ctx context.Context, e tg.Entities, update *tg.UpdateChannel) error { return client.onUpdateChannel(ctx, update) }) dispatcher.OnNewChannelMessage(func(ctx context.Context, e tg.Entities, update *tg.UpdateNewChannelMessage) error { - return client.onUpdateNewMessage(ctx, update) + return client.onUpdateNewMessage(ctx, e.Channels, update) }) dispatcher.OnUserName(client.onUserName) dispatcher.OnDeleteMessages(func(ctx context.Context, e tg.Entities, update *tg.UpdateDeleteMessages) error { @@ -446,6 +446,7 @@ func (t *TelegramClient) getSingleUser(ctx context.Context, id int64) (tg.UserCl } } +// TODO make work for channel peers (necessary for forward backfill) func (t *TelegramClient) GetUserInfo(ctx context.Context, ghost *bridgev2.Ghost) (*bridgev2.UserInfo, error) { if peerType, id, err := ids.ParseUserID(ghost.ID); err != nil { return nil, err diff --git a/pkg/connector/telegram.go b/pkg/connector/telegram.go index 78651ae8..a5fa7c7d 100644 --- a/pkg/connector/telegram.go +++ b/pkg/connector/telegram.go @@ -83,12 +83,21 @@ func (t *TelegramClient) onUpdateChannel(ctx context.Context, update *tg.UpdateC return nil } -func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, update IGetMessage) error { +func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, channels map[int64]*tg.Channel, update IGetMessage) error { log := zerolog.Ctx(ctx) switch msg := update.GetMessage().(type) { case *tg.Message: sender := t.getEventSender(msg) + if channel, ok := msg.PeerID.(*tg.PeerChannel); ok { + if c, ok := channels[channel.ChannelID]; ok && c.Left { + log.Debug(). + Int64("channel_id", channel.ChannelID). + Msg("Received message in left channel, ignoring") + return nil + } + } + go t.handleTelegramReactions(ctx, msg) if media, ok := msg.GetMedia(); ok && media.TypeID() == tg.MessageMediaContactTypeID {