diff options
| author | William Hergès <william@herges.fr> | 2025-09-27 18:23:27 +0200 |
|---|---|---|
| committer | William Hergès <william@herges.fr> | 2025-09-27 18:23:27 +0200 |
| commit | b1d3bca64702e66b5ecfe5c9ea5f43aa9dc1d1e6 (patch) | |
| tree | 67474ed704f529fe4941c179b7697b54099cc326 /config/xp_reduce.go | |
| parent | c46d1c34a29b10dac2a059b9d78e99a3d5d76f96 (diff) | |
| parent | cfdba5f417bb31aac564d13becc09874f17d075d (diff) | |
Merge branch 'main' into feat/xp-boostfeat/xp-boost
Diffstat (limited to 'config/xp_reduce.go')
| -rw-r--r-- | config/xp_reduce.go | 79 |
1 files changed, 48 insertions, 31 deletions
diff --git a/config/xp_reduce.go b/config/xp_reduce.go index defc54b..389043d 100644 --- a/config/xp_reduce.go +++ b/config/xp_reduce.go @@ -1,12 +1,15 @@ package config import ( + "fmt" "strconv" "github.com/anhgelus/gokord/cmd" - "github.com/anhgelus/gokord/component" - "github.com/anhgelus/gokord/logger" - discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/bot" + "github.com/nyttikord/gokord/component" + "github.com/nyttikord/gokord/discord/types" + "github.com/nyttikord/gokord/event" + "github.com/nyttikord/gokord/interaction" ) const ( @@ -14,47 +17,61 @@ const ( TimeReduceSet = "time_reduce_set" ) -func HandleModifyPeriodicReduce(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - err := resp.IsModal(). - SetCustomID(TimeReduceSet). - SetComponents(component.New().ForModal().Add(component.NewActionRow().ForModal().Add( - component.NewTextInput(TimeReduceSet, "Jours avant la réduction", discordgo.TextInputShort). - SetMinLength(1). - SetMaxLength(3), - ))).Send() +func HandleModifyPeriodicReduceCommand(s bot.Session, i *event.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) { + cfg := GetGuildConfig(i.GuildID) + response := interaction.Response{ + Type: types.InteractionResponseModal, + Data: &interaction.ResponseData{ + CustomID: TimeReduceSet, + Title: "Modifier la durée de l'expérience", + Components: []component.Component{ + // TODO: When gokord supports it, enable this description again + // &component.TextDisplay{ + // Content: "Seul l'expérience gagnée sur cette période sera comptabilisée dans le niveau par défaut", + // }, + &component.Label{ + Label: "Durée en jours", + Component: &component.TextInput{ + CustomID: TimeReduceSet, + MinLength: 1, + MaxLength: 3, + Style: component.TextInputShort, + Placeholder: "Durée en jours", + Value: fmt.Sprintf("%d", cfg.DaysXPRemains), + }, + }, + }, + }, + } + err := s.InteractionAPI().Respond(i.Interaction, &response) if err != nil { - logger.Alert("config/xp_reduce.go - Sending modal for periodic reduce", err.Error()) + s.Logger().Error("sending xp reduce modal", "error", err) } } -func HandleTimeReduceSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.ModalSubmitInteractionData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() - v := data.Components[0].(*discordgo.ActionsRow).Components[0].(*discordgo.TextInput).Value +func HandleTimeReduceSet(s bot.Session, i *event.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) bool { + v := data.Components[0].(*component.Label).Component.(*component.TextInput).Value days, err := strconv.Atoi(v) if err != nil { - logger.Debug(err.Error()) - if err = resp.SetMessage("Nombres de jours invalides. Merci de mettre un entier.").Send(); err != nil { - logger.Alert("config/xp_reduce.go - Sending bad input", err.Error()) + err = resp.IsEphemeral().SetMessage(fmt.Sprintf("La valeur indiquée, `%s`, c'est pas un entier.", v)).Send() + if err != nil { + s.Logger().Error("sending bad input message", "error", err) } - return + return false } if days < 30 { - err = resp.SetMessage("Le nombre de jours est inférieur à 30.").Send() + err = resp.IsEphemeral().SetMessage("Le nombre de jours doit être suppérieur à 30.").Send() if err != nil { - logger.Alert("config/xp_reduce.go - Days < 30 (fallback)", err.Error()) + s.Logger().Error("sending less than 30 days message", "error", err) } - return + return false } cfg := GetGuildConfig(i.GuildID) cfg.DaysXPRemains = uint(days) - if err = cfg.Save(); err != nil { - logger.Alert("config/channel.go - Saving days xp remains", err.Error()) - if err = resp.SetMessage("Erreur lors de la sauvegarde du salon").Send(); err != nil { - logger.Alert("config/xp_reduce.go - Sending error while saving days xp remains", err.Error()) - } - return - } - if err = resp.SetMessage("Modification sauvegardée.").Send(); err != nil { - logger.Alert("config/xp_reduce.go - Sending days saved", err.Error()) + err = cfg.Save() + if err != nil { + s.Logger().Error("saving DaysXPRemains configuration", "error", err) + return false } + return true } |
