-
Notifications
You must be signed in to change notification settings - Fork 0
/
messages.go
60 lines (57 loc) · 1.79 KB
/
messages.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package services
//Message holds a message from a service.
// A text message should only hold content.
// Adding fields, a title, an image, or a color creates a rich message.
// If ServerID is not specified, presume ChannelID to be a DM channel with a user and use Msg* methods.
type Message struct {
UserID string `json:"userID,omitempty"`
MessageID string `json:"messageID,omitempty"`
ChannelID string `json:"channelID,omitempty"`
ServerID string `json:"serverID,omitempty"`
Title string `json:"title,omitempty"`
Content string `json:"content,omitempty"`
Footer string `json:"footer,omitempty"`
Image string `json:"image,omitempty"`
Thumbnail string `json:"thumbnail,omitempty"`
Color int `json:"color,omitempty"`
Fields []*MessageField `json:"fields,omitempty"`
Context interface{} `json:"context,omitempty"`
}
func NewMessage() *Message {
return &Message{}
}
func (msg *Message) SetTitle(title string) *Message {
msg.Title = title
return msg
}
func (msg *Message) SetContent(content string) *Message {
msg.Content = content
return msg
}
func (msg *Message) SetFooter(footer string) *Message {
msg.Footer = footer
return msg
}
func (msg *Message) SetColor(clr int) *Message {
msg.Color = clr
return msg
}
func (msg *Message) SetImage(img string) *Message {
msg.Image = img
return msg
}
func (msg *Message) SetThumbnail(img string) *Message {
msg.Thumbnail = img
return msg
}
func (msg *Message) AddField(name, value string) *Message {
if msg.Fields == nil {
msg.Fields = make([]*MessageField, 0)
}
msg.Fields = append(msg.Fields, &MessageField{Name: name, Value: value})
return msg
}
type MessageField struct {
Name string `json:"name"`
Value string `json:"value"`
}