added fetch messages.

This commit is contained in:
5elenay 2021-08-21 06:26:26 +03:00
parent 2c758edf11
commit 068bc86828
2 changed files with 62 additions and 12 deletions

View File

@ -2,6 +2,8 @@ package revoltgo
import ( import (
"encoding/json" "encoding/json"
"fmt"
"reflect"
) )
// Channel struct. // Channel struct.
@ -24,8 +26,19 @@ type Channel struct {
Permissions int `json:"permissions"` Permissions int `json:"permissions"`
} }
// Similar to message, but created for sendmessage function.
type SendMessageStruct struct {
Content string `json:"content"`
Attachments []string `json:"attachments"`
Nonce string `json:"nonce"`
Replies []struct {
Id string `json:"id"`
Mention bool `json:"mention"`
}
}
// Send a message to the channel. // Send a message to the channel.
func (c Channel) SendMessage(message *Message) (*Message, error) { func (c Channel) SendMessage(message *SendMessageStruct) (*Message, error) {
if message.Nonce == "" { if message.Nonce == "" {
message.Nonce = genULID() message.Nonce = genULID()
} }
@ -49,6 +62,43 @@ func (c Channel) SendMessage(message *Message) (*Message, error) {
return respMessage, err return respMessage, err
} }
message.Client = c.Client respMessage.Client = c.Client
return message, nil return respMessage, nil
}
// 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) {
// Format url
url := "/channels/" + c.Id + "/messages?"
for key, value := range options {
if !reflect.ValueOf(value).IsZero() {
url += fmt.Sprintf("%s=%v&", key, value)
}
}
url = url[:len(url)-1]
fetchedMsgs := []*Message{}
// Send request
resp, err := c.Client.Request("GET", url, []byte{})
if err != nil {
return fetchedMsgs, err
}
err = json.Unmarshal(resp, &fetchedMsgs)
if err != nil {
return fetchedMsgs, err
}
// Add client to users & messages
for _, msg := range fetchedMsgs {
msg.Client = c.Client
}
return fetchedMsgs, nil
} }

View File

@ -4,14 +4,15 @@ package revoltgo
type Message struct { type Message struct {
Client *Client Client *Client
Id string `json:"_id"` Id string `json:"_id"`
Nonce string `json:"nonce"` Nonce string `json:"nonce"`
ChannelId string `json:"channel"` ChannelId string `json:"channel"`
AuthorId string `json:"author"` AuthorId string `json:"author"`
Content string `json:"content"` Content interface{} `json:"content"`
Attachments []*Attachment `json:"attachments"` Embeds []*MessageEmbed `json:"embeds"`
Mentions []string `json:"mentions"` Attachments []*Attachment `json:"attachments"`
Replies []string `json:"replies"` Mentions []string `json:"mentions"`
Replies []string `json:"replies"`
} }
// Attachment struct. // Attachment struct.
@ -22,7 +23,6 @@ type Attachment struct {
FileName string `json:"filename"` FileName string `json:"filename"`
Metadata *AttachmentMetadata Metadata *AttachmentMetadata
ContentType string `json:"content_type"` ContentType string `json:"content_type"`
Embeds []*MessageEmbed
} }
// Attachment metadata struct. // Attachment metadata struct.