aboutsummaryrefslogtreecommitdiff
path: root/rolereact
diff options
context:
space:
mode:
authorascpial <mail@ascpial.fr>2025-09-28 18:00:21 +0200
committerascpial <mail@ascpial.fr>2025-09-28 18:00:21 +0200
commit392feb89207d24215ab774c4c7492e5244748b6c (patch)
tree37858cd7adb7609f55fa4948c89c7b0a3ee9f941 /rolereact
parent444f3435d412e9ac31c47c6090836fae3717081c (diff)
fix(rolereact): wrong defer type and wrong edit endpoint
Diffstat (limited to 'rolereact')
-rw-r--r--rolereact/rolereact.go32
-rw-r--r--rolereact/views.go29
2 files changed, 37 insertions, 24 deletions
diff --git a/rolereact/rolereact.go b/rolereact/rolereact.go
index ebc09be..3d3ae47 100644
--- a/rolereact/rolereact.go
+++ b/rolereact/rolereact.go
@@ -50,8 +50,10 @@ func HandleCommand(
resp *cmd.ResponseBuilder,
) {
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
- Type: types.InteractionResponseDeferredMessageUpdate,
- Data: &interaction.ResponseData{Flags: channel.MessageFlagsEphemeral},
+ Type: types.InteractionResponseDeferredChannelMessageWithSource,
+ Data: &interaction.ResponseData{
+ Flags: channel.MessageFlagsEphemeral,
+ },
})
if err != nil {
s.Logger().Error("unable to defer interaction", "error", err)
@@ -77,9 +79,9 @@ func HandleCommand(
},
)
if err != nil {
- err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
- Type: types.InteractionResponseChannelMessageWithSource,
- Data: &interaction.ResponseData{Content: fmt.Sprintf("Error: %s", err.Error())},
+ _, err := s.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
+ Flags: channel.MessageFlagsIsComponentsV2,
+ Components: []component.Message{&component.TextDisplay{Content: fmt.Sprintf("Impossible d'envoyer le message : %s", err.Error())}},
})
if err != nil {
s.Logger().Error("Unable to send message", "error", err)
@@ -92,12 +94,14 @@ func HandleCommand(
err = cfg.Save()
if err != nil {
s.Logger().Error("Unable to save rolereact message in database", "error", err)
- err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
- Type: types.InteractionResponseChannelMessageWithSource | types.InteractionResponseDeferredChannelMessageWithSource,
- Data: &interaction.ResponseData{Content: "Unable to save message in database. Please retry later."},
+ _, err := s.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
+ Flags: channel.MessageFlagsIsComponentsV2,
+ Components: []component.Message{
+ &component.TextDisplay{Content: "Impossible d'enregistrer le message dans la base de données. Merci de contacter l'administrateur du bot."},
+ },
})
if err != nil {
- s.Logger().Error("Unable to send message", "error", err)
+ s.Logger().Error("unable to send message", "error", err)
}
return
}
@@ -106,9 +110,13 @@ func HandleCommand(
editID := messageCounter
messageCounter++
- err = s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
- Type: types.InteractionResponseChannelMessageWithSource,
- Data: MessageModifyData(i, &EditID{MessageEditID: editID}),
+ components := MessageModifyComponents(i, &EditID{MessageEditID: editID})
+ // Using this function here is deprecated as per discord documentation.
+ // That said, using the recommended EditResponse endpoint does not allow the use of
+ // version 2 components...
+ _, err = s.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
+ Flags: channel.MessageFlagsIsComponentsV2,
+ Components: components,
})
if err != nil {
s.Logger().Error("Unable to send edit rolereact message", "error", err)
diff --git a/rolereact/views.go b/rolereact/views.go
index eafa4dc..3ecfe13 100644
--- a/rolereact/views.go
+++ b/rolereact/views.go
@@ -13,14 +13,11 @@ import (
"github.com/nyttikord/gokord/interaction"
)
-func MessageModifyData(i *event.InteractionCreate, parameters *EditID) *interaction.ResponseData {
+func MessageModifyComponents(i *event.InteractionCreate, parameters *EditID) []component.Message {
message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
if !ok {
- return &interaction.ResponseData{
- Flags: channel.MessageFlagsIsComponentsV2,
- Components: []component.Component{
- &component.TextDisplay{Content: "Cette modification est trop vieille et a été oubliée."},
- },
+ return []component.Message{
+ &component.TextDisplay{Content: "Cette modification est trop vieille et a été oubliée."},
}
}
var note string
@@ -104,14 +101,22 @@ func MessageModifyData(i *event.InteractionCreate, parameters *EditID) *interact
},
},
}}...)
- responseData := &interaction.ResponseData{
- Flags: channel.MessageFlagsIsComponentsV2 | channel.MessageFlagsEphemeral,
- Components: []component.Component{
- &component.Container{
- Components: components,
- },
+ return []component.Message{
+ &component.Container{
+ Components: components,
},
}
+}
+
+func MessageModifyData(i *event.InteractionCreate, parameters *EditID) *interaction.ResponseData {
+ components := []component.Component{}
+ for _, component := range MessageModifyComponents(i, parameters) {
+ components = append(components, component)
+ }
+ responseData := &interaction.ResponseData{
+ Flags: channel.MessageFlagsIsComponentsV2 | channel.MessageFlagsEphemeral,
+ Components: components,
+ }
return responseData
}