aboutsummaryrefslogtreecommitdiff
path: root/config/xp_reduce.go
diff options
context:
space:
mode:
authorWilliam Hergès <william@herges.fr>2025-09-27 18:23:27 +0200
committerWilliam Hergès <william@herges.fr>2025-09-27 18:23:27 +0200
commitb1d3bca64702e66b5ecfe5c9ea5f43aa9dc1d1e6 (patch)
tree67474ed704f529fe4941c179b7697b54099cc326 /config/xp_reduce.go
parentc46d1c34a29b10dac2a059b9d78e99a3d5d76f96 (diff)
parentcfdba5f417bb31aac564d13becc09874f17d075d (diff)
Merge branch 'main' into feat/xp-boostfeat/xp-boost
Diffstat (limited to 'config/xp_reduce.go')
-rw-r--r--config/xp_reduce.go79
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
}