aboutsummaryrefslogtreecommitdiff
path: root/config/xp_reduce.go
blob: 51607b156bf985632accc5739bcc55b567e31e82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package config

import (
	"context"
	"fmt"
	"strconv"

	"git.anhgelus.world/anhgelus/les-copaings-bot/common"
	"github.com/nyttikord/gokord/bot"
	"github.com/nyttikord/gokord/component"
	"github.com/nyttikord/gokord/interaction"
)

const (
	ModifyTimeReduce = "time_reduce"
	TimeReduceSet    = "time_reduce_set"
)

func HandleModifyPeriodicReduceCommand(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) {
	cfg := GetGuild(ctx, i.GuildID)
	resp := interaction.NewModalResponse().
		CustomID(TimeReduceSet).
		Title("Modifier la durée de l'expérience").
		AddComponent(&component.TextDisplay{
			Content: "Seul l'expérience gagnée sur cette période sera comptabilisée dans le niveau par défaut",
		}).
		AddComponent(&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),
			},
		}).
		Response()
	err := interaction.Respond(i.Interaction, resp).Do(ctx)
	if err != nil {
		bot.Logger(ctx).Error("sending xp reduce modal", "error", err)
	}
}

func HandleTimeReduceSet(ctx context.Context, dg bot.Session, i *interaction.ModalSubmit) bool {
	v := i.Data.Components[0].(*component.Label).Component.(*component.TextInput).Value
	days, err := strconv.Atoi(v)
	if err != nil {
		resp := interaction.NewMessageResponse().
			IsEphemeral().
			Message(fmt.Sprintf("La valeur indiquée, `%s`, c'est pas un entier.", v)).
			Response()
		err = interaction.Respond(i.Interaction, resp).Do(ctx)
		if err != nil {
			bot.Logger(ctx).Error("sending bad input message", "error", err)
		}
		return false
	}
	if days < 30 {
		resp := interaction.NewMessageResponse().
			IsEphemeral().
			Message("Le nombre de jours doit être suppérieur à 30.").
			Response()
		err = interaction.Respond(i.Interaction, resp).Do(ctx)
		if err != nil {
			bot.Logger(ctx).Error("sending less than 30 days message", "error", err)
		}
		return false
	}
	cfg := GetGuild(ctx, i.GuildID)
	cfg.DaysXPRemains = uint(days)
	err = cfg.Save(ctx, common.GetDB(ctx))
	if err != nil {
		bot.Logger(ctx).Error("saving DaysXPRemains configuration", "error", err)
		return false
	}
	return true
}