-
Notifications
You must be signed in to change notification settings - Fork 0
/
events.go
129 lines (113 loc) · 3.38 KB
/
events.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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package discord
import (
"github.com/bwmarrin/discordgo"
"github.com/Clinet/clinet_cmds"
)
func discordReady(session *discordgo.Session, event *discordgo.Ready) {
Log.Trace("--- discordReady(", event, ") ---")
for Discord == nil {
//Wait for Discord to finish connecting on our end
if Discord != nil {
break
}
}
Discord.User = event.User
Log.Info("Logged into Discord as ", Discord.User, "!")
}
func discordMessageCreate(session *discordgo.Session, event *discordgo.MessageCreate) {
Log.Trace("--- discordMessageCreate(", event, ") ---")
message, err := session.ChannelMessage(event.ChannelID, event.ID)
if err != nil {
Log.Error(err)
return
}
channel, err := session.Channel(event.ChannelID)
if err != nil {
Log.Error(err)
return
}
cmdResps, err := convoHandler(session, message, channel)
if err != nil {
Log.Error(err)
}
for i := 0; i < len(cmdResps); i++ {
if cmdResps[i] == nil {
continue
}
cmdResps[i].OnReady(func(r *cmds.CmdResp) {
Log.Trace("Response to message for convo: " + r.String())
r.Context = event.Message
r.ChannelID = event.ChannelID
msg, err := Discord.MsgSend(r.Message, message.Reference())
if err != nil {
Log.Error(err)
return
}
Log.Trace("Sent message: ", msg)
})
}
}
func discordInteractionCreate(session *discordgo.Session, event *discordgo.InteractionCreate) {
Log.Trace("--- discordInteractionCreate(", event, ") ---", event.ID, event.Type, event.GuildID, event.ChannelID, event.Member, event.User, event.Token, event.Version)
switch event.Type {
case discordgo.InteractionApplicationCommand:
cmd := cmds.GetCmd(event.ApplicationCommandData().Name)
if cmd == nil {
Log.Error("Unable to find command " + event.ApplicationCommandData().Name)
return
}
eventOpts := event.ApplicationCommandData().Options
cmdAlias, cmdResps := cmdHandler(cmd, event.Interaction, eventOpts, false)
for i := 0; i < len(cmdResps); i++ {
if cmdResps[i] == nil {
continue
}
cmdResps[i].OnReady(func(r *cmds.CmdResp) {
Log.Trace("Response to interaction for cmd " + cmdAlias + ": " + r.String())
r.Context = event.Interaction
msg, err := Discord.MsgSend(r.Message, nil)
if err != nil {
Log.Error(err)
return
}
Log.Trace("Sent message: ", msg)
})
}
case discordgo.InteractionMessageComponent:
/*msgData := event.MessageComponentData()
if msgData.ComponentType != discordgo.ButtonComponent {
return
}
switch msgData.CustomID {
case "example1":
//do something when this button is pressed
}
respEmbed := embed.NewGenericEmbed("Feature Name", "Example response embed from feature")
featureComponents := []discordgo.MessageComponent{
discordgo.ActionsRow{
Components: []discordgo.MessageComponent{
discordgo.Button{
Label: "Example 1",
Style: discordgo.SuccessButton,
CustomID: "example1",
},
},
},
}
resp := &discordgo.InteractionResponse{
Type: discordgo.InteractionResponseUpdateMessage,
Data: &discordgo.InteractionResponseData{
CustomID: "featureName",
Embeds: []*discordgo.MessageEmbed{respEmbed},
Components: featureComponents,
Flags: discordgo.MessageFlagsEphemeral,
},
}
err := session.InteractionRespond(event.Interaction, resp)
if err != nil {
Log.Error(err)
} else {
Log.Debug("Responded to button ", msgData.CustomID, " with response: ", fmt.Sprintf("%v", respEmbed))
}*/
}
}