package telegram import ( "context" "fmt" "time" "github.com/TelegramExchange/tgex-backend/tg_parser/internal/domain" "github.com/gotd/td/tg" "github.com/rs/zerolog/log" ) func (t *Telegram) GetChannelHistory(ctx context.Context, channel domain.Channel, limit int) ([]domain.Post, error) { log.Info().Msg(channel.String()) req := &tg.MessagesGetHistoryRequest{ Peer: &tg.InputPeerChannel{ ChannelID: channel.ChannelID(), AccessHash: channel.AccessHash, }, Limit: limit, } resp, err := t.API().MessagesGetHistory(ctx, req) if err != nil { return nil, fmt.Errorf("resp: %w", err) } messages, ok := resp.(*tg.MessagesChannelMessages) if !ok { return nil, nil } posts := make([]domain.Post, 0, len(messages.Messages)) for _, raw := range messages.Messages { m, ok := raw.(*tg.Message) if !ok { continue } text := messageToHTML(m.Message, m.Entities) publishedAt := time.Unix(int64(m.Date), 0).UTC() p := domain.NewPost(channel, m.ID, text, m.Views, publishedAt) posts = append(posts, p) } return posts, nil }