Skip to content

Commit 93aaedc

Browse files
authored
Merge pull request #412 from disgoorg/feature/with-components
Add with_components param to webhook messages
2 parents c83a5b7 + 6b677e8 commit 93aaedc

File tree

2 files changed

+53
-28
lines changed

2 files changed

+53
-28
lines changed

rest/webhooks.go

Lines changed: 51 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,49 @@ type Webhooks interface {
2121
UpdateWebhookWithToken(webhookID snowflake.ID, webhookToken string, webhookUpdate discord.WebhookUpdateWithToken, opts ...RequestOpt) (discord.Webhook, error)
2222
DeleteWebhookWithToken(webhookID snowflake.ID, webhookToken string, opts ...RequestOpt) error
2323

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)
2828
DeleteWebhookMessage(webhookID snowflake.ID, webhookToken string, messageID snowflake.ID, threadID snowflake.ID, opts ...RequestOpt) error
2929
}
3030

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+
3167
type webhookImpl struct {
3268
client Client
3369
}
@@ -76,52 +112,41 @@ func (s *webhookImpl) DeleteWebhookWithToken(webhookID snowflake.ID, webhookToke
76112
return s.client.Do(DeleteWebhookWithToken.Compile(nil, webhookID, webhookToken), nil, nil, opts...)
77113
}
78114

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)
88117

89118
body, err := messageCreate.ToBody()
90119
if err != nil {
91120
return
92121
}
93122

94-
if wait {
123+
if params.Wait {
95124
err = s.client.Do(compiledEndpoint, body, &message, opts...)
96125
} else {
97126
err = s.client.Do(compiledEndpoint, body, nil, opts...)
98127
}
99128
return
100129
}
101130

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)
104133
}
105134

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)
108137
}
109138

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)
112141
}
113142

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) {
119144
body, err := messageUpdate.ToBody()
120145
if err != nil {
121146
return
122147
}
123148

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...)
125150
return
126151
}
127152

webhook/webhook_client_impl.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (c *clientImpl) DeleteWebhook(opts ...rest.RequestOpt) error {
9393
}
9494

9595
func (c *clientImpl) CreateMessageInThread(messageCreate discord.WebhookMessageCreate, threadID snowflake.ID, opts ...rest.RequestOpt) (*discord.Message, error) {
96-
return c.Rest().CreateWebhookMessage(c.id, c.token, messageCreate, true, threadID, opts...)
96+
return c.Rest().CreateWebhookMessage(c.id, c.token, messageCreate, rest.CreateWebhookMessageParams{Wait: true, ThreadID: threadID}, opts...)
9797
}
9898

9999
func (c *clientImpl) CreateMessage(messageCreate discord.WebhookMessageCreate, opts ...rest.RequestOpt) (*discord.Message, error) {
@@ -113,7 +113,7 @@ func (c *clientImpl) UpdateMessage(messageID snowflake.ID, messageUpdate discord
113113
}
114114

115115
func (c *clientImpl) UpdateMessageInThread(messageID snowflake.ID, messageUpdate discord.WebhookMessageUpdate, threadID snowflake.ID, opts ...rest.RequestOpt) (*discord.Message, error) {
116-
return c.Rest().UpdateWebhookMessage(c.id, c.token, messageID, messageUpdate, threadID, opts...)
116+
return c.Rest().UpdateWebhookMessage(c.id, c.token, messageID, messageUpdate, rest.UpdateWebhookMessageParams{ThreadID: threadID}, opts...)
117117
}
118118

119119
func (c *clientImpl) UpdateContent(messageID snowflake.ID, content string, opts ...rest.RequestOpt) (*discord.Message, error) {

0 commit comments

Comments
 (0)