package mainimport ( "fmt" "github.com/amarnathcjd/gogram/telegram")func main() { // Create and authenticate the client client, _ := telegram.NewClient(telegram.ClientConfig{ AppID: 6, AppHash: "YOUR_APP_HASH", }) // Login as user (required to access chat history) client.Login("+1234567890") // Get last 5 messages from a chat // Can use username (@username), chat ID, or "me" for saved messages messages, _ := client.GetHistory("@username", &telegram.HistoryOption{ Limit: 5, // Number of messages to retrieve }) // Alternative: client.IterHistory() for yielding messages one by one // Useful for large histories to avoid memory issues // Print each message's text for _, message := range messages { fmt.Println(message.Text()) } client.Idle()}
messages, _ := client.GetHistory("@username", &telegram.HistoryOption{ Limit: 100, // Maximum number of messages to retrieve Offset: 0, // Start from specific message ID OffsetDate: 0, // Start from specific date (Unix timestamp) MinID: 0, // Only messages with ID > MinID MaxID: 0, // Only messages with ID < MaxID SleepThresholdMs: 0, // Sleep time between requests in milliseconds})
For large histories, use IterHistory to process messages one by one:
// Process messages one by one without loading all into memorymessagesChan, errChan := client.IterHistory("@username")for { select { case message, ok := <-messagesChan: if !ok { messagesChan = nil } else { // Process each message fmt.Println(message.(*telegram.MessageObj).Text()) } case err, ok := <-errChan: if !ok { errChan = nil } else { fmt.Println("Error:", err) } } if messagesChan == nil && errChan == nil { break }}