|
|
|
@ -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
|
|
|
|
|