aboutsummaryrefslogtreecommitdiff
path: root/config/xp_reduce.go
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-08-21 12:54:52 +0000
committerAnhgelus Morhtuuzh <william@herges.fr>2025-08-21 12:54:52 +0000
commit166aadabfb37a1a565bb8d46241682c709b1c4db (patch)
treebc77b8e3f7a7599ad272fcc3c0032f3258ff7cd7 /config/xp_reduce.go
parent026abcc07a57eeda8a08a746ad2b664e956360f3 (diff)
parent15448aa0014e1473582227e2ea301df7ccfb9560 (diff)
Merge pull request '[Refactor] Config command' (#1) from refactor/config-command into main
Reviewed-on: https://git.anhgelus.world/anhgelus/les-copaings-bot/pulls/1
Diffstat (limited to 'config/xp_reduce.go')
-rw-r--r--config/xp_reduce.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/config/xp_reduce.go b/config/xp_reduce.go
new file mode 100644
index 0000000..ce5f23c
--- /dev/null
+++ b/config/xp_reduce.go
@@ -0,0 +1,60 @@
+package config
+
+import (
+ "strconv"
+
+ "github.com/anhgelus/gokord/cmd"
+ "github.com/anhgelus/gokord/component"
+ "github.com/anhgelus/gokord/logger"
+ "github.com/bwmarrin/discordgo"
+)
+
+const (
+ ModifyTimeReduce = "time_reduce"
+ 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()
+ 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/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())
+ }
+}