aboutsummaryrefslogtreecommitdiff
path: root/config/xp_reduce.go
diff options
context:
space:
mode:
authorWilliam Hergès <anhgelus.morhtuuzh@proton.me>2025-09-26 18:02:18 +0200
committerGitHub <noreply@github.com>2025-09-26 18:02:18 +0200
commit80c147d5430bb3d8894231de3b6e960bcae43694 (patch)
treec1aa0cdfec1b99761d393cb63b39057046be5b74 /config/xp_reduce.go
parentc4a5e7db48edb5c69af8bec3e60e444951146d46 (diff)
parent30f110d8d49cd1174882c58916147f52e09dd51e (diff)
Merge pull request #14 from ascpial/new-config
[Feat] Finish upgrading config
Diffstat (limited to 'config/xp_reduce.go')
-rw-r--r--config/xp_reduce.go101
1 files changed, 60 insertions, 41 deletions
diff --git a/config/xp_reduce.go b/config/xp_reduce.go
index a61ef1a..bf04bf0 100644
--- a/config/xp_reduce.go
+++ b/config/xp_reduce.go
@@ -1,8 +1,13 @@
package config
import (
+ "fmt"
+ "strconv"
+
"github.com/anhgelus/gokord/cmd"
discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord/component"
+ "github.com/nyttikord/gokord/discord/types"
"github.com/nyttikord/gokord/interaction"
)
@@ -11,47 +16,61 @@ const (
TimeReduceSet = "time_reduce_set"
)
-func HandleModifyPeriodicReduce(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ *interaction.MessageComponentData, 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()
- //if err != nil {
- // logger.Alert("config/xp_reduce.go - Sending modal for periodic reduce", err.Error())
- //}
+func HandleModifyPeriodicReduceCommand(s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, resp *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 {
+ s.LogError(err, "Sending xp reduce modal")
+ }
}
-func HandleTimeReduceSet(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ *interaction.ModalSubmitData, _ *cmd.ResponseBuilder) {
- //resp.IsEphemeral()
- //v := data.Components[0].(*discordgo.ActionsRow).Components[0].(*discordgo.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())
- // }
- // return
- //}
- //if days < 30 {
- // err = resp.SetMessage("Le nombre de jours est inférieur à 30.").Send()
- // if err != nil {
- // logger.Alert("config/xp_reduce.go - Days < 30 (fallback)", err.Error())
- // }
- // return
- //}
- //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())
- //}
+func HandleTimeReduceSet(s *discordgo.Session, i *discordgo.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 {
+ err = resp.IsEphemeral().SetMessage(fmt.Sprintf("La valeur indiquée, `%s`, c'est pas un entier.", v)).Send()
+ if err != nil {
+ s.LogError(err, "Sending bad input message")
+ }
+ return false
+ }
+ if days < 30 {
+ err = resp.IsEphemeral().SetMessage("Le nombre de jours doit être suppérieur à 30.").Send()
+ if err != nil {
+ s.LogError(err, "Sending less than 30 days message")
+ }
+ return false
+ }
+ cfg := GetGuildConfig(i.GuildID)
+ cfg.DaysXPRemains = uint(days)
+ err = cfg.Save()
+ if err != nil {
+ s.LogError(err, "Saving DaysXPRemains configuration")
+ return false
+ }
+ return true
}