aboutsummaryrefslogtreecommitdiff
path: root/config/xp_reduce.go
diff options
context:
space:
mode:
authorWilliam Hergès <william@herges.fr>2025-08-06 15:35:10 +0200
committerWilliam Hergès <william@herges.fr>2025-08-06 15:35:10 +0200
commit0b93ea5daaee317a45291df188af13a6fab0c481 (patch)
tree466a00d5e181c887ad879091263e73109ade3344 /config/xp_reduce.go
parent51a412b32d2ab690bb2bb571f9337a69aae41ac5 (diff)
refactor(config): handle xp reduce
Diffstat (limited to 'config/xp_reduce.go')
-rw-r--r--config/xp_reduce.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/config/xp_reduce.go b/config/xp_reduce.go
new file mode 100644
index 0000000..8e97c26
--- /dev/null
+++ b/config/xp_reduce.go
@@ -0,0 +1,57 @@
+package config
+
+import (
+ "github.com/anhgelus/gokord/cmd"
+ "github.com/anhgelus/gokord/component"
+ "github.com/anhgelus/gokord/logger"
+ "github.com/bwmarrin/discordgo"
+ "strconv"
+)
+
+const (
+ ModifyTimeReduce = "time_reduce"
+ TimeReduceSet = "time_reduce_set"
+)
+
+func HandleModifyPeriodicReduce(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ err := resp.IsModal().SetComponents(component.New().ForModal().Add(component.NewActionRow().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 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
+ 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/channel.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("commands/config.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/channel.go - Sending error while saving days xp remains", err.Error())
+ }
+ return
+ }
+ if err = resp.SetMessage("Modification sauvegardée.").Send(); err != nil {
+ logger.Alert("config/channel.go - Sending days saved", err.Error())
+ }
+}