revoltgo/message.go
2021-08-22 17:45:45 +03:00

101 lines
2.5 KiB
Go

package revoltgo
import "time"
// Message struct
type Message struct {
Client *Client
CreatedAt time.Time
Id string `json:"_id"`
Nonce string `json:"nonce"`
ChannelId string `json:"channel"`
AuthorId string `json:"author"`
Content interface{} `json:"content"`
Edited interface{} `json:"edited"`
Embeds []*MessageEmbed `json:"embeds"`
Attachments []*Attachment `json:"attachments"`
Mentions []string `json:"mentions"`
Replies []string `json:"replies"`
}
// Attachment struct.
type Attachment struct {
Id string `json:"_id"`
Tag string `json:"tag"`
Size int `json:"size"`
FileName string `json:"filename"`
Metadata *AttachmentMetadata
ContentType string `json:"content_type"`
}
// Attachment metadata struct.
type AttachmentMetadata struct {
Type string `json:"type"`
Width int `json:"width"`
Height int `json:"height"`
}
// Message edited struct.
type MessageEdited struct {
Date int `json:"$date"`
}
// Message embed struct.
type MessageEmbed struct {
Type string `json:"type"`
Url string `json:"url"`
Special *MessageSpecialEmbed
Title string `json:"title"`
Description string `json:"description"`
Image *MessageEmbeddedImage `json:"image"`
Video *MessageEmbeddedVideo `json:"video"`
IconUrl string `json:"icon_url"`
Color string `json:"color"`
}
// Message special embed struct.
type MessageSpecialEmbed struct {
Type string `json:"type"`
Id string `json:"id"`
ContentType string `json:"content_type"`
}
// Message embedded image struct
type MessageEmbeddedImage struct {
Size string `json:"size"`
Url string `json:"url"`
Width int `json:"width"`
Height int `json:"height"`
}
// Message embedded video struct
type MessageEmbeddedVideo struct {
Url string `json:"url"`
Width int `json:"width"`
Height int `json:"height"`
}
// Edit message content.
func (m *Message) Edit(content string) error {
_, err := m.Client.Request("PATCH", "/channels/"+m.ChannelId+"/messages/"+m.Id, []byte("{\"content\": \""+content+"\"}"))
if err != nil {
return err
}
m.Content = content
return nil
}
// Delete the message.
func (m Message) Delete() error {
_, err := m.Client.Request("DELETE", "/channels/"+m.ChannelId+"/messages/"+m.Id, []byte{})
if err != nil {
return err
}
return nil
}