From 4e51273151c8fcc4a0f243e25c6171e0e3f01d5c Mon Sep 17 00:00:00 2001 From: 5elenay <5elenay@protonmail.com> Date: Sat, 21 Aug 2021 06:38:58 +0300 Subject: [PATCH] fixed bug for multiple response. --- channel.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/channel.go b/channel.go index b550909..0953709 100644 --- a/channel.go +++ b/channel.go @@ -37,6 +37,12 @@ type SendMessageStruct struct { } } +// Fetched messages struct. +type FetchedMessages struct { + Messages []*Message `json:"messages"` + Users []*User `json:"users"` +} + // Send a message to the channel. func (c Channel) SendMessage(message *SendMessageStruct) (*Message, error) { if message.Nonce == "" { @@ -68,7 +74,7 @@ func (c Channel) SendMessage(message *SendMessageStruct) (*Message, error) { // Fetch messages from channel. // Check: https://developers.revolt.chat/api/#tag/Messaging/paths/~1channels~1:channel~1messages/get for map parameters. -func (c Channel) FetchMessages(options map[string]interface{}) ([]*Message, error) { +func (c Channel) FetchMessages(options map[string]interface{}) (*FetchedMessages, error) { // Format url url := "/channels/" + c.Id + "/messages?" @@ -80,7 +86,7 @@ func (c Channel) FetchMessages(options map[string]interface{}) ([]*Message, erro url = url[:len(url)-1] - fetchedMsgs := []*Message{} + fetchedMsgs := &FetchedMessages{} // Send request resp, err := c.Client.Request("GET", url, []byte{}) @@ -92,13 +98,23 @@ func (c Channel) FetchMessages(options map[string]interface{}) ([]*Message, erro err = json.Unmarshal(resp, &fetchedMsgs) if err != nil { - return fetchedMsgs, err + err = json.Unmarshal([]byte(fmt.Sprintf("{\"messages\": %s}", resp)), &fetchedMsgs) + + if err != nil { + return fetchedMsgs, err + } } // Add client to users & messages - for _, msg := range fetchedMsgs { + for _, msg := range fetchedMsgs.Messages { msg.Client = c.Client } + if fetchedMsgs.Users != nil { + for _, msg := range fetchedMsgs.Users { + msg.Client = c.Client + } + } + return fetchedMsgs, nil }