connector/client: ignore messages in more situations

Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
Sumner Evans
2024-12-03 09:01:41 -07:00
parent bf3e0ec8ab
commit a1f58cad11
2 changed files with 20 additions and 8 deletions
+2 -2
View File
@@ -150,10 +150,10 @@ 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, e.Channels, update)
return client.onUpdateNewMessage(ctx, e, update)
})
dispatcher.OnNewChannelMessage(func(ctx context.Context, e tg.Entities, update *tg.UpdateNewChannelMessage) error {
return client.onUpdateNewMessage(ctx, e.Channels, update)
return client.onUpdateNewMessage(ctx, e, update)
})
dispatcher.OnChannel(client.onUpdateChannel)
dispatcher.OnUserName(client.onUserName)
+18 -6
View File
@@ -88,17 +88,29 @@ func (t *TelegramClient) onUpdateChannel(ctx context.Context, e tg.Entities, upd
return nil
}
func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, channels map[int64]*tg.Channel, update IGetMessage) error {
func (t *TelegramClient) onUpdateNewMessage(ctx context.Context, entities tg.Entities, 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")
switch peer := msg.PeerID.(type) {
case *tg.PeerChannel:
log := log.With().Int64("channel_id", peer.ChannelID).Logger()
if _, ok := entities.ChannelsForbidden[peer.ChannelID]; ok {
log.Debug().Msg("Received message in forbidden channel, ignoring")
return nil
} else if c, ok := entities.Channels[peer.ChannelID]; ok && c.Left {
log.Debug().Msg("Received message in left channel, ignoring")
return nil
}
case *tg.PeerChat:
log := log.With().Int64("chat_id", peer.ChatID).Logger()
if _, ok := entities.ChatsForbidden[peer.ChatID]; ok {
log.Debug().Msg("Received message in forbidden chat, ignoring")
return nil
} else if c, ok := entities.Chats[peer.ChatID]; ok && c.Left {
log.Debug().Msg("Received message in left chat, ignoring")
return nil
}
}