connector/client: ignore messages in more situations
Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user