aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telegram/commands.go24
1 files changed, 16 insertions, 8 deletions
diff --git a/telegram/commands.go b/telegram/commands.go
index 17d212f..b2396b8 100644
--- a/telegram/commands.go
+++ b/telegram/commands.go
@@ -988,24 +988,32 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
}
- var messages *client.Messages
+ var newMessages *client.Messages
+ var messages []*client.Message
var err error
- for _ = range make([]struct{}, 2) {
- messages, err = c.client.GetChatHistory(&client.GetChatHistoryRequest{
- ChatId: chatID,
- Limit: limit,
+ var fromId int64
+ for _ = range make([]struct{}, limit) { // safety limit
+ if len(messages) > 0 {
+ fromId = messages[len(messages)-1].Id
+ }
+
+ newMessages, err = c.client.GetChatHistory(&client.GetChatHistoryRequest{
+ ChatId: chatID,
+ FromMessageId: fromId,
+ Limit: limit,
})
if err != nil {
return err.Error(), true
}
- // TDlib yields only the latest message on the first request
- if !(len(messages.Messages) == 1 && limit > 1) {
+ messages = append(messages, newMessages.Messages...)
+
+ if len(newMessages.Messages) == 0 || len(messages) >= int(limit) {
break
}
}
- c.sendMessagesReverse(chatID, messages.Messages)
+ c.sendMessagesReverse(chatID, messages)
// chat members
case "members":
var query string