-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
message.go
86 lines (73 loc) · 2.24 KB
/
message.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package tools
import "github.com/bwmarrin/discordgo"
func Respond(s *discordgo.Session, i *discordgo.InteractionCreate, content string) {
err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseChannelMessageWithSource,
Data: &discordgo.InteractionResponseData{
Content: content,
},
})
if err != nil {
SendError(s, i, "An error occured while responding.")
}
}
func NewSelectMenu(id string, placeholder string, options []discordgo.SelectMenuOption) discordgo.ActionsRow {
return discordgo.ActionsRow{
Components: []discordgo.MessageComponent{
discordgo.SelectMenu{
CustomID: id,
Placeholder: placeholder,
Options: options,
},
},
}
}
func AwaitInteraction(s *discordgo.Session, i *discordgo.InteractionCreate) {
err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseDeferredChannelMessageWithSource,
})
if err != nil {
SendError(s, i, "An error occured while responding.")
}
}
func SendError(s *discordgo.Session, i *discordgo.InteractionCreate, description string) {
embed := NewErrorEmbed(i.Member, description)
err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseUpdateMessage,
Data: &discordgo.InteractionResponseData{
Content: "",
Embeds: []*discordgo.MessageEmbed{&embed},
Components: nil,
},
})
if err != nil {
_, err := s.ChannelMessageSend(i.ChannelID, description)
if err != nil {
return
}
}
}
func ResponseEdit(s *discordgo.Session, i *discordgo.InteractionCreate, messageData *MessageData) {
var embeds *[]*discordgo.MessageEmbed
if messageData.Embed != nil {
embeds = &[]*discordgo.MessageEmbed{messageData.Embed}
}
if messageData.Embeds != nil {
embeds = messageData.Embeds
}
_, err := s.InteractionResponseEdit(i.Interaction, &discordgo.WebhookEdit{
Content: &messageData.Content,
Embeds: embeds,
Components: messageData.Components,
})
if err != nil {
SendError(s, i, "An error occured while responding.")
}
}
type MessageData struct {
Content string
Embed *discordgo.MessageEmbed
Embeds *[]*discordgo.MessageEmbed
Components *[]discordgo.MessageComponent
Files []*discordgo.File
}