diff --git a/pkg/connector/client.go b/pkg/connector/client.go index d9878c9c..5cb0ba55 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -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) diff --git a/pkg/connector/telegram.go b/pkg/connector/telegram.go index b78ab0b9..2429fea7 100644 --- a/pkg/connector/telegram.go +++ b/pkg/connector/telegram.go @@ -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 } }