@@ -21,13 +21,49 @@ type Webhooks interface {
21
21
UpdateWebhookWithToken (webhookID snowflake.ID , webhookToken string , webhookUpdate discord.WebhookUpdateWithToken , opts ... RequestOpt ) (discord.Webhook , error )
22
22
DeleteWebhookWithToken (webhookID snowflake.ID , webhookToken string , opts ... RequestOpt ) error
23
23
24
- CreateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageCreate discord.WebhookMessageCreate , wait bool , threadID snowflake. ID , opts ... RequestOpt ) (* discord.Message , error )
25
- CreateWebhookMessageSlack (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , wait bool , threadID snowflake. ID , opts ... RequestOpt ) (* discord.Message , error )
26
- CreateWebhookMessageGitHub (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , wait bool , threadID snowflake. ID , opts ... RequestOpt ) (* discord.Message , error )
27
- UpdateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageID snowflake.ID , messageUpdate discord.WebhookMessageUpdate , threadID snowflake. ID , opts ... RequestOpt ) (* discord.Message , error )
24
+ CreateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageCreate discord.WebhookMessageCreate , params CreateWebhookMessageParams , opts ... RequestOpt ) (* discord.Message , error )
25
+ CreateWebhookMessageSlack (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , params CreateWebhookMessageParams , opts ... RequestOpt ) (* discord.Message , error )
26
+ CreateWebhookMessageGitHub (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , params CreateWebhookMessageParams , opts ... RequestOpt ) (* discord.Message , error )
27
+ UpdateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageID snowflake.ID , messageUpdate discord.WebhookMessageUpdate , params UpdateWebhookMessageParams , opts ... RequestOpt ) (* discord.Message , error )
28
28
DeleteWebhookMessage (webhookID snowflake.ID , webhookToken string , messageID snowflake.ID , threadID snowflake.ID , opts ... RequestOpt ) error
29
29
}
30
30
31
+ type CreateWebhookMessageParams struct {
32
+ Wait bool
33
+ ThreadID snowflake.ID
34
+ WithComponents bool
35
+ }
36
+
37
+ func (p CreateWebhookMessageParams ) ToQueryValues () discord.QueryValues {
38
+ queryValues := discord.QueryValues {}
39
+ if p .Wait {
40
+ queryValues ["wait" ] = true
41
+ }
42
+ if p .ThreadID != 0 {
43
+ queryValues ["thread_id" ] = p .ThreadID
44
+ }
45
+ if p .WithComponents {
46
+ queryValues ["with_components" ] = true
47
+ }
48
+ return queryValues
49
+ }
50
+
51
+ type UpdateWebhookMessageParams struct {
52
+ ThreadID snowflake.ID
53
+ WithComponents bool
54
+ }
55
+
56
+ func (p UpdateWebhookMessageParams ) ToQueryValues () discord.QueryValues {
57
+ queryValues := discord.QueryValues {}
58
+ if p .ThreadID != 0 {
59
+ queryValues ["thread_id" ] = p .ThreadID
60
+ }
61
+ if p .WithComponents {
62
+ queryValues ["with_components" ] = true
63
+ }
64
+ return queryValues
65
+ }
66
+
31
67
type webhookImpl struct {
32
68
client Client
33
69
}
@@ -76,52 +112,41 @@ func (s *webhookImpl) DeleteWebhookWithToken(webhookID snowflake.ID, webhookToke
76
112
return s .client .Do (DeleteWebhookWithToken .Compile (nil , webhookID , webhookToken ), nil , nil , opts ... )
77
113
}
78
114
79
- func (s * webhookImpl ) createWebhookMessage (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , wait bool , threadID snowflake.ID , endpoint * Endpoint , opts []RequestOpt ) (message * discord.Message , err error ) {
80
- params := discord.QueryValues {}
81
- if wait {
82
- params ["wait" ] = true
83
- }
84
- if threadID != 0 {
85
- params ["thread_id" ] = threadID
86
- }
87
- compiledEndpoint := endpoint .Compile (params , webhookID , webhookToken )
115
+ func (s * webhookImpl ) createWebhookMessage (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , params CreateWebhookMessageParams , endpoint * Endpoint , opts []RequestOpt ) (message * discord.Message , err error ) {
116
+ compiledEndpoint := endpoint .Compile (params .ToQueryValues (), webhookID , webhookToken )
88
117
89
118
body , err := messageCreate .ToBody ()
90
119
if err != nil {
91
120
return
92
121
}
93
122
94
- if wait {
123
+ if params . Wait {
95
124
err = s .client .Do (compiledEndpoint , body , & message , opts ... )
96
125
} else {
97
126
err = s .client .Do (compiledEndpoint , body , nil , opts ... )
98
127
}
99
128
return
100
129
}
101
130
102
- func (s * webhookImpl ) CreateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageCreate discord.WebhookMessageCreate , wait bool , threadID snowflake. ID , opts ... RequestOpt ) (* discord.Message , error ) {
103
- return s .createWebhookMessage (webhookID , webhookToken , messageCreate , wait , threadID , CreateWebhookMessage , opts )
131
+ func (s * webhookImpl ) CreateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageCreate discord.WebhookMessageCreate , params CreateWebhookMessageParams , opts ... RequestOpt ) (* discord.Message , error ) {
132
+ return s .createWebhookMessage (webhookID , webhookToken , messageCreate , params , CreateWebhookMessage , opts )
104
133
}
105
134
106
- func (s * webhookImpl ) CreateWebhookMessageSlack (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , wait bool , threadID snowflake. ID , opts ... RequestOpt ) (* discord.Message , error ) {
107
- return s .createWebhookMessage (webhookID , webhookToken , messageCreate , wait , threadID , CreateWebhookMessageSlack , opts )
135
+ func (s * webhookImpl ) CreateWebhookMessageSlack (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , params CreateWebhookMessageParams , opts ... RequestOpt ) (* discord.Message , error ) {
136
+ return s .createWebhookMessage (webhookID , webhookToken , messageCreate , params , CreateWebhookMessageSlack , opts )
108
137
}
109
138
110
- func (s * webhookImpl ) CreateWebhookMessageGitHub (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , wait bool , threadID snowflake. ID , opts ... RequestOpt ) (* discord.Message , error ) {
111
- return s .createWebhookMessage (webhookID , webhookToken , messageCreate , wait , threadID , CreateWebhookMessageGitHub , opts )
139
+ func (s * webhookImpl ) CreateWebhookMessageGitHub (webhookID snowflake.ID , webhookToken string , messageCreate discord.Payload , params CreateWebhookMessageParams , opts ... RequestOpt ) (* discord.Message , error ) {
140
+ return s .createWebhookMessage (webhookID , webhookToken , messageCreate , params , CreateWebhookMessageGitHub , opts )
112
141
}
113
142
114
- func (s * webhookImpl ) UpdateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageID snowflake.ID , messageUpdate discord.WebhookMessageUpdate , threadID snowflake.ID , opts ... RequestOpt ) (message * discord.Message , err error ) {
115
- params := discord.QueryValues {}
116
- if threadID != 0 {
117
- params ["thread_id" ] = threadID
118
- }
143
+ func (s * webhookImpl ) UpdateWebhookMessage (webhookID snowflake.ID , webhookToken string , messageID snowflake.ID , messageUpdate discord.WebhookMessageUpdate , params UpdateWebhookMessageParams , opts ... RequestOpt ) (message * discord.Message , err error ) {
119
144
body , err := messageUpdate .ToBody ()
120
145
if err != nil {
121
146
return
122
147
}
123
148
124
- err = s .client .Do (UpdateWebhookMessage .Compile (params , webhookID , webhookToken , messageID ), body , & message , opts ... )
149
+ err = s .client .Do (UpdateWebhookMessage .Compile (params . ToQueryValues () , webhookID , webhookToken , messageID ), body , & message , opts ... )
125
150
return
126
151
}
127
152
0 commit comments