diff --git a/internal/client_channel.go b/internal/client_channel.go index f71f2c2..de1f3c8 100644 --- a/internal/client_channel.go +++ b/internal/client_channel.go @@ -28,19 +28,32 @@ func (t *TClient) Channel(ctx context.Context, channel *tg.Channel, cfg *Channel if err != nil { return errors.Wrap(err, "messages.getHistory") } + if len(messages.(*tg.MessagesChannelMessages).GetMessages()) == 0 { + t.logger.Info("no new message") + return nil + } downloader := downloader.NewDownloader() lo.ForEach(messages.(*tg.MessagesChannelMessages).GetMessages(), func(item tg.MessageClass, index int) { + defer func() { + t.logger.Info("update config", zap.Int("offset", cfg.Offset)) + if err := cfg.Update(ctx, item.GetID()); err != nil { + t.logger.Error("update config failed", zap.Error(err)) + } + }() + + switch item.(type) { + case *tg.MessageEmpty: + return + case *tg.MessageService: + return + } + msg, ok := item.(*tg.Message) if !ok { t.logger.Error("convert msg to *tg.Message failed") return } - defer func() { - if err := cfg.Update(ctx, msg.ID); err != nil { - t.logger.Error("update config failed", zap.Error(err)) - } - }() channelMessage := NewChannelMessage(msg.ID) defer cfg.SaveMessage(channelMessage) diff --git a/internal/cmd_export.go b/internal/cmd_export.go index 7ab274b..27d3f3a 100644 --- a/internal/cmd_export.go +++ b/internal/cmd_export.go @@ -57,5 +57,9 @@ func exportCmd(ctx context.Context) error { } // https://t.me/yunpanshare/37426 - return client.Channel(ctx, channel, cfg, modeHistory) + for { + if err := client.Channel(ctx, channel, cfg, modeHistory); err != nil { + return err + } + } }