refactor(config): handle xp reduce
This commit is contained in:
parent
51a412b32d
commit
0b93ea5daa
4 changed files with 64 additions and 46 deletions
|
@ -12,8 +12,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ConfigModify = "config_modify"
|
ConfigModify = "config_modify"
|
||||||
ConfigModifyTimeReduce = "time_reduce"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
|
func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
|
||||||
|
@ -94,7 +93,7 @@ func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMa
|
||||||
SetEmoji(&discordgo.ComponentEmoji{Name: "💾"}),
|
SetEmoji(&discordgo.ComponentEmoji{Name: "💾"}),
|
||||||
).
|
).
|
||||||
AddOption(
|
AddOption(
|
||||||
component.NewSelectOption("Temps avec la réduction", ConfigModifyTimeReduce).
|
component.NewSelectOption("Temps avec la réduction", config.ModifyTimeReduce).
|
||||||
SetDescription("Gère le temps avant la réduction d'XP").
|
SetDescription("Gère le temps avant la réduction d'XP").
|
||||||
SetEmoji(&discordgo.ComponentEmoji{Name: "⌛"}),
|
SetEmoji(&discordgo.ComponentEmoji{Name: "⌛"}),
|
||||||
),
|
),
|
||||||
|
@ -173,44 +172,3 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap
|
||||||
logger.Alert("commands/config.go - Modification saved message", err.Error())
|
logger.Alert("commands/config.go - Modification saved message", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ConfigPeriodBeforeReduce(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
|
|
||||||
resp.IsEphemeral()
|
|
||||||
// verify every args
|
|
||||||
days, ok := optMap["days"]
|
|
||||||
if !ok {
|
|
||||||
err := resp.SetMessage("Le nombre de jours n'a pas été renseigné.").Send()
|
|
||||||
if err != nil {
|
|
||||||
logger.Alert("commands/config.go - Days not set (fallback)", err.Error())
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
d := days.IntValue()
|
|
||||||
if d < 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
|
|
||||||
}
|
|
||||||
// save
|
|
||||||
cfg := config.GetGuildConfig(i.GuildID)
|
|
||||||
cfg.DaysXPRemains = uint(d)
|
|
||||||
err := cfg.Save()
|
|
||||||
if err != nil {
|
|
||||||
logger.Alert(
|
|
||||||
"commands/config.go - Saving config",
|
|
||||||
err.Error(),
|
|
||||||
"guild_id",
|
|
||||||
i.GuildID,
|
|
||||||
"days",
|
|
||||||
d,
|
|
||||||
)
|
|
||||||
err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send()
|
|
||||||
} else {
|
|
||||||
err = resp.SetMessage("Nombre de jours enregistré.").Send()
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
logger.Alert("commands/config.go - Days saved message", err.Error())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
57
config/xp_reduce.go
Normal file
57
config/xp_reduce.go
Normal file
|
@ -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())
|
||||||
|
}
|
||||||
|
}
|
|
@ -192,7 +192,7 @@ func HandleXpRoleLevel(_ *discordgo.Session, i *discordgo.InteractionCreate, dat
|
||||||
cID := XpRoleAddRole
|
cID := XpRoleAddRole
|
||||||
resp.SetMessage("Rôle à ajouter")
|
resp.SetMessage("Rôle à ajouter")
|
||||||
if data.CustomID == XpRoleEditLevel {
|
if data.CustomID == XpRoleEditLevel {
|
||||||
cID = XpRoleEditLevel
|
cID = XpRoleEditRole
|
||||||
resp.SetMessage("Rôle à modifier")
|
resp.SetMessage("Rôle à modifier")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
5
main.go
5
main.go
|
@ -129,7 +129,7 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// interaction: /config
|
// interaction: /config
|
||||||
// xp related
|
// xp role related
|
||||||
bot.HandleMessageComponent(config.HandleModifyXpRole, config.ModifyXpRole)
|
bot.HandleMessageComponent(config.HandleModifyXpRole, config.ModifyXpRole)
|
||||||
bot.HandleMessageComponent(config.HandleXpRoleAddEdit, config.XpRoleAdd)
|
bot.HandleMessageComponent(config.HandleXpRoleAddEdit, config.XpRoleAdd)
|
||||||
bot.HandleMessageComponent(config.HandleXpRoleAddEdit, config.XpRoleEdit)
|
bot.HandleMessageComponent(config.HandleXpRoleAddEdit, config.XpRoleEdit)
|
||||||
|
@ -142,6 +142,9 @@ func main() {
|
||||||
// channel related
|
// channel related
|
||||||
bot.HandleMessageComponent(config.HandleModifyFallbackChannel, config.ModifyFallbackChannel)
|
bot.HandleMessageComponent(config.HandleModifyFallbackChannel, config.ModifyFallbackChannel)
|
||||||
bot.HandleMessageComponent(config.HandleFallbackChannelSet, config.FallbackChannelSet)
|
bot.HandleMessageComponent(config.HandleFallbackChannelSet, config.FallbackChannelSet)
|
||||||
|
// reduce related
|
||||||
|
bot.HandleMessageComponent(config.HandleModifyPeriodicReduce, config.ModifyTimeReduce)
|
||||||
|
bot.HandleModal(config.HandleTimeReduceSet, config.TimeReduceSet)
|
||||||
|
|
||||||
// xp handlers
|
// xp handlers
|
||||||
bot.AddHandler(OnMessage)
|
bot.AddHandler(OnMessage)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue