From 8885566932c965926ee64fad6404e6f26bc13220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Sat, 13 Sep 2025 13:32:01 +0200 Subject: build(gokord): upgrade to latest version --- config/channel.go | 116 +++++++++++++++++------------------ config/xp_reduce.go | 87 +++++++++++++------------- config/xp_role.go | 171 ++++++++++++++++++++++++++-------------------------- 3 files changed, 184 insertions(+), 190 deletions(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index 537d586..c09061f 100644 --- a/config/channel.go +++ b/config/channel.go @@ -4,9 +4,9 @@ import ( "strings" "github.com/anhgelus/gokord/cmd" - "github.com/anhgelus/gokord/component" "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/interaction" ) const ( @@ -20,16 +20,16 @@ const ( DisChannelDelSet = "disabled_channel_del_set" ) -func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow().Add( - component.NewChannelSelect(FallbackChannelSet).AddChannelType(discordgo.ChannelTypeGuildText), - ))).Send() - if err != nil { - logger.Alert("config/channel.go - Sending channel list for fallback", err.Error()) - } +func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { + //err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow().Add( + // component.NewChannelSelect(FallbackChannelSet).AddChannelType(discordgo.ChannelTypeGuildText), + //))).Send() + //if err != nil { + // logger.Alert("config/channel.go - Sending channel list for fallback", err.Error()) + //} } -func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { +func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) @@ -49,61 +49,61 @@ func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCrea } } -func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow(). - Add( - component.NewButton(DisChannelAdd, discordgo.PrimaryButton). - SetLabel("Désactiver un salon"). - SetEmoji(&discordgo.ComponentEmoji{Name: "⬇️"}), - ). - Add( - component.NewButton(DisChannelDel, discordgo.DangerButton). - SetLabel("Réactiver un salon"). - SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}), - ), - )).Send() - if err != nil { - logger.Alert("config/channel.go - Sending action type", err.Error()) - } +func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { + //err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow(). + // Add( + // component.NewButton(DisChannelAdd, discordgo.PrimaryButton). + // SetLabel("Désactiver un salon"). + // SetEmoji(&discordgo.ComponentEmoji{Name: "⬇️"}), + // ). + // Add( + // component.NewButton(DisChannelDel, discordgo.DangerButton). + // SetLabel("Réactiver un salon"). + // SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}), + // ), + //)).Send() + //if err != nil { + // logger.Alert("config/channel.go - Sending action type", err.Error()) + //} } -func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral().SetMessage("Salon à désactiver...") - cID := DisChannelAddSet - if data.CustomID == DisChannelDel { - resp.SetMessage("Salon à réactiver...") - cID = DisChannelDelSet - } - err := resp.SetComponents(component.New().Add(component.NewActionRow().Add(component.NewChannelSelect(cID)))).Send() - if err != nil { - logger.Alert("config/channel.go - Sending channel list for disable", err.Error()) - } +func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { + //resp.IsEphemeral().SetMessage("Salon à désactiver...") + //cID := DisChannelAddSet + //if data.CustomID == DisChannelDel { + // resp.SetMessage("Salon à réactiver...") + // cID = DisChannelDelSet + //} + //err := resp.SetComponents(component.New().Add(component.NewActionRow().Add(component.NewChannelSelect(cID)))).Send() + //if err != nil { + // logger.Alert("config/channel.go - Sending channel list for disable", err.Error()) + //} } -func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() - cfg := GetGuildConfig(i.GuildID) - id := data.Values[0] - if strings.Contains(cfg.DisabledChannels, id) { - err := resp.SetMessage("Le salon est déjà dans la liste des salons désactivés").Send() - if err != nil { - logger.Alert("commands/config.go - Channel already disabled", err.Error()) - } - return - } - cfg.DisabledChannels += id + ";" - if err := cfg.Save(); err != nil { - logger.Alert("commands/config.go - Saving config disable add", err.Error()) - if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil { - logger.Alert("config/channel.go - Sending error while saving config", err.Error()) - } - } - if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil { - logger.Alert("commands/config.go - Modification saved message disable add", err.Error()) - } +func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { + //resp.IsEphemeral() + //cfg := GetGuildConfig(i.GuildID) + //id := data.Values[0] + //if strings.Contains(cfg.DisabledChannels, id) { + // err := resp.SetMessage("Le salon est déjà dans la liste des salons désactivés").Send() + // if err != nil { + // logger.Alert("commands/config.go - Channel already disabled", err.Error()) + // } + // return + //} + //cfg.DisabledChannels += id + ";" + //if err := cfg.Save(); err != nil { + // logger.Alert("commands/config.go - Saving config disable add", err.Error()) + // if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil { + // logger.Alert("config/channel.go - Sending error while saving config", err.Error()) + // } + //} + //if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil { + // logger.Alert("commands/config.go - Modification saved message disable add", err.Error()) + //} } -func HandleDisChannelDelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { +func HandleDisChannelDelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) id := data.Values[0] diff --git a/config/xp_reduce.go b/config/xp_reduce.go index defc54b..4bcdd1e 100644 --- a/config/xp_reduce.go +++ b/config/xp_reduce.go @@ -1,12 +1,9 @@ package config import ( - "strconv" - "github.com/anhgelus/gokord/cmd" - "github.com/anhgelus/gokord/component" - "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/interaction" ) const ( @@ -14,47 +11,47 @@ const ( 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 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 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()) - } +func HandleTimeReduceSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.ModalSubmitData, 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()) + //} } diff --git a/config/xp_role.go b/config/xp_role.go index 97de8be..39e48f6 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -2,15 +2,12 @@ package config import ( "fmt" - "strconv" - "time" - "git.anhgelus.world/anhgelus/les-copaings-bot/exp" "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/cmd" - "github.com/anhgelus/gokord/component" "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/interaction" ) type XpRole struct { @@ -36,50 +33,50 @@ var ( configModifyMap = map[string]uint{} ) -func HandleModifyXpRole(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - err := resp.IsEphemeral(). - SetMessage("Action à réaliser"). - SetComponents(component.New().Add(component.NewActionRow(). - Add(component.NewButton(XpRoleAdd, discordgo.PrimaryButton). - SetLabel("Ajouter"). - SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}), - ). - Add(component.NewButton(XpRoleEdit, discordgo.SecondaryButton). - SetLabel("Modifier"). - SetEmoji(&discordgo.ComponentEmoji{Name: "📝"}), - ). - Add(component.NewButton(XpRoleDel, discordgo.DangerButton). - SetLabel("Supprimer"). - SetEmoji(&discordgo.ComponentEmoji{Name: "❌"}), - ), - )).Send() - if err != nil { - logger.Alert("config/xp_reduce.go - Sending config", err.Error()) - } +func HandleModifyXpRole(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { + //err := resp.IsEphemeral(). + // SetMessage("Action à réaliser"). + // SetComponents(component.New().Add(component.NewActionRow(). + // Add(component.NewButton(XpRoleAdd, discordgo.PrimaryButton). + // SetLabel("Ajouter"). + // SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}), + // ). + // Add(component.NewButton(XpRoleEdit, discordgo.SecondaryButton). + // SetLabel("Modifier"). + // SetEmoji(&discordgo.ComponentEmoji{Name: "📝"}), + // ). + // Add(component.NewButton(XpRoleDel, discordgo.DangerButton). + // SetLabel("Supprimer"). + // SetEmoji(&discordgo.ComponentEmoji{Name: "❌"}), + // ), + // )).Send() + //if err != nil { + // logger.Alert("config/xp_reduce.go - Sending config", err.Error()) + //} } -func HandleXpRoleAddEdit(_ *discordgo.Session, _ *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - cID := XpRoleAddLevel - if data.CustomID == XpRoleEdit { - cID = XpRoleEditLevel - } - err := resp.IsModal(). - SetTitle("Role"). - SetCustomID(cID). - SetComponents(component.New().ForModal().Add(component.NewActionRow().ForModal().Add( - component.NewTextInput(cID, "Niveau", discordgo.TextInputShort). - SetPlaceholder("5"). - IsRequired(). - SetMinLength(0). - SetMaxLength(5), - ))). - Send() - if err != nil { - logger.Alert("config/xp_reduce.go - Sending modal to add/edit", err.Error()) - } +func HandleXpRoleAddEdit(_ *discordgo.Session, _ *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { + //cID := XpRoleAddLevel + //if data.CustomID == XpRoleEdit { + // cID = XpRoleEditLevel + //} + //err := resp.IsModal(). + // SetTitle("Role"). + // SetCustomID(cID). + // SetComponents(component.New().ForModal().Add(component.NewActionRow().ForModal().Add( + // component.NewTextInput(cID, "Niveau", discordgo.TextInputShort). + // SetPlaceholder("5"). + // IsRequired(). + // SetMinLength(0). + // SetMaxLength(5), + // ))). + // Send() + //if err != nil { + // logger.Alert("config/xp_reduce.go - Sending modal to add/edit", err.Error()) + //} } -func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { +func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) roleId := data.Values[0] @@ -111,7 +108,7 @@ func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d } } -func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { +func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) roleId := data.Values[0] @@ -139,17 +136,17 @@ func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate, } } -func HandleXpRoleDel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { - err := resp.IsEphemeral(). - SetMessage("Rôle à supprimer"). - SetComponents(component.New().Add(component.NewActionRow().Add(component.NewRoleSelect(XpRoleDelRole)))). - Send() - if err != nil { - logger.Alert("config/xp_reduce.go - Sending response to del", err.Error()) - } +func HandleXpRoleDel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { + //err := resp.IsEphemeral(). + // SetMessage("Rôle à supprimer"). + // SetComponents(component.New().Add(component.NewActionRow().Add(component.NewRoleSelect(XpRoleDelRole)))). + // Send() + //if err != nil { + // logger.Alert("config/xp_reduce.go - Sending response to del", err.Error()) + //} } -func HandleXpRoleDelRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { +func HandleXpRoleDelRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) roleId := data.Values[0] @@ -176,39 +173,39 @@ func HandleXpRoleDelRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d } } -func HandleXpRoleLevel(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.ModalSubmitInteractionData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() - input := data.Components[0].(*discordgo.ActionsRow).Components[0].(*discordgo.TextInput) - - k := getKeyConfigRole(i) - in, err := strconv.Atoi(input.Value) - if err != nil || in < 0 { - if err = resp. - SetMessage("Impossible de lire le nombre. Il doit s'agit d'un nombre entier positif."). - Send(); err != nil { - logger.Alert("command/config.go - Sending bad number", err.Error()) - } - return - } - configModifyMap[k] = exp.LevelXP(uint(in)) - go func(i *discordgo.InteractionCreate, k string) { - time.Sleep(5 * time.Minute) - delete(configModifyMap, k) - }(i, k) - - cID := XpRoleAddRole - resp.SetMessage("Rôle à ajouter") - if data.CustomID == XpRoleEditLevel { - cID = XpRoleEditRole - resp.SetMessage("Rôle à modifier") - } - - err = resp. - SetComponents(component.New().Add(component.NewActionRow().Add(component.NewRoleSelect(cID)))). - Send() - if err != nil { - logger.Alert("config/xp_reduce.go - Sending response to add/edit", err.Error()) - } +func HandleXpRoleLevel(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.ModalSubmitData, resp *cmd.ResponseBuilder) { + //resp.IsEphemeral() + //input := data.Components[0].(*discordgo.ActionsRow).Components[0].(*discordgo.TextInput) + // + //k := getKeyConfigRole(i) + //in, err := strconv.Atoi(input.Value) + //if err != nil || in < 0 { + // if err = resp. + // SetMessage("Impossible de lire le nombre. Il doit s'agit d'un nombre entier positif."). + // Send(); err != nil { + // logger.Alert("command/config.go - Sending bad number", err.Error()) + // } + // return + //} + //configModifyMap[k] = exp.LevelXP(uint(in)) + //go func(i *discordgo.InteractionCreate, k string) { + // time.Sleep(5 * time.Minute) + // delete(configModifyMap, k) + //}(i, k) + // + //cID := XpRoleAddRole + //resp.SetMessage("Rôle à ajouter") + //if data.CustomID == XpRoleEditLevel { + // cID = XpRoleEditRole + // resp.SetMessage("Rôle à modifier") + //} + // + //err = resp. + // SetComponents(component.New().Add(component.NewActionRow().Add(component.NewRoleSelect(cID)))). + // Send() + //if err != nil { + // logger.Alert("config/xp_reduce.go - Sending response to add/edit", err.Error()) + //} } func getKeyConfigRole(i *discordgo.InteractionCreate) string { -- cgit v1.2.3 From e42ecdd7154d740800ef392c6318220944b55a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Sat, 13 Sep 2025 21:31:16 +0200 Subject: build(gokord): use latest version --- config/channel.go | 19 +++++++++---------- config/xp_role.go | 46 +++++++++++++++------------------------------- 2 files changed, 24 insertions(+), 41 deletions(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index c09061f..918af6d 100644 --- a/config/channel.go +++ b/config/channel.go @@ -4,7 +4,6 @@ import ( "strings" "github.com/anhgelus/gokord/cmd" - "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" "github.com/nyttikord/gokord/interaction" ) @@ -29,7 +28,7 @@ func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionC //} } -func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleFallbackChannelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) @@ -38,14 +37,14 @@ func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCrea cfg.FallbackChannel = channelID err := cfg.Save() if err != nil { - logger.Alert("config/channel.go - Saving fallback channel", err.Error()) + s.LogError(err, "saving fallback channel") if err = resp.SetMessage("Erreur lors de la sauvegarde du salon").Send(); err != nil { - logger.Alert("config/channel.go - Sending error while saving channel", err.Error()) + s.LogError(err, "sending error while saving channel") } return } if err = resp.SetMessage("Salon sauvegardé.").Send(); err != nil { - logger.Alert("config/channel.go - Sending channel saved", err.Error()) + s.LogError(err, "sending channel saved") } } @@ -103,25 +102,25 @@ func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate //} } -func HandleDisChannelDelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleDisChannelDelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) id := data.Values[0] if !strings.Contains(cfg.DisabledChannels, id) { err := resp.SetMessage("Le salon n'est pas désactivé").Send() if err != nil { - logger.Alert("commands/config.go - Channel not disabled", err.Error()) + s.LogError(err, "sending channel not disabled") } return } cfg.DisabledChannels = strings.ReplaceAll(cfg.DisabledChannels, id+";", "") if err := cfg.Save(); err != nil { - logger.Alert("commands/config.go - Saving config disable del", err.Error()) + s.LogError(err, "saving config disable del") if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil { - logger.Alert("config/channel.go - Sending error while saving config", err.Error()) + s.LogError(err, "sending error while saving config") } } if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil { - logger.Alert("commands/config.go - Modification saved message disable del", err.Error()) + s.LogError(err, "modification saved message disable del") } } diff --git a/config/xp_role.go b/config/xp_role.go index 39e48f6..1a8fa8a 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -5,7 +5,6 @@ import ( "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/cmd" - "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" "github.com/nyttikord/gokord/interaction" ) @@ -76,7 +75,7 @@ func HandleXpRoleAddEdit(_ *discordgo.Session, _ *discordgo.InteractionCreate, d //} } -func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleXpRoleAddRole(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) roleId := data.Values[0] @@ -84,7 +83,7 @@ func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d if r.RoleID == roleId { err := resp.SetMessage("Le rôle est déjà présent dans la config").Send() if err != nil { - logger.Alert("config/xp_role.go - Role already in config", err.Error()) + s.LogError(err, "sending role already in config") } return } @@ -95,20 +94,15 @@ func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d }) err := cfg.Save() if err != nil { - logger.Alert( - "config/xp_role.go - Saving config", - err.Error(), - "guild_id", i.GuildID, - "role_id", roleId, - "type", "add", - ) + s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + return } if err = resp.SetMessage("Rôle ajouté.").Send(); err != nil { - logger.Alert("config/xp_role.go - Sending success", err.Error()) + s.LogError(err, "Sending role saved") } } -func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleXpRoleEditRole(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) roleId := data.Values[0] @@ -116,23 +110,18 @@ func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate, if r == nil { err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send() if err != nil { - logger.Alert("config/xp_role.go - Role not found (edit)", err.Error()) + s.LogError(err, "role not found") } return } r.XP = configModifyMap[getKeyConfigRole(i)] err := gokord.DB.Save(r).Error if err != nil { - logger.Alert( - "config/xp_role.go - Saving config", - err.Error(), - "guild_id", i.GuildID, - "role_id", roleId, - "type", "edit", - ) + s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + return } if err = resp.SetMessage("Rôle modifié.").Send(); err != nil { - logger.Alert("config/xp_role.go - Sending success", err.Error()) + s.LogError(err, "sending role saved") } } @@ -146,7 +135,7 @@ func HandleXpRoleDel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ int //} } -func HandleXpRoleDelRole(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleXpRoleDelRole(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) roleId := data.Values[0] @@ -154,22 +143,17 @@ func HandleXpRoleDelRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d if r == nil { err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send() if err != nil { - logger.Alert("config/xp_role.go - Sending role not found (del)", err.Error()) + s.LogError(err, "sending role not found") } return } err := gokord.DB.Delete(r).Error if err != nil { - logger.Alert( - "config/xp_role.go - Deleting entry", - err.Error(), - "guild_id", i.GuildID, - "role_id", roleId, - "type", "del", - ) + s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + return } if err = resp.SetMessage("Rôle supprimé.").Send(); err != nil { - logger.Alert("config/xp_role.go - Sending success", err.Error()) + s.LogError(err, "sending role deleted") } } -- cgit v1.2.3 From 24519b76b48f521f1ef4c7e5e038574eaa66ebcd Mon Sep 17 00:00:00 2001 From: ascpial Date: Sat, 13 Sep 2025 21:40:24 +0200 Subject: feat(config): improve /config look and xp_role usability --- config/guild.go | 9 + config/xp_role.go | 541 ++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 415 insertions(+), 135 deletions(-) (limited to 'config') diff --git a/config/guild.go b/config/guild.go index 8384d5b..6310fa4 100644 --- a/config/guild.go +++ b/config/guild.go @@ -43,3 +43,12 @@ func (cfg *GuildConfig) FindXpRole(roleID string) (int, *XpRole) { } return 0, nil } + +func (cfg *GuildConfig) FindXpRoleID(ID uint) (int, *XpRole) { + for i, r := range cfg.XpRoles { + if r.ID == ID { + return i, &r + } + } + return -1, nil +} diff --git a/config/xp_role.go b/config/xp_role.go index 1a8fa8a..b35966f 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -2,10 +2,16 @@ package config import ( "fmt" + "slices" + "strconv" + "git.anhgelus.world/anhgelus/les-copaings-bot/exp" "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/cmd" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/channel" + "github.com/nyttikord/gokord/component" + "github.com/nyttikord/gokord/discord/types" "github.com/nyttikord/gokord/interaction" ) @@ -17,181 +23,446 @@ type XpRole struct { } const ( - ModifyXpRole = "xp_role" - XpRoleAdd = "xp_role_add" - XpRoleAddLevel = "xp_role_add_level" - XpRoleAddRole = "xp_role_add_role" - XpRoleDel = "xp_role_del" - XpRoleDelRole = "xp_role_del_role" - XpRoleEdit = "xp_role_edit" - XpRoleEditLevel = "xp_role_edit_level" - XpRoleEditRole = "xp_role_edit_role" + ModifyXpRole = "xp_role" + XpRoleNew = "xp_role_add" + XpRoleAdd = "xp_role_add_level" + XpRoleEditPattern = `^xp_role_edit_(\d+)$` + XpRoleEditLevelPattern = `^xp_role_edit_level_(\d+)$` + XpRoleEditLevelStartPattern = `^xp_role_edit_level_start_(\d+)$` + XpRoleEditRolePattern = `^xp_role_edit_role_(\d+)$` + XpRoleDel = `^xp_role_del_(\d+)$` ) -var ( - configModifyMap = map[string]uint{} -) +func HandleXpRole( + session *discordgo.Session, + i *discordgo.InteractionCreate, + _ interaction.MessageComponentData, + resp *cmd.ResponseBuilder, +) { + cfg := GetGuildConfig(i.GuildID) + container := component.Container{ + Components: []component.Message{ + &component.TextDisplay{Content: "## Configuration / Rôles de niveaux"}, + &component.Separator{}, + }, + } + for _, r := range cfg.XpRoles { + container.Components = append(container.Components, &component.Section{ + Components: []component.Message{ + &component.TextDisplay{ + Content: fmt.Sprintf("<@&%s> - Niveau %d", r.RoleID, exp.Level(r.XP)), + }, + }, + Accessory: &component.Button{ + CustomID: fmt.Sprintf("xp_role_edit_%d", r.ID), + Style: component.ButtonStyleSecondary, + Label: "Modifier", + }, + }) + } + container.Components = append(container.Components, + &component.ActionsRow{ + Components: []component.Message{ + &component.Button{ + CustomID: XpRoleNew, + Style: component.ButtonStylePrimary, + Label: "Nouveau rôle", + }, + }, + }, + &component.Separator{}, + &component.ActionsRow{ + Components: []component.Message{ + &component.Button{CustomID: "config", Style: component.ButtonStyleSecondary, Label: "Retour"}, + }, + }, + ) + + response := &interaction.Response{ + Type: types.InteractionResponseUpdateMessage, + Data: &interaction.ResponseData{ + Components: []component.Component{&container}, + Flags: channel.MessageFlagsIsComponentsV2, + }, + } + err := session.InteractionAPI().Respond(i.Interaction, response) + if err != nil { + session.LogError(err, "Sending config") + } +} -func HandleModifyXpRole(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - //err := resp.IsEphemeral(). - // SetMessage("Action à réaliser"). - // SetComponents(component.New().Add(component.NewActionRow(). - // Add(component.NewButton(XpRoleAdd, discordgo.PrimaryButton). - // SetLabel("Ajouter"). - // SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}), - // ). - // Add(component.NewButton(XpRoleEdit, discordgo.SecondaryButton). - // SetLabel("Modifier"). - // SetEmoji(&discordgo.ComponentEmoji{Name: "📝"}), - // ). - // Add(component.NewButton(XpRoleDel, discordgo.DangerButton). - // SetLabel("Supprimer"). - // SetEmoji(&discordgo.ComponentEmoji{Name: "❌"}), - // ), - // )).Send() - //if err != nil { - // logger.Alert("config/xp_reduce.go - Sending config", err.Error()) - //} +func HandleXpRoleNew( + session *discordgo.Session, + i *discordgo.InteractionCreate, + data interaction.MessageComponentData, + resp *cmd.ResponseBuilder, +) { + one := 1 + response := &interaction.Response{ + Type: types.InteractionResponseModal, + Data: &interaction.ResponseData{ + Title: "Nouveau rôle de niveau", + CustomID: XpRoleAdd, + Components: []component.Component{ + &component.Label{ + Label: "Niveau", + Component: &component.TextInput{ + CustomID: "level", + Style: component.TextInputShort, + Placeholder: "5", + MinLength: 1, + MaxLength: 5, + Required: true, + }, + }, + &component.Label{ + Label: "Rôle", + Component: &component.SelectMenu{ + MenuType: types.SelectMenuRole, + CustomID: "role", + MinValues: &one, + MaxValues: one, + }, + }, + }, + }, + } + err := session.InteractionAPI().Respond(i.Interaction, response) + if err != nil { + session.LogError(err, "Sending modal to add") + } } -func HandleXpRoleAddEdit(_ *discordgo.Session, _ *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - //cID := XpRoleAddLevel - //if data.CustomID == XpRoleEdit { - // cID = XpRoleEditLevel - //} - //err := resp.IsModal(). - // SetTitle("Role"). - // SetCustomID(cID). - // SetComponents(component.New().ForModal().Add(component.NewActionRow().ForModal().Add( - // component.NewTextInput(cID, "Niveau", discordgo.TextInputShort). - // SetPlaceholder("5"). - // IsRequired(). - // SetMinLength(0). - // SetMaxLength(5), - // ))). - // Send() - //if err != nil { - // logger.Alert("config/xp_reduce.go - Sending modal to add/edit", err.Error()) - //} +func HandleXpRoleEdit( + session *discordgo.Session, + i *discordgo.InteractionCreate, + data interaction.MessageComponentData, + parameters []string, resp *cmd.ResponseBuilder, +) { + config := GetGuildConfig(i.GuildID) + id, err := getRoleLevelID(parameters) + if err != nil { + session.LogError(err, "Reading dynamic CustomID") + return + } + roleIndex := slices.IndexFunc(config.XpRoles, func(role XpRole) bool { return role.ID == id }) + if roleIndex == -1 { + return + } + role := config.XpRoles[roleIndex] + + roleSelect := &component.SelectMenu{ + MenuType: types.SelectMenuRole, + CustomID: fmt.Sprintf("xp_role_edit_role_%d", id), + DefaultValues: []component.SelectMenuDefaultValue{ + {ID: role.RoleID, Type: types.SelectMenuDefaultValueRole}, + }, + } + + container := &component.Container{ + Components: []component.Message{ + &component.TextDisplay{Content: "## Configuration / Rôles de niveaux"}, + &component.Separator{}, + &component.Section{ + Components: []component.Message{ + &component.TextDisplay{Content: fmt.Sprintf("Niveau **%d**", exp.Level(role.XP))}, + }, + Accessory: &component.Button{ + CustomID: fmt.Sprintf("xp_role_edit_level_start_%d", id), + Style: component.ButtonStyleSecondary, + Label: "Modifier", + }, + }, + &component.ActionsRow{Components: []component.Message{roleSelect}}, + &component.ActionsRow{Components: []component.Message{ + &component.Button{CustomID: fmt.Sprintf("xp_role_del_%d", id), Style: component.ButtonStyleDanger, Label: "Supprimer"}, + }}, + &component.Separator{}, + &component.ActionsRow{Components: []component.Message{ + &component.Button{Label: "Retour", CustomID: ModifyXpRole, Style: component.ButtonStyleSecondary}, + }}, + }, + } + + response := &interaction.Response{ + Type: types.InteractionResponseUpdateMessage, + Data: &interaction.ResponseData{ + Components: []component.Component{container}, + Flags: channel.MessageFlagsIsComponentsV2, + }, + } + + err = session.InteractionAPI().Respond(i.Interaction, response) + if err != nil { + session.LogError(err, "Sending xp_role config") + } } -func HandleXpRoleAddRole(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() +func HandleXpRoleEditRole( + session *discordgo.Session, + i *discordgo.InteractionCreate, + data interaction.MessageComponentData, + parameters []string, resp *cmd.ResponseBuilder, +) { + id, err := getRoleLevelID(parameters) + if err != nil { + session.LogError(err, "Reading dynamic CustomID") + return + } + role := data.Values[0] cfg := GetGuildConfig(i.GuildID) - roleId := data.Values[0] - for _, r := range cfg.XpRoles { - if r.RoleID == roleId { - err := resp.SetMessage("Le rôle est déjà présent dans la config").Send() + for _, xpRole := range cfg.XpRoles { + if xpRole.RoleID == role { + err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + Type: types.InteractionResponseChannelMessageWithSource, + Data: &interaction.ResponseData{ + Flags: channel.MessageFlagsEphemeral, + AllowedMentions: &channel.MessageAllowedMentions{}, + Content: fmt.Sprintf("Un autre niveau avec le rôle <@&%s> est déjà existant.", role), + }, + }) if err != nil { - s.LogError(err, "sending role already in config") + session.LogError(err, "Sending unable to Already existing role message") } return } } - cfg.XpRoles = append(cfg.XpRoles, XpRole{ - XP: configModifyMap[getKeyConfigRole(i)], - RoleID: roleId, - }) - err := cfg.Save() - if err != nil { - s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + index, xprole := cfg.FindXpRoleID(id) + if index == 0 { + err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + Type: types.InteractionResponseChannelMessageWithSource, + Data: &interaction.ResponseData{ + Flags: channel.MessageFlagsEphemeral, + Content: "Impossible de modifier le rôle. Peut-être a-t-il été supprimé ?", + }, + }) + if err != nil { + session.LogError(err, "Sending unable to get role message") + } return } - if err = resp.SetMessage("Rôle ajouté.").Send(); err != nil { - s.LogError(err, "Sending role saved") + xprole.RoleID = role + err = gokord.DB.Save(xprole).Error + if err != nil { + session.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) } + HandleXpRoleEdit(session, i, interaction.MessageComponentData{}, parameters, resp) } -func HandleXpRoleEditRole(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() +func HandleXpRoleEditLevelStart( + session *discordgo.Session, + i *discordgo.InteractionCreate, + data interaction.MessageComponentData, + parameters []string, + resp *cmd.ResponseBuilder, +) { + id, err := getRoleLevelID(parameters) + if err != nil { + session.LogError(err, "Reading dynamic CustomID") + return + } cfg := GetGuildConfig(i.GuildID) - roleId := data.Values[0] - _, r := cfg.FindXpRole(roleId) - if r == nil { - err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send() + _, role := cfg.FindXpRoleID(id) + if role == nil { + err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + Type: types.InteractionResponseChannelMessageWithSource, + Data: &interaction.ResponseData{ + Flags: channel.MessageFlagsEphemeral, + Content: "Impossible de trouver le rôle. Peut-être a-t-il été supprimé ?", + }, + }) if err != nil { - s.LogError(err, "role not found") + session.LogError(err, "Sending Unable to get role message") } return } - r.XP = configModifyMap[getKeyConfigRole(i)] - err := gokord.DB.Save(r).Error + response := &interaction.Response{ + Type: types.InteractionResponseModal, + Data: &interaction.ResponseData{ + Title: "Modification du niveau lié au rôle", + CustomID: fmt.Sprintf("xp_role_edit_level_%d", id), + Components: []component.Component{ + &component.Label{ + Label: "Nouveau niveau", + Component: &component.TextInput{ + Style: component.TextInputShort, + Required: true, + CustomID: "level", + MinLength: 1, + MaxLength: 5, + Placeholder: "5", + Value: strconv.FormatUint(uint64(exp.Level(role.XP)), 10), + }, + }, + }, + }, + } + err = session.InteractionAPI().Respond(i.Interaction, response) + if err != nil { + session.LogError(err, "Sending Edit level modal") + } +} + +func HandleXpRoleEditLevel( + session *discordgo.Session, + i *discordgo.InteractionCreate, + data interaction.ModalSubmitData, + parameters []string, + resp *cmd.ResponseBuilder, +) { + id, err := getRoleLevelID(parameters) if err != nil { - s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + session.LogError(err, "Reading dynamic CustomID") return } - if err = resp.SetMessage("Rôle modifié.").Send(); err != nil { - s.LogError(err, "sending role saved") + + fmt.Printf("Alors?... %#v", data.Components) + levelInput := data.Components[0].(*component.Label).Component.(*component.TextInput) + level, err := strconv.Atoi(levelInput.Value) + if err != nil || level < 0 { + err = resp.IsEphemeral(). + SetMessage( + fmt.Sprintf("Le niveau doit être un nombre entier positif.\n-# Trouvé : %s", levelInput.Value), + ). + Send() + if err != nil { + session.LogError(err, "Sending bad number warning message") + } + return } -} + xp := exp.LevelXP(uint(level)) -func HandleXpRoleDel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - //err := resp.IsEphemeral(). - // SetMessage("Rôle à supprimer"). - // SetComponents(component.New().Add(component.NewActionRow().Add(component.NewRoleSelect(XpRoleDelRole)))). - // Send() - //if err != nil { - // logger.Alert("config/xp_reduce.go - Sending response to del", err.Error()) - //} + cfg := GetGuildConfig(i.GuildID) + for _, xpRole := range cfg.XpRoles { + if xpRole.XP == xp { + err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + Type: types.InteractionResponseChannelMessageWithSource, + Data: &interaction.ResponseData{ + Flags: channel.MessageFlagsEphemeral, + Content: fmt.Sprintf("Un autre rôle est déjà lié au niveau %d.", level), + }, + }) + if err != nil { + session.LogError(err, "Sending unable to Already existing level message") + } + return + } + } + index, xprole := cfg.FindXpRoleID(id) + if index == -1 { + err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + Type: types.InteractionResponseChannelMessageWithSource, + Data: &interaction.ResponseData{ + Flags: channel.MessageFlagsEphemeral, + Content: "Impossible de modifier le rôle. Peut-être a-t-il été supprimé ?", + }, + }) + if err != nil { + session.LogError(err, "Sending unable to modify role message") + } + return + } + xprole.XP = xp + err = gokord.DB.Save(xprole).Error + if err != nil { + session.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) + } + HandleXpRoleEdit(session, i, interaction.MessageComponentData{}, parameters, resp) } -func HandleXpRoleDelRole(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() +func HandleXpRoleDel( + session *discordgo.Session, + i *discordgo.InteractionCreate, + _ interaction.MessageComponentData, + dynamic_values []string, + resp *cmd.ResponseBuilder, +) { + id, err := getRoleLevelID(dynamic_values) + if err != nil { + session.LogError(err, "reading dynamic CustomID") + return + } cfg := GetGuildConfig(i.GuildID) - roleId := data.Values[0] - _, r := cfg.FindXpRole(roleId) - if r == nil { - err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send() + _, role := cfg.FindXpRoleID(id) + if role == nil { + err := session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + Type: types.InteractionResponseChannelMessageWithSource, + Data: &interaction.ResponseData{ + Content: "Rôle introuvable. Peut-être a-t-il déjà été supprimé ?", + Flags: channel.MessageFlagsEphemeral, + }, + }) if err != nil { - s.LogError(err, "sending role not found") + session.LogError(err, "Sending role not found message") } return } - err := gokord.DB.Delete(r).Error + err = gokord.DB.Delete(role).Error if err != nil { - s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + session.LogError(err, "Deleting entry guild_id %s, id %d, type del", i.GuildID, id) + } + + HandleXpRole(session, i, interaction.MessageComponentData{}, resp) +} + +func HandleXpRoleAdd( + session *discordgo.Session, + i *discordgo.InteractionCreate, + data interaction.ModalSubmitData, + resp *cmd.ResponseBuilder, +) { + levelInput := data.Components[0].(*component.Label).Component.(*component.TextInput) + + in, err := strconv.Atoi(levelInput.Value) + if err != nil || in < 0 { + err = resp.IsEphemeral(). + SetMessage( + fmt.Sprintf("Le niveau doit être un nombre entier positif.\n-# Trouvé : %s", levelInput.Value), + ). + Send() + if err != nil { + session.LogError(err, "sending bad number warning message") + } return } - if err = resp.SetMessage("Rôle supprimé.").Send(); err != nil { - s.LogError(err, "sending role deleted") + xp := exp.LevelXP(uint(in)) + + roleId := data.Components[1].(*component.Label).Component.(*component.SelectMenu).Values[0] + + cfg := GetGuildConfig(i.GuildID) + for _, r := range cfg.XpRoles { + if r.RoleID == roleId { + err := resp.IsEphemeral().SetMessage(fmt.Sprintf("Le rôle <@&%s> est déjà lié au niveau %d.", r.RoleID, exp.Level(r.XP))).Send() + if err != nil { + session.LogError(err, "sending role already in config") + } + return + } else if r.XP == xp { + err := resp.IsEphemeral().SetMessage(fmt.Sprintf("Le niveau %d est déjà lié au rôle <@&%s>.", in, r.RoleID)).Send() + if err != nil { + session.LogError(err, "sending role already in config") + } + return + } + } + cfg.XpRoles = append(cfg.XpRoles, XpRole{ + XP: xp, + RoleID: roleId, + }) + err = cfg.Save() + if err != nil { + session.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + return } -} -func HandleXpRoleLevel(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.ModalSubmitData, resp *cmd.ResponseBuilder) { - //resp.IsEphemeral() - //input := data.Components[0].(*discordgo.ActionsRow).Components[0].(*discordgo.TextInput) - // - //k := getKeyConfigRole(i) - //in, err := strconv.Atoi(input.Value) - //if err != nil || in < 0 { - // if err = resp. - // SetMessage("Impossible de lire le nombre. Il doit s'agit d'un nombre entier positif."). - // Send(); err != nil { - // logger.Alert("command/config.go - Sending bad number", err.Error()) - // } - // return - //} - //configModifyMap[k] = exp.LevelXP(uint(in)) - //go func(i *discordgo.InteractionCreate, k string) { - // time.Sleep(5 * time.Minute) - // delete(configModifyMap, k) - //}(i, k) - // - //cID := XpRoleAddRole - //resp.SetMessage("Rôle à ajouter") - //if data.CustomID == XpRoleEditLevel { - // cID = XpRoleEditRole - // resp.SetMessage("Rôle à modifier") - //} - // - //err = resp. - // SetComponents(component.New().Add(component.NewActionRow().Add(component.NewRoleSelect(cID)))). - // Send() - //if err != nil { - // logger.Alert("config/xp_reduce.go - Sending response to add/edit", err.Error()) - //} + HandleXpRole(session, i, interaction.MessageComponentData{}, resp) } -func getKeyConfigRole(i *discordgo.InteractionCreate) string { - return fmt.Sprintf("r:%s:%s", i.GuildID, i.Member.User.ID) +func getRoleLevelID(dynamic []string) (uint, error) { + id64, err := strconv.ParseUint(dynamic[0], 10, 0) + if err != nil { + return 0, err + } + + return uint(id64), nil } -- cgit v1.2.3 From 200b8f763947c251661397db0ca973d27a9a6816 Mon Sep 17 00:00:00 2001 From: ascpial Date: Mon, 15 Sep 2025 13:45:13 +0200 Subject: fix(config): some fixes --- config/xp_role.go | 61 +++++++------------------------------------------------ 1 file changed, 7 insertions(+), 54 deletions(-) (limited to 'config') diff --git a/config/xp_role.go b/config/xp_role.go index b35966f..8aae5a4 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -2,7 +2,6 @@ package config import ( "fmt" - "slices" "strconv" "git.anhgelus.world/anhgelus/les-copaings-bot/exp" @@ -145,11 +144,11 @@ func HandleXpRoleEdit( session.LogError(err, "Reading dynamic CustomID") return } - roleIndex := slices.IndexFunc(config.XpRoles, func(role XpRole) bool { return role.ID == id }) - if roleIndex == -1 { + _, role := config.FindXpRoleID(id) + if role == nil { + HandleXpRole(session, i, interaction.MessageComponentData{}, resp) return } - role := config.XpRoles[roleIndex] roleSelect := &component.SelectMenu{ MenuType: types.SelectMenuRole, @@ -211,24 +210,8 @@ func HandleXpRoleEditRole( } role := data.Values[0] cfg := GetGuildConfig(i.GuildID) - for _, xpRole := range cfg.XpRoles { - if xpRole.RoleID == role { - err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ - Type: types.InteractionResponseChannelMessageWithSource, - Data: &interaction.ResponseData{ - Flags: channel.MessageFlagsEphemeral, - AllowedMentions: &channel.MessageAllowedMentions{}, - Content: fmt.Sprintf("Un autre niveau avec le rôle <@&%s> est déjà existant.", role), - }, - }) - if err != nil { - session.LogError(err, "Sending unable to Already existing role message") - } - return - } - } - index, xprole := cfg.FindXpRoleID(id) - if index == 0 { + _, xprole := cfg.FindXpRoleID(id) + if xprole == nil { err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ Type: types.InteractionResponseChannelMessageWithSource, Data: &interaction.ResponseData{ @@ -333,23 +316,8 @@ func HandleXpRoleEditLevel( xp := exp.LevelXP(uint(level)) cfg := GetGuildConfig(i.GuildID) - for _, xpRole := range cfg.XpRoles { - if xpRole.XP == xp { - err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ - Type: types.InteractionResponseChannelMessageWithSource, - Data: &interaction.ResponseData{ - Flags: channel.MessageFlagsEphemeral, - Content: fmt.Sprintf("Un autre rôle est déjà lié au niveau %d.", level), - }, - }) - if err != nil { - session.LogError(err, "Sending unable to Already existing level message") - } - return - } - } - index, xprole := cfg.FindXpRoleID(id) - if index == -1 { + _, xprole := cfg.FindXpRoleID(id) + if xprole == nil { err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ Type: types.InteractionResponseChannelMessageWithSource, Data: &interaction.ResponseData{ @@ -430,21 +398,6 @@ func HandleXpRoleAdd( roleId := data.Components[1].(*component.Label).Component.(*component.SelectMenu).Values[0] cfg := GetGuildConfig(i.GuildID) - for _, r := range cfg.XpRoles { - if r.RoleID == roleId { - err := resp.IsEphemeral().SetMessage(fmt.Sprintf("Le rôle <@&%s> est déjà lié au niveau %d.", r.RoleID, exp.Level(r.XP))).Send() - if err != nil { - session.LogError(err, "sending role already in config") - } - return - } else if r.XP == xp { - err := resp.IsEphemeral().SetMessage(fmt.Sprintf("Le niveau %d est déjà lié au rôle <@&%s>.", in, r.RoleID)).Send() - if err != nil { - session.LogError(err, "sending role already in config") - } - return - } - } cfg.XpRoles = append(cfg.XpRoles, XpRole{ XP: xp, RoleID: roleId, -- cgit v1.2.3 From 9d1ea00a2f7436ddddfad6b739adc0f433ecf9cd Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 18 Sep 2025 19:25:06 +0200 Subject: build(gokord): upgrade to latest nightly --- config/xp_reduce.go | 2 +- config/xp_role.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'config') diff --git a/config/xp_reduce.go b/config/xp_reduce.go index 4bcdd1e..1afe8d7 100644 --- a/config/xp_reduce.go +++ b/config/xp_reduce.go @@ -24,7 +24,7 @@ func HandleModifyPeriodicReduce(_ *discordgo.Session, _ *discordgo.InteractionCr //} } -func HandleTimeReduceSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.ModalSubmitData, resp *cmd.ResponseBuilder) { +func HandleTimeReduceSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) { //resp.IsEphemeral() //v := data.Components[0].(*discordgo.ActionsRow).Components[0].(*discordgo.TextInput).Value //days, err := strconv.Atoi(v) diff --git a/config/xp_role.go b/config/xp_role.go index 8aae5a4..3ec8e3a 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -289,7 +289,7 @@ func HandleXpRoleEditLevelStart( func HandleXpRoleEditLevel( session *discordgo.Session, i *discordgo.InteractionCreate, - data interaction.ModalSubmitData, + data *interaction.ModalSubmitData, parameters []string, resp *cmd.ResponseBuilder, ) { @@ -376,7 +376,7 @@ func HandleXpRoleDel( func HandleXpRoleAdd( session *discordgo.Session, i *discordgo.InteractionCreate, - data interaction.ModalSubmitData, + data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder, ) { levelInput := data.Components[0].(*component.Label).Component.(*component.TextInput) -- cgit v1.2.3 From 398213f2088b775787d4c022b5704366fdfe1aa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Fri, 19 Sep 2025 18:42:07 +0200 Subject: build(gokord): bump to latest nightly --- config/channel.go | 12 ++++++------ config/xp_reduce.go | 4 ++-- config/xp_role.go | 32 ++++++++++++++++---------------- 3 files changed, 24 insertions(+), 24 deletions(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index 918af6d..e5fc81b 100644 --- a/config/channel.go +++ b/config/channel.go @@ -19,7 +19,7 @@ const ( DisChannelDelSet = "disabled_channel_del_set" ) -func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) { //err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow().Add( // component.NewChannelSelect(FallbackChannelSet).AddChannelType(discordgo.ChannelTypeGuildText), //))).Send() @@ -28,7 +28,7 @@ func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionC //} } -func HandleFallbackChannelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleFallbackChannelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) @@ -48,7 +48,7 @@ func HandleFallbackChannelSet(s *discordgo.Session, i *discordgo.InteractionCrea } } -func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) { //err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow(). // Add( // component.NewButton(DisChannelAdd, discordgo.PrimaryButton). @@ -66,7 +66,7 @@ func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate //} } -func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { //resp.IsEphemeral().SetMessage("Salon à désactiver...") //cID := DisChannelAddSet //if data.CustomID == DisChannelDel { @@ -79,7 +79,7 @@ func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data //} } -func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { //resp.IsEphemeral() //cfg := GetGuildConfig(i.GuildID) //id := data.Values[0] @@ -102,7 +102,7 @@ func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate //} } -func HandleDisChannelDelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleDisChannelDelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { resp.IsEphemeral() cfg := GetGuildConfig(i.GuildID) id := data.Values[0] diff --git a/config/xp_reduce.go b/config/xp_reduce.go index 1afe8d7..a61ef1a 100644 --- a/config/xp_reduce.go +++ b/config/xp_reduce.go @@ -11,7 +11,7 @@ const ( TimeReduceSet = "time_reduce_set" ) -func HandleModifyPeriodicReduce(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +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( @@ -24,7 +24,7 @@ func HandleModifyPeriodicReduce(_ *discordgo.Session, _ *discordgo.InteractionCr //} } -func HandleTimeReduceSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) { +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) diff --git a/config/xp_role.go b/config/xp_role.go index 3ec8e3a..72af42b 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -35,8 +35,8 @@ const ( func HandleXpRole( session *discordgo.Session, i *discordgo.InteractionCreate, - _ interaction.MessageComponentData, - resp *cmd.ResponseBuilder, + _ *interaction.MessageComponentData, + _ *cmd.ResponseBuilder, ) { cfg := GetGuildConfig(i.GuildID) container := component.Container{ @@ -93,8 +93,8 @@ func HandleXpRole( func HandleXpRoleNew( session *discordgo.Session, i *discordgo.InteractionCreate, - data interaction.MessageComponentData, - resp *cmd.ResponseBuilder, + _ *interaction.MessageComponentData, + _ *cmd.ResponseBuilder, ) { one := 1 response := &interaction.Response{ @@ -135,7 +135,7 @@ func HandleXpRoleNew( func HandleXpRoleEdit( session *discordgo.Session, i *discordgo.InteractionCreate, - data interaction.MessageComponentData, + _ *interaction.MessageComponentData, parameters []string, resp *cmd.ResponseBuilder, ) { config := GetGuildConfig(i.GuildID) @@ -146,7 +146,7 @@ func HandleXpRoleEdit( } _, role := config.FindXpRoleID(id) if role == nil { - HandleXpRole(session, i, interaction.MessageComponentData{}, resp) + HandleXpRole(session, i, &interaction.MessageComponentData{}, resp) return } @@ -200,7 +200,7 @@ func HandleXpRoleEdit( func HandleXpRoleEditRole( session *discordgo.Session, i *discordgo.InteractionCreate, - data interaction.MessageComponentData, + data *interaction.MessageComponentData, parameters []string, resp *cmd.ResponseBuilder, ) { id, err := getRoleLevelID(parameters) @@ -229,15 +229,15 @@ func HandleXpRoleEditRole( if err != nil { session.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) } - HandleXpRoleEdit(session, i, interaction.MessageComponentData{}, parameters, resp) + HandleXpRoleEdit(session, i, &interaction.MessageComponentData{}, parameters, resp) } func HandleXpRoleEditLevelStart( session *discordgo.Session, i *discordgo.InteractionCreate, - data interaction.MessageComponentData, + _ *interaction.MessageComponentData, parameters []string, - resp *cmd.ResponseBuilder, + _ *cmd.ResponseBuilder, ) { id, err := getRoleLevelID(parameters) if err != nil { @@ -335,17 +335,17 @@ func HandleXpRoleEditLevel( if err != nil { session.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) } - HandleXpRoleEdit(session, i, interaction.MessageComponentData{}, parameters, resp) + HandleXpRoleEdit(session, i, &interaction.MessageComponentData{}, parameters, resp) } func HandleXpRoleDel( session *discordgo.Session, i *discordgo.InteractionCreate, - _ interaction.MessageComponentData, - dynamic_values []string, + _ *interaction.MessageComponentData, + dynamicValues []string, resp *cmd.ResponseBuilder, ) { - id, err := getRoleLevelID(dynamic_values) + id, err := getRoleLevelID(dynamicValues) if err != nil { session.LogError(err, "reading dynamic CustomID") return @@ -370,7 +370,7 @@ func HandleXpRoleDel( session.LogError(err, "Deleting entry guild_id %s, id %d, type del", i.GuildID, id) } - HandleXpRole(session, i, interaction.MessageComponentData{}, resp) + HandleXpRole(session, i, &interaction.MessageComponentData{}, resp) } func HandleXpRoleAdd( @@ -408,7 +408,7 @@ func HandleXpRoleAdd( return } - HandleXpRole(session, i, interaction.MessageComponentData{}, resp) + HandleXpRole(session, i, &interaction.MessageComponentData{}, resp) } func getRoleLevelID(dynamic []string) (uint, error) { -- cgit v1.2.3 From c4a5e7db48edb5c69af8bec3e60e444951146d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Sat, 20 Sep 2025 16:35:47 +0200 Subject: build(gokord): bump to v0.12.0 --- config/channel.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index e5fc81b..c918810 100644 --- a/config/channel.go +++ b/config/channel.go @@ -116,7 +116,7 @@ func HandleDisChannelDelSet(s *discordgo.Session, i *discordgo.InteractionCreate cfg.DisabledChannels = strings.ReplaceAll(cfg.DisabledChannels, id+";", "") if err := cfg.Save(); err != nil { s.LogError(err, "saving config disable del") - if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil { + if err = resp.SetMessage("Il y a eu une erreur lors de la modification de la base de données.").Send(); err != nil { s.LogError(err, "sending error while saving config") } } -- cgit v1.2.3 From 8a7189c3835a431b7fc16b189162f6f343e80b84 Mon Sep 17 00:00:00 2001 From: ascpial Date: Sat, 20 Sep 2025 23:33:29 +0200 Subject: feat(config): finish upgrading config --- config/channel.go | 113 ++++++++-------------------------------------------- config/guild.go | 27 ++++++++++++- config/xp_reduce.go | 101 +++++++++++++++++++++++++++------------------- config/xp_role.go | 107 +++++++++++++++++++++++++------------------------ 4 files changed, 158 insertions(+), 190 deletions(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index c918810..8b45382 100644 --- a/config/channel.go +++ b/config/channel.go @@ -5,12 +5,13 @@ import ( "github.com/anhgelus/gokord/cmd" discordgo "github.com/nyttikord/gokord" + + // "github.com/nyttikord/gokord/component" "github.com/nyttikord/gokord/interaction" ) const ( ModifyFallbackChannel = "fallback_channel" - FallbackChannelSet = "fallback_channel_set" ModifyDisChannel = "disabled_channel" DisChannelAdd = "disabled_channel_add" @@ -19,108 +20,28 @@ const ( DisChannelDelSet = "disabled_channel_del_set" ) -func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) { - //err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow().Add( - // component.NewChannelSelect(FallbackChannelSet).AddChannelType(discordgo.ChannelTypeGuildText), - //))).Send() - //if err != nil { - // logger.Alert("config/channel.go - Sending channel list for fallback", err.Error()) - //} -} - -func HandleFallbackChannelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() - +func HandleModifyFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) bool { cfg := GetGuildConfig(i.GuildID) - channelID := data.Values[0] - + var channelID string + if len(data.Values) > 0 { + channelID = data.Values[0] + } cfg.FallbackChannel = channelID err := cfg.Save() if err != nil { - s.LogError(err, "saving fallback channel") - if err = resp.SetMessage("Erreur lors de la sauvegarde du salon").Send(); err != nil { - s.LogError(err, "sending error while saving channel") - } - return - } - if err = resp.SetMessage("Salon sauvegardé.").Send(); err != nil { - s.LogError(err, "sending channel saved") + s.LogError(err, "Saving fallback channel") + return false } + return true } -func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) { - //err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow(). - // Add( - // component.NewButton(DisChannelAdd, discordgo.PrimaryButton). - // SetLabel("Désactiver un salon"). - // SetEmoji(&discordgo.ComponentEmoji{Name: "⬇️"}), - // ). - // Add( - // component.NewButton(DisChannelDel, discordgo.DangerButton). - // SetLabel("Réactiver un salon"). - // SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}), - // ), - //)).Send() - //if err != nil { - // logger.Alert("config/channel.go - Sending action type", err.Error()) - //} -} - -func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - //resp.IsEphemeral().SetMessage("Salon à désactiver...") - //cID := DisChannelAddSet - //if data.CustomID == DisChannelDel { - // resp.SetMessage("Salon à réactiver...") - // cID = DisChannelDelSet - //} - //err := resp.SetComponents(component.New().Add(component.NewActionRow().Add(component.NewChannelSelect(cID)))).Send() - //if err != nil { - // logger.Alert("config/channel.go - Sending channel list for disable", err.Error()) - //} -} - -func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - //resp.IsEphemeral() - //cfg := GetGuildConfig(i.GuildID) - //id := data.Values[0] - //if strings.Contains(cfg.DisabledChannels, id) { - // err := resp.SetMessage("Le salon est déjà dans la liste des salons désactivés").Send() - // if err != nil { - // logger.Alert("commands/config.go - Channel already disabled", err.Error()) - // } - // return - //} - //cfg.DisabledChannels += id + ";" - //if err := cfg.Save(); err != nil { - // logger.Alert("commands/config.go - Saving config disable add", err.Error()) - // if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil { - // logger.Alert("config/channel.go - Sending error while saving config", err.Error()) - // } - //} - //if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil { - // logger.Alert("commands/config.go - Modification saved message disable add", err.Error()) - //} -} - -func HandleDisChannelDelSet(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { - resp.IsEphemeral() +func HandleModifyDisChannel(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) bool { cfg := GetGuildConfig(i.GuildID) - id := data.Values[0] - if !strings.Contains(cfg.DisabledChannels, id) { - err := resp.SetMessage("Le salon n'est pas désactivé").Send() - if err != nil { - s.LogError(err, "sending channel not disabled") - } - return - } - cfg.DisabledChannels = strings.ReplaceAll(cfg.DisabledChannels, id+";", "") - if err := cfg.Save(); err != nil { - s.LogError(err, "saving config disable del") - if err = resp.SetMessage("Il y a eu une erreur lors de la modification de la base de données.").Send(); err != nil { - s.LogError(err, "sending error while saving config") - } - } - if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil { - s.LogError(err, "modification saved message disable del") + cfg.DisabledChannels = strings.Join(data.Values, ";") + err := cfg.Save() + if err != nil { + s.LogError(err, "Unable to save disabled channel") + return false } + return true } diff --git a/config/guild.go b/config/guild.go index 6310fa4..8096096 100644 --- a/config/guild.go +++ b/config/guild.go @@ -4,6 +4,7 @@ import ( "strings" "github.com/anhgelus/gokord" + discordgo "github.com/nyttikord/gokord" ) type GuildConfig struct { @@ -31,8 +32,30 @@ func (cfg *GuildConfig) Save() error { return gokord.DB.Save(cfg).Error } -func (cfg *GuildConfig) IsDisabled(channelID string) bool { - return strings.Contains(cfg.DisabledChannels, channelID) +func (cfg *GuildConfig) IsDisabled(s *discordgo.Session, channelID string) bool { + ok := true + s.LogInfo("Configuration: %s", cfg.DisabledChannels) + s.LogInfo("Channel %s, ok %t", channelID, ok) + for channelID != "" && ok { + s.LogInfo("Channel %s, ok %t", channelID, ok) + ok = !strings.Contains(cfg.DisabledChannels, channelID) + c, err := s.State.Channel(channelID) + if err != nil { + s.LogError(err, "Unable to find channel %s in state", c) + c, err = s.ChannelAPI().Channel(channelID) + if err == nil { + s.State.ChannelAdd(c) + } else { + s.LogError(err, "Unable to fetch channel %s", s) + return false + } + } + if err != nil { + return false + } + channelID = c.ParentID + } + return !ok } func (cfg *GuildConfig) FindXpRole(roleID string) (int, *XpRole) { 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 } diff --git a/config/xp_role.go b/config/xp_role.go index 72af42b..8939dd6 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -2,6 +2,7 @@ package config import ( "fmt" + "sort" "strconv" "git.anhgelus.world/anhgelus/les-copaings-bot/exp" @@ -33,7 +34,7 @@ const ( ) func HandleXpRole( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder, @@ -42,9 +43,13 @@ func HandleXpRole( container := component.Container{ Components: []component.Message{ &component.TextDisplay{Content: "## Configuration / Rôles de niveaux"}, + &component.TextDisplay{Content: "Ces rôles seront donnés et retirés en fonction du niveau de chacun"}, &component.Separator{}, }, } + sort.Slice(cfg.XpRoles, func(i, j int) bool { + return cfg.XpRoles[i].XP > cfg.XpRoles[j].XP + }) for _, r := range cfg.XpRoles { container.Components = append(container.Components, &component.Section{ Components: []component.Message{ @@ -84,14 +89,14 @@ func HandleXpRole( Flags: channel.MessageFlagsIsComponentsV2, }, } - err := session.InteractionAPI().Respond(i.Interaction, response) + err := s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - session.LogError(err, "Sending config") + s.LogError(err, "Sending config") } } func HandleXpRoleNew( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder, @@ -126,14 +131,14 @@ func HandleXpRoleNew( }, }, } - err := session.InteractionAPI().Respond(i.Interaction, response) + err := s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - session.LogError(err, "Sending modal to add") + s.LogError(err, "Sending modal to add") } } func HandleXpRoleEdit( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, parameters []string, resp *cmd.ResponseBuilder, @@ -141,12 +146,12 @@ func HandleXpRoleEdit( config := GetGuildConfig(i.GuildID) id, err := getRoleLevelID(parameters) if err != nil { - session.LogError(err, "Reading dynamic CustomID") + s.LogError(err, "Reading dynamic CustomID") return } _, role := config.FindXpRoleID(id) if role == nil { - HandleXpRole(session, i, &interaction.MessageComponentData{}, resp) + HandleXpRole(s, i, &interaction.MessageComponentData{}, resp) return } @@ -191,28 +196,28 @@ func HandleXpRoleEdit( }, } - err = session.InteractionAPI().Respond(i.Interaction, response) + err = s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - session.LogError(err, "Sending xp_role config") + s.LogError(err, "Sending xp_role config") } } func HandleXpRoleEditRole( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, parameters []string, resp *cmd.ResponseBuilder, ) { id, err := getRoleLevelID(parameters) if err != nil { - session.LogError(err, "Reading dynamic CustomID") + s.LogError(err, "Reading dynamic CustomID") return } role := data.Values[0] cfg := GetGuildConfig(i.GuildID) - _, xprole := cfg.FindXpRoleID(id) - if xprole == nil { - err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + _, xpRole := cfg.FindXpRoleID(id) + if xpRole == nil { + err = s.InteractionAPI().Respond(i.Interaction, &interaction.Response{ Type: types.InteractionResponseChannelMessageWithSource, Data: &interaction.ResponseData{ Flags: channel.MessageFlagsEphemeral, @@ -220,20 +225,20 @@ func HandleXpRoleEditRole( }, }) if err != nil { - session.LogError(err, "Sending unable to get role message") + s.LogError(err, "Sending unable to get role message") } return } - xprole.RoleID = role - err = gokord.DB.Save(xprole).Error + xpRole.RoleID = role + err = gokord.DB.Save(xpRole).Error if err != nil { - session.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) + s.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) } - HandleXpRoleEdit(session, i, &interaction.MessageComponentData{}, parameters, resp) + HandleXpRoleEdit(s, i, &interaction.MessageComponentData{}, parameters, resp) } func HandleXpRoleEditLevelStart( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, parameters []string, @@ -241,13 +246,13 @@ func HandleXpRoleEditLevelStart( ) { id, err := getRoleLevelID(parameters) if err != nil { - session.LogError(err, "Reading dynamic CustomID") + s.LogError(err, "Reading dynamic CustomID") return } cfg := GetGuildConfig(i.GuildID) - _, role := cfg.FindXpRoleID(id) - if role == nil { - err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + _, xpRole := cfg.FindXpRoleID(id) + if xpRole == nil { + err = s.InteractionAPI().Respond(i.Interaction, &interaction.Response{ Type: types.InteractionResponseChannelMessageWithSource, Data: &interaction.ResponseData{ Flags: channel.MessageFlagsEphemeral, @@ -255,7 +260,7 @@ func HandleXpRoleEditLevelStart( }, }) if err != nil { - session.LogError(err, "Sending Unable to get role message") + s.LogError(err, "Sending Unable to get role message") } return } @@ -274,20 +279,20 @@ func HandleXpRoleEditLevelStart( MinLength: 1, MaxLength: 5, Placeholder: "5", - Value: strconv.FormatUint(uint64(exp.Level(role.XP)), 10), + Value: strconv.FormatUint(uint64(exp.Level(xpRole.XP)), 10), }, }, }, }, } - err = session.InteractionAPI().Respond(i.Interaction, response) + err = s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - session.LogError(err, "Sending Edit level modal") + s.LogError(err, "Sending Edit level modal") } } func HandleXpRoleEditLevel( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.ModalSubmitData, parameters []string, @@ -295,7 +300,7 @@ func HandleXpRoleEditLevel( ) { id, err := getRoleLevelID(parameters) if err != nil { - session.LogError(err, "Reading dynamic CustomID") + s.LogError(err, "Reading dynamic CustomID") return } @@ -309,16 +314,16 @@ func HandleXpRoleEditLevel( ). Send() if err != nil { - session.LogError(err, "Sending bad number warning message") + s.LogError(err, "Sending bad number warning message") } return } xp := exp.LevelXP(uint(level)) cfg := GetGuildConfig(i.GuildID) - _, xprole := cfg.FindXpRoleID(id) - if xprole == nil { - err = session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + _, xpRole := cfg.FindXpRoleID(id) + if xpRole == nil { + err = s.InteractionAPI().Respond(i.Interaction, &interaction.Response{ Type: types.InteractionResponseChannelMessageWithSource, Data: &interaction.ResponseData{ Flags: channel.MessageFlagsEphemeral, @@ -326,20 +331,20 @@ func HandleXpRoleEditLevel( }, }) if err != nil { - session.LogError(err, "Sending unable to modify role message") + s.LogError(err, "Sending unable to modify role message") } return } - xprole.XP = xp - err = gokord.DB.Save(xprole).Error + xpRole.XP = xp + err = gokord.DB.Save(xpRole).Error if err != nil { - session.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) + s.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) } - HandleXpRoleEdit(session, i, &interaction.MessageComponentData{}, parameters, resp) + HandleXpRoleEdit(s, i, &interaction.MessageComponentData{}, parameters, resp) } func HandleXpRoleDel( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, dynamicValues []string, @@ -347,13 +352,13 @@ func HandleXpRoleDel( ) { id, err := getRoleLevelID(dynamicValues) if err != nil { - session.LogError(err, "reading dynamic CustomID") + s.LogError(err, "reading dynamic CustomID") return } cfg := GetGuildConfig(i.GuildID) _, role := cfg.FindXpRoleID(id) if role == nil { - err := session.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{ Type: types.InteractionResponseChannelMessageWithSource, Data: &interaction.ResponseData{ Content: "Rôle introuvable. Peut-être a-t-il déjà été supprimé ?", @@ -361,20 +366,20 @@ func HandleXpRoleDel( }, }) if err != nil { - session.LogError(err, "Sending role not found message") + s.LogError(err, "Sending role not found message") } return } err = gokord.DB.Delete(role).Error if err != nil { - session.LogError(err, "Deleting entry guild_id %s, id %d, type del", i.GuildID, id) + s.LogError(err, "Deleting entry guild_id %s, id %d, type del", i.GuildID, id) } - HandleXpRole(session, i, &interaction.MessageComponentData{}, resp) + HandleXpRole(s, i, &interaction.MessageComponentData{}, resp) } func HandleXpRoleAdd( - session *discordgo.Session, + s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder, @@ -389,7 +394,7 @@ func HandleXpRoleAdd( ). Send() if err != nil { - session.LogError(err, "sending bad number warning message") + s.LogError(err, "sending bad number warning message") } return } @@ -404,11 +409,11 @@ func HandleXpRoleAdd( }) err = cfg.Save() if err != nil { - session.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) return } - HandleXpRole(session, i, &interaction.MessageComponentData{}, resp) + HandleXpRole(s, i, &interaction.MessageComponentData{}, resp) } func getRoleLevelID(dynamic []string) (uint, error) { -- cgit v1.2.3 From beaea94172f16c350515cb28941f3d5a2101b690 Mon Sep 17 00:00:00 2001 From: ascpial Date: Sun, 21 Sep 2025 00:18:15 +0200 Subject: perf(config): use more modern slices.SortFunc --- config/xp_role.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'config') diff --git a/config/xp_role.go b/config/xp_role.go index 8939dd6..d55e6d3 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -2,7 +2,7 @@ package config import ( "fmt" - "sort" + "slices" "strconv" "git.anhgelus.world/anhgelus/les-copaings-bot/exp" @@ -47,8 +47,8 @@ func HandleXpRole( &component.Separator{}, }, } - sort.Slice(cfg.XpRoles, func(i, j int) bool { - return cfg.XpRoles[i].XP > cfg.XpRoles[j].XP + slices.SortFunc(cfg.XpRoles, func(xp1, xp2 XpRole) int { + return int(xp2.XP) - int(xp1.XP) }) for _, r := range cfg.XpRoles { container.Components = append(container.Components, &component.Section{ -- cgit v1.2.3 From 30f110d8d49cd1174882c58916147f52e09dd51e Mon Sep 17 00:00:00 2001 From: ascpial Date: Sun, 21 Sep 2025 23:34:31 +0200 Subject: fix(config): forgot some things --- config/channel.go | 1 - config/guild.go | 3 --- 2 files changed, 4 deletions(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index 8b45382..723ec38 100644 --- a/config/channel.go +++ b/config/channel.go @@ -6,7 +6,6 @@ import ( "github.com/anhgelus/gokord/cmd" discordgo "github.com/nyttikord/gokord" - // "github.com/nyttikord/gokord/component" "github.com/nyttikord/gokord/interaction" ) diff --git a/config/guild.go b/config/guild.go index 8096096..9cdb7e4 100644 --- a/config/guild.go +++ b/config/guild.go @@ -34,10 +34,7 @@ func (cfg *GuildConfig) Save() error { func (cfg *GuildConfig) IsDisabled(s *discordgo.Session, channelID string) bool { ok := true - s.LogInfo("Configuration: %s", cfg.DisabledChannels) - s.LogInfo("Channel %s, ok %t", channelID, ok) for channelID != "" && ok { - s.LogInfo("Channel %s, ok %t", channelID, ok) ok = !strings.Contains(cfg.DisabledChannels, channelID) c, err := s.State.Channel(channelID) if err != nil { -- cgit v1.2.3 From b61a834b608df3d5e617912eefb28924ef3a46df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Fri, 26 Sep 2025 18:30:57 +0200 Subject: build(gokord): bump to latest nightly --- config/channel.go | 7 ++++--- config/guild.go | 15 +++++++++------ config/xp_reduce.go | 7 ++++--- config/xp_role.go | 35 ++++++++++++++++++----------------- 4 files changed, 35 insertions(+), 29 deletions(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index 723ec38..1ee6974 100644 --- a/config/channel.go +++ b/config/channel.go @@ -4,7 +4,8 @@ import ( "strings" "github.com/anhgelus/gokord/cmd" - discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/bot" + "github.com/nyttikord/gokord/event" "github.com/nyttikord/gokord/interaction" ) @@ -19,7 +20,7 @@ const ( DisChannelDelSet = "disabled_channel_del_set" ) -func HandleModifyFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) bool { +func HandleModifyFallbackChannel(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, _ *cmd.ResponseBuilder) bool { cfg := GetGuildConfig(i.GuildID) var channelID string if len(data.Values) > 0 { @@ -34,7 +35,7 @@ func HandleModifyFallbackChannel(s *discordgo.Session, i *discordgo.InteractionC return true } -func HandleModifyDisChannel(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) bool { +func HandleModifyDisChannel(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, _ *cmd.ResponseBuilder) bool { cfg := GetGuildConfig(i.GuildID) cfg.DisabledChannels = strings.Join(data.Values, ";") err := cfg.Save() diff --git a/config/guild.go b/config/guild.go index 9cdb7e4..10c64fd 100644 --- a/config/guild.go +++ b/config/guild.go @@ -4,7 +4,7 @@ import ( "strings" "github.com/anhgelus/gokord" - discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/bot" ) type GuildConfig struct { @@ -32,18 +32,21 @@ func (cfg *GuildConfig) Save() error { return gokord.DB.Save(cfg).Error } -func (cfg *GuildConfig) IsDisabled(s *discordgo.Session, channelID string) bool { +func (cfg *GuildConfig) IsDisabled(s bot.Session, channelID string) bool { ok := true for channelID != "" && ok { ok = !strings.Contains(cfg.DisabledChannels, channelID) - c, err := s.State.Channel(channelID) + c, err := s.ChannelAPI().State.Channel(channelID) if err != nil { - s.LogError(err, "Unable to find channel %s in state", c) + s.LogError(err, "unable to find channel %s in state", c) c, err = s.ChannelAPI().Channel(channelID) if err == nil { - s.State.ChannelAdd(c) + err = s.ChannelAPI().State.ChannelAdd(c) + if err != nil { + s.LogError(err, "unable to add channel %s to state", c) + } } else { - s.LogError(err, "Unable to fetch channel %s", s) + s.LogError(err, "unable to fetch channel %s", s) return false } } diff --git a/config/xp_reduce.go b/config/xp_reduce.go index bf04bf0..c3a3e10 100644 --- a/config/xp_reduce.go +++ b/config/xp_reduce.go @@ -5,9 +5,10 @@ import ( "strconv" "github.com/anhgelus/gokord/cmd" - discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/bot" "github.com/nyttikord/gokord/component" "github.com/nyttikord/gokord/discord/types" + "github.com/nyttikord/gokord/event" "github.com/nyttikord/gokord/interaction" ) @@ -16,7 +17,7 @@ const ( TimeReduceSet = "time_reduce_set" ) -func HandleModifyPeriodicReduceCommand(s *discordgo.Session, i *discordgo.InteractionCreate, _ *interaction.MessageComponentData, resp *cmd.ResponseBuilder) { +func HandleModifyPeriodicReduceCommand(s bot.Session, i *event.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) { cfg := GetGuildConfig(i.GuildID) response := interaction.Response{ Type: types.InteractionResponseModal, @@ -48,7 +49,7 @@ func HandleModifyPeriodicReduceCommand(s *discordgo.Session, i *discordgo.Intera } } -func HandleTimeReduceSet(s *discordgo.Session, i *discordgo.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) bool { +func HandleTimeReduceSet(s bot.Session, i *event.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 { diff --git a/config/xp_role.go b/config/xp_role.go index d55e6d3..42fe9f4 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -8,10 +8,11 @@ import ( "git.anhgelus.world/anhgelus/les-copaings-bot/exp" "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/cmd" - discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/bot" "github.com/nyttikord/gokord/channel" "github.com/nyttikord/gokord/component" "github.com/nyttikord/gokord/discord/types" + "github.com/nyttikord/gokord/event" "github.com/nyttikord/gokord/interaction" ) @@ -34,8 +35,8 @@ const ( ) func HandleXpRole( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder, ) { @@ -96,8 +97,8 @@ func HandleXpRole( } func HandleXpRoleNew( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder, ) { @@ -138,8 +139,8 @@ func HandleXpRoleNew( } func HandleXpRoleEdit( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, _ *interaction.MessageComponentData, parameters []string, resp *cmd.ResponseBuilder, ) { @@ -203,8 +204,8 @@ func HandleXpRoleEdit( } func HandleXpRoleEditRole( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, data *interaction.MessageComponentData, parameters []string, resp *cmd.ResponseBuilder, ) { @@ -238,8 +239,8 @@ func HandleXpRoleEditRole( } func HandleXpRoleEditLevelStart( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, _ *interaction.MessageComponentData, parameters []string, _ *cmd.ResponseBuilder, @@ -292,8 +293,8 @@ func HandleXpRoleEditLevelStart( } func HandleXpRoleEditLevel( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, data *interaction.ModalSubmitData, parameters []string, resp *cmd.ResponseBuilder, @@ -344,8 +345,8 @@ func HandleXpRoleEditLevel( } func HandleXpRoleDel( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, _ *interaction.MessageComponentData, dynamicValues []string, resp *cmd.ResponseBuilder, @@ -379,8 +380,8 @@ func HandleXpRoleDel( } func HandleXpRoleAdd( - s *discordgo.Session, - i *discordgo.InteractionCreate, + s bot.Session, + i *event.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder, ) { -- cgit v1.2.3 From cfdba5f417bb31aac564d13becc09874f17d075d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Herg=C3=A8s?= Date: Sat, 27 Sep 2025 17:34:38 +0200 Subject: build(gokord): bump to latest nightly --- config/channel.go | 4 ++-- config/guild.go | 6 +++--- config/xp_reduce.go | 8 ++++---- config/xp_role.go | 40 ++++++++++++++++++++-------------------- 4 files changed, 29 insertions(+), 29 deletions(-) (limited to 'config') diff --git a/config/channel.go b/config/channel.go index 1ee6974..0c25b25 100644 --- a/config/channel.go +++ b/config/channel.go @@ -29,7 +29,7 @@ func HandleModifyFallbackChannel(s bot.Session, i *event.InteractionCreate, data cfg.FallbackChannel = channelID err := cfg.Save() if err != nil { - s.LogError(err, "Saving fallback channel") + s.Logger().Error("saving fallback channel", "error", err) return false } return true @@ -40,7 +40,7 @@ func HandleModifyDisChannel(s bot.Session, i *event.InteractionCreate, data *int cfg.DisabledChannels = strings.Join(data.Values, ";") err := cfg.Save() if err != nil { - s.LogError(err, "Unable to save disabled channel") + s.Logger().Error("unable to save disabled channel", "error", err) return false } return true diff --git a/config/guild.go b/config/guild.go index 10c64fd..e046ca7 100644 --- a/config/guild.go +++ b/config/guild.go @@ -38,15 +38,15 @@ func (cfg *GuildConfig) IsDisabled(s bot.Session, channelID string) bool { ok = !strings.Contains(cfg.DisabledChannels, channelID) c, err := s.ChannelAPI().State.Channel(channelID) if err != nil { - s.LogError(err, "unable to find channel %s in state", c) + s.Logger().Error("unable to find channel %s in state", "error", err, "channel", c) c, err = s.ChannelAPI().Channel(channelID) if err == nil { err = s.ChannelAPI().State.ChannelAdd(c) if err != nil { - s.LogError(err, "unable to add channel %s to state", c) + s.Logger().Error("unable to add channel to state", "error", err, "channel", c) } } else { - s.LogError(err, "unable to fetch channel %s", s) + s.Logger().Error("unable to fetch channel", "error", err, "channel", c) return false } } diff --git a/config/xp_reduce.go b/config/xp_reduce.go index c3a3e10..389043d 100644 --- a/config/xp_reduce.go +++ b/config/xp_reduce.go @@ -45,7 +45,7 @@ func HandleModifyPeriodicReduceCommand(s bot.Session, i *event.InteractionCreate } err := s.InteractionAPI().Respond(i.Interaction, &response) if err != nil { - s.LogError(err, "Sending xp reduce modal") + s.Logger().Error("sending xp reduce modal", "error", err) } } @@ -55,14 +55,14 @@ func HandleTimeReduceSet(s bot.Session, i *event.InteractionCreate, data *intera 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") + s.Logger().Error("sending bad input message", "error", err) } 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") + s.Logger().Error("sending less than 30 days message", "error", err) } return false } @@ -70,7 +70,7 @@ func HandleTimeReduceSet(s bot.Session, i *event.InteractionCreate, data *intera cfg.DaysXPRemains = uint(days) err = cfg.Save() if err != nil { - s.LogError(err, "Saving DaysXPRemains configuration") + s.Logger().Error("saving DaysXPRemains configuration", "error", err) return false } return true diff --git a/config/xp_role.go b/config/xp_role.go index 42fe9f4..f857289 100644 --- a/config/xp_role.go +++ b/config/xp_role.go @@ -92,7 +92,7 @@ func HandleXpRole( } err := s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - s.LogError(err, "Sending config") + s.Logger().Error("sending config", "error", err) } } @@ -134,7 +134,7 @@ func HandleXpRoleNew( } err := s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - s.LogError(err, "Sending modal to add") + s.Logger().Error("sending modal to add", "error", err) } } @@ -147,7 +147,7 @@ func HandleXpRoleEdit( config := GetGuildConfig(i.GuildID) id, err := getRoleLevelID(parameters) if err != nil { - s.LogError(err, "Reading dynamic CustomID") + s.Logger().Error("reading dynamic CustomID", "error", err) return } _, role := config.FindXpRoleID(id) @@ -199,7 +199,7 @@ func HandleXpRoleEdit( err = s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - s.LogError(err, "Sending xp_role config") + s.Logger().Error("sending xp_role config", "error", err) } } @@ -211,7 +211,7 @@ func HandleXpRoleEditRole( ) { id, err := getRoleLevelID(parameters) if err != nil { - s.LogError(err, "Reading dynamic CustomID") + s.Logger().Error("reading dynamic CustomID", "error", err) return } role := data.Values[0] @@ -226,14 +226,14 @@ func HandleXpRoleEditRole( }, }) if err != nil { - s.LogError(err, "Sending unable to get role message") + s.Logger().Error("sending unable to get role message", "error", err) } return } xpRole.RoleID = role err = gokord.DB.Save(xpRole).Error if err != nil { - s.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) + s.Logger().Error("saving config", "error", err, "guild", i.GuildID, "id", id, "type", "add") } HandleXpRoleEdit(s, i, &interaction.MessageComponentData{}, parameters, resp) } @@ -247,7 +247,7 @@ func HandleXpRoleEditLevelStart( ) { id, err := getRoleLevelID(parameters) if err != nil { - s.LogError(err, "Reading dynamic CustomID") + s.Logger().Error("reading dynamic CustomID", "error", err) return } cfg := GetGuildConfig(i.GuildID) @@ -261,7 +261,7 @@ func HandleXpRoleEditLevelStart( }, }) if err != nil { - s.LogError(err, "Sending Unable to get role message") + s.Logger().Error("sending unable to get role message", "error", err) } return } @@ -288,7 +288,7 @@ func HandleXpRoleEditLevelStart( } err = s.InteractionAPI().Respond(i.Interaction, response) if err != nil { - s.LogError(err, "Sending Edit level modal") + s.Logger().Error("sending edit level modal", "error", err) } } @@ -301,7 +301,7 @@ func HandleXpRoleEditLevel( ) { id, err := getRoleLevelID(parameters) if err != nil { - s.LogError(err, "Reading dynamic CustomID") + s.Logger().Error("reading dynamic CustomID", "error", err) return } @@ -315,7 +315,7 @@ func HandleXpRoleEditLevel( ). Send() if err != nil { - s.LogError(err, "Sending bad number warning message") + s.Logger().Error("sending bad number warning message", "error", err) } return } @@ -332,14 +332,14 @@ func HandleXpRoleEditLevel( }, }) if err != nil { - s.LogError(err, "Sending unable to modify role message") + s.Logger().Error("sending unable to modify role message", "error", err) } return } xpRole.XP = xp err = gokord.DB.Save(xpRole).Error if err != nil { - s.LogError(err, "Saving config guild_id %s, id %d, type add", i.GuildID, id) + s.Logger().Error("saving config", "guild", i.GuildID, "id", id, "type", "edit") } HandleXpRoleEdit(s, i, &interaction.MessageComponentData{}, parameters, resp) } @@ -353,13 +353,13 @@ func HandleXpRoleDel( ) { id, err := getRoleLevelID(dynamicValues) if err != nil { - s.LogError(err, "reading dynamic CustomID") + s.Logger().Error("reading dynamic CustomID", "error", err) return } cfg := GetGuildConfig(i.GuildID) _, role := cfg.FindXpRoleID(id) if role == nil { - err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{ + err = s.InteractionAPI().Respond(i.Interaction, &interaction.Response{ Type: types.InteractionResponseChannelMessageWithSource, Data: &interaction.ResponseData{ Content: "Rôle introuvable. Peut-être a-t-il déjà été supprimé ?", @@ -367,13 +367,13 @@ func HandleXpRoleDel( }, }) if err != nil { - s.LogError(err, "Sending role not found message") + s.Logger().Error("sending role not found message", "error", err) } return } err = gokord.DB.Delete(role).Error if err != nil { - s.LogError(err, "Deleting entry guild_id %s, id %d, type del", i.GuildID, id) + s.Logger().Error("deleting entry", "error", err, "guild", i.GuildID, "id", id, "type", "del") } HandleXpRole(s, i, &interaction.MessageComponentData{}, resp) @@ -395,7 +395,7 @@ func HandleXpRoleAdd( ). Send() if err != nil { - s.LogError(err, "sending bad number warning message") + s.Logger().Error("sending bad number warning message", "error", err) } return } @@ -410,7 +410,7 @@ func HandleXpRoleAdd( }) err = cfg.Save() if err != nil { - s.LogError(err, "saving config for role %s in %s", roleId, i.GuildID) + s.Logger().Error("saving config", "error", err, "role", roleId, "guild", i.GuildID) return } -- cgit v1.2.3