diff options
| author | ascpial <mail@ascpial.fr> | 2025-09-28 18:00:21 +0200 |
|---|---|---|
| committer | ascpial <mail@ascpial.fr> | 2025-09-28 18:00:21 +0200 |
| commit | 392feb89207d24215ab774c4c7492e5244748b6c (patch) | |
| tree | 37858cd7adb7609f55fa4948c89c7b0a3ee9f941 /rolereact | |
| parent | 444f3435d412e9ac31c47c6090836fae3717081c (diff) | |
fix(rolereact): wrong defer type and wrong edit endpoint
Diffstat (limited to 'rolereact')
| -rw-r--r-- | rolereact/rolereact.go | 32 | ||||
| -rw-r--r-- | rolereact/views.go | 29 |
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 } |
