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 --- commands/config.go | 36 +---------- commands/rank.go | 4 +- commands/reset.go | 2 +- commands/stats.go | 9 +-- commands/top.go | 7 ++- config/channel.go | 116 +++++++++++++++++------------------ config/xp_reduce.go | 87 +++++++++++++------------- config/xp_role.go | 171 ++++++++++++++++++++++++++-------------------------- events.go | 4 +- go.mod | 6 +- go.sum | 6 ++ main.go | 19 +++--- user/level.go | 9 +-- user/xp.go | 3 +- 14 files changed, 226 insertions(+), 253 deletions(-) diff --git a/commands/config.go b/commands/config.go index c4644bc..838f7e9 100644 --- a/commands/config.go +++ b/commands/config.go @@ -7,7 +7,6 @@ import ( "git.anhgelus.world/anhgelus/les-copaings-bot/config" "git.anhgelus.world/anhgelus/les-copaings-bot/exp" "github.com/anhgelus/gokord/cmd" - "github.com/anhgelus/gokord/component" "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" ) @@ -50,14 +49,6 @@ func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMa defaultChan = fmt.Sprintf("<#%s>", cfg.FallbackChannel) } //comp := component.New(). - // Add(component.NewTextDisplay("# Config")). - // Add(component.NewTextDisplay("**Salon par défaut**\n" + defaultChan)). - // Add(component.NewSeparator()). - // Add(component.NewTextDisplay("**Rôles liés aux niveaux**\n" + roles)). - // Add(component.NewSeparator()). - // Add(component.NewTextDisplay("**Salons désactivés**\n" + chans)). - // Add(component.NewSeparator()). - // Add(component.NewTextDisplay(fmt.Sprintf("**%s**\n%d", "Jours avant la réduction", cfg.DaysXPRemains))). // Add(component.NewActionRow().Add(component.NewStringSelect(ConfigModify). // SetPlaceholder("Modifier..."). // AddOption( @@ -82,31 +73,6 @@ func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMa // SetEmoji(&discordgo.ComponentEmoji{Name: "⌛"}), // ), // )) - comp := component.New(). - Add(component.NewActionRow().Add(component.NewStringSelect(ConfigModify). - SetPlaceholder("Modifier..."). - AddOption( - component.NewSelectOption("Rôles liés à l'XP", config.ModifyXpRole). - SetDescription("Gère les rôles liés à l'XP"). - SetEmoji(&discordgo.ComponentEmoji{Name: "🏅"}), - ). - AddOption( - component.NewSelectOption("Salons désactivés", config.ModifyDisChannel). - SetDescription("Gère les salons désactivés"). - SetEmoji(&discordgo.ComponentEmoji{Name: "❌"}), - ). - AddOption( - // I don't have a better idea for this... - component.NewSelectOption("Salons par défaut", config.ModifyFallbackChannel). - SetDescription("Spécifie le salon par défaut"). - SetEmoji(&discordgo.ComponentEmoji{Name: "💾"}), - ). - AddOption( - component.NewSelectOption("Temps avec la réduction", config.ModifyTimeReduce). - SetDescription("Gère le temps avant la réduction d'XP"). - SetEmoji(&discordgo.ComponentEmoji{Name: "⌛"}), - ), - )) msg := fmt.Sprintf( "# Config\n**Salon par défaut**\n%s\n\n**Rôles liés aux niveaux**\n%s\n\n**Salons désactivés**\n%s\n\n**Jours avant la réduction**\n%d", defaultChan, @@ -114,7 +80,7 @@ func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMa chans, cfg.DaysXPRemains, ) - err := resp.SetComponents(comp).SetMessage(msg).IsEphemeral().Send() + err := resp.SetMessage(msg).IsEphemeral().Send() if err != nil { logger.Alert("config/guild.go - Sending config", err.Error()) } diff --git a/commands/rank.go b/commands/rank.go index 94dabf2..0adfde6 100644 --- a/commands/rank.go +++ b/commands/rank.go @@ -16,14 +16,14 @@ func Rank(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.Optio m := i.Member var err error if v, ok := optMap["copaing"]; ok { - u := v.UserValue(s) + u := v.UserValue(s.UserAPI()) if u.Bot { err = resp.SetMessage("Imagine si les bots avaient un niveau :rolling_eyes:").IsEphemeral().Send() if err != nil { logger.Alert("commands/rank.go - Reply error user is a bot", err.Error()) } } - m, err = s.GuildMember(i.GuildID, u.ID) + m, err = s.GuildAPI().Member(i.GuildID, u.ID) if err != nil { logger.Alert( "commands/rank.go - Fetching guild member", diff --git a/commands/reset.go b/commands/reset.go index 07e3ba3..f50bb21 100644 --- a/commands/reset.go +++ b/commands/reset.go @@ -25,7 +25,7 @@ func ResetUser(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd. } return } - m := v.UserValue(s) + m := v.UserValue(s.UserAPI()) if m.Bot { if err := resp.SetMessage("Les bots n'ont pas de niveau :upside_down:").Send(); err != nil { logger.Alert("commands/reset.go - Copaing not set", err.Error()) diff --git a/commands/stats.go b/commands/stats.go index 15fb556..1a7a379 100644 --- a/commands/stats.go +++ b/commands/stats.go @@ -18,6 +18,7 @@ import ( "github.com/anhgelus/gokord/logger" "github.com/jackc/pgx/v5/pgtype" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/channel" "gonum.org/v1/plot" "gonum.org/v1/plot/plotter" "gonum.org/v1/plot/vg" @@ -66,7 +67,7 @@ func Stats(s *discordgo.Session, i *discordgo.InteractionCreate, opt cmd.OptionM go func() { var w io.WriterTo if v, ok := opt["user"]; ok { - w, err = statsMember(s, i, days, v.UserValue(s).ID) + w, err = statsMember(s, i, days, v.UserValue(s.UserAPI()).ID) } else { w, err = statsAll(s, i, days) } @@ -81,7 +82,7 @@ func Stats(s *discordgo.Session, i *discordgo.InteractionCreate, opt cmd.OptionM if err != nil { logger.Alert("commands/stats.go - Writing png", err.Error()) } - err = resp.AddFile(&discordgo.File{ + err = resp.AddFile(&channel.File{ Name: "plot.png", ContentType: "image/png", Reader: b, @@ -99,7 +100,7 @@ func statsAll(s *discordgo.Session, i *discordgo.InteractionCreate, days int) (i } func statsMember(s *discordgo.Session, i *discordgo.InteractionCreate, days int, discordID string) (io.WriterTo, error) { - _, err := s.GuildMember(i.GuildID, discordID) + _, err := s.GuildAPI().Member(i.GuildID, discordID) if err != nil { return nil, err } @@ -199,7 +200,7 @@ func generatePlot(s *discordgo.Session, i *discordgo.InteractionCreate, copaings cnt := 0 for in, c := range copaings { - m, err := s.GuildMember(i.GuildID, c.DiscordID) + m, err := s.GuildAPI().Member(i.GuildID, c.DiscordID) if err != nil { logger.Alert("commands/stats.go - Fetching guild member", err.Error()) return nil, err diff --git a/commands/top.go b/commands/top.go index ecbf6f4..21a1456 100644 --- a/commands/top.go +++ b/commands/top.go @@ -10,6 +10,7 @@ import ( "github.com/anhgelus/gokord/cmd" "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/channel" ) func Top(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) { @@ -18,7 +19,7 @@ func Top(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, logger.Alert("commands/top.go - Sending deferred", err.Error()) return } - embeds := make([]*discordgo.MessageEmbed, 3) + embeds := make([]*channel.MessageEmbed, 3) wg := sync.WaitGroup{} fn := func(s string, n uint, d int, id int) { @@ -26,14 +27,14 @@ func Top(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, tops, err := user.GetBestXP(i.GuildID, n, d) if err != nil { logger.Alert("commands/top.go - Fetching best xp", err.Error(), "n", n, "d", d, "id", id, "guild_id", i.GuildID) - embeds[id] = &discordgo.MessageEmbed{ + embeds[id] = &channel.MessageEmbed{ Title: s, Description: "Erreur : impossible de récupérer la liste", Color: 0x831010, } return } - embeds[id] = &discordgo.MessageEmbed{ + embeds[id] = &channel.MessageEmbed{ Title: s, Description: genTopsMessage(tops), Color: 0x10E6AD, 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 { diff --git a/events.go b/events.go index abf9d03..cae0ef3 100644 --- a/events.go +++ b/events.go @@ -38,7 +38,7 @@ func OnMessage(s *discordgo.Session, m *discordgo.MessageCreate) { m.Member.GuildID = m.GuildID xp := min(exp.MessageXP(uint(len(trimmed)), exp.CalcDiversity(trimmed)), MaxXpPerMessage) c.AddXP(s, m.Member, xp, func(_ uint, _ uint) { - if err := s.MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil { + if err := s.ChannelAPI().MessageReactionAdd(m.ChannelID, m.Message.ID, "⬆"); err != nil { logger.Alert( "events.go - add reaction for new level", err.Error(), "channel id", m.ChannelID, @@ -108,7 +108,7 @@ func onDisconnect(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { if len(cfg.FallbackChannel) == 0 { return } - _, err := s.ChannelMessageSend(cfg.FallbackChannel, fmt.Sprintf( + _, err := s.ChannelAPI().MessageSend(cfg.FallbackChannel, fmt.Sprintf( "%s est maintenant niveau %d", e.Member.Mention(), newLevel, )) if err != nil { diff --git a/go.mod b/go.mod index c46a307..ea40184 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,12 @@ go 1.24.0 toolchain go1.24.6 require ( - github.com/anhgelus/gokord v0.11.1-0.20250911112818-b436d35950ae + github.com/anhgelus/gokord v0.11.1-0.20250913111909-19135e5d37be github.com/joho/godotenv v1.5.1 - github.com/nyttikord/gokord v0.30.0 + github.com/nyttikord/gokord v0.30.1-0.20250913111646-475b917cccfb github.com/pelletier/go-toml/v2 v2.2.4 gorm.io/driver/postgres v1.6.0 - gorm.io/gorm v1.30.5 + gorm.io/gorm v1.31.0 ) require ( diff --git a/go.sum b/go.sum index 2c43204..f4ede94 100644 --- a/go.sum +++ b/go.sum @@ -33,6 +33,8 @@ github.com/anhgelus/gokord v0.11.1-0.20250904142107-2d0e3c982bc3 h1:j7Im8+Vd7BIh github.com/anhgelus/gokord v0.11.1-0.20250904142107-2d0e3c982bc3/go.mod h1:Tw1djmUOTFCIRhEUI7eG2onnreJbVGA40EWYQgj20bE= github.com/anhgelus/gokord v0.11.1-0.20250911112818-b436d35950ae h1:7UFLx1EybWFZ5wW+x2PLZyJqwSjiO7kLMIaisX4pUxk= github.com/anhgelus/gokord v0.11.1-0.20250911112818-b436d35950ae/go.mod h1:Tw1djmUOTFCIRhEUI7eG2onnreJbVGA40EWYQgj20bE= +github.com/anhgelus/gokord v0.11.1-0.20250913111909-19135e5d37be h1:D7bFu20Qr2P+hLgv/bWVhscuQ2tt0y0km8fTVZ5ThmY= +github.com/anhgelus/gokord v0.11.1-0.20250913111909-19135e5d37be/go.mod h1:J/Ja3EIKFOxxy5lx09kjsxyrwv4ardc015cMtmM8XPg= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= @@ -70,6 +72,8 @@ github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwA github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/nyttikord/gokord v0.30.0 h1:O4LhpCMyfWcgLqziPXQgMCopb9VO7kwcZG3phblOaTA= github.com/nyttikord/gokord v0.30.0/go.mod h1:Lhk268VlZ1W6Pb3kYnlU9bIuTCioaumedjHdtw1sxck= +github.com/nyttikord/gokord v0.30.1-0.20250913111646-475b917cccfb h1:HUL4CikIHguqjKrAqzXYghkzlaZi8+54BBObxBUgeos= +github.com/nyttikord/gokord v0.30.1-0.20250913111646-475b917cccfb/go.mod h1:Lhk268VlZ1W6Pb3kYnlU9bIuTCioaumedjHdtw1sxck= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -153,4 +157,6 @@ gorm.io/gorm v1.30.3 h1:QiG8upl0Sg9ba2Zatfjy0fy4It2iNBL2/eMdvEkdXNs= gorm.io/gorm v1.30.3/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gorm.io/gorm v1.30.5 h1:dvEfYwxL+i+xgCNSGGBT1lDjCzfELK8fHZxL3Ee9X0s= gorm.io/gorm v1.30.5/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +gorm.io/gorm v1.31.0 h1:0VlycGreVhK7RF/Bwt51Fk8v0xLiiiFdbGDPIZQ7mJY= +gorm.io/gorm v1.31.0/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= diff --git a/main.go b/main.go index 3d32389..7db4893 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,9 @@ import ( "github.com/anhgelus/gokord/logger" "github.com/joho/godotenv" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/discord" + "github.com/nyttikord/gokord/discord/types" + "github.com/nyttikord/gokord/interaction" "golang.org/x/image/font/opentype" "gonum.org/v1/plot" "gonum.org/v1/plot/font" @@ -77,7 +80,7 @@ func main() { rankCmd := cmd.New("rank", "Affiche le niveau d'un copaing"). AddOption(cmd.NewOption( - discordgo.ApplicationCommandOptionUser, + types.CommandOptionUser, "copaing", "Le niveau du Copaing que vous souhaitez obtenir", )). @@ -96,7 +99,7 @@ func main() { resetUserCmd := cmd.New("reset-user", "Reset l'xp d'un utilisation"). AddOption(cmd.NewOption( - discordgo.ApplicationCommandOptionUser, + types.CommandOptionUser, "user", "Copaing a reset", ).IsRequired()). @@ -108,12 +111,12 @@ func main() { statsCmd := cmd.New("stats", "Affiche des stats :D"). AddOption(cmd.NewOption( - discordgo.ApplicationCommandOptionInteger, + types.CommandOptionInteger, "days", "Nombre de jours à afficher dans le graphique", )). AddOption(cmd.NewOption( - discordgo.ApplicationCommandOptionUser, + types.CommandOptionUser, "user", "Utilisateur à inspecter", )). @@ -168,13 +171,13 @@ func main() { }, Innovations: innovations, Version: &Version, - Intents: discordgo.IntentsAllWithoutPrivileged | - discordgo.IntentsMessageContent | - discordgo.IntentGuildMembers, + Intents: discord.IntentsAllWithoutPrivileged | + discord.IntentsMessageContent | + discord.IntentGuildMembers, } // interaction: /config - bot.HandleMessageComponent(func(s *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { + bot.HandleMessageComponent(func(s *discordgo.Session, i *discordgo.InteractionCreate, data interaction.MessageComponentData, resp *cmd.ResponseBuilder) { if len(data.Values) != 1 { logger.Alert("main.go - Handle config modify", "invalid data values", "values", data.Values) return diff --git a/user/level.go b/user/level.go index cf4d99b..6f92ce7 100644 --- a/user/level.go +++ b/user/level.go @@ -10,9 +10,10 @@ import ( "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/user" ) -func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) { +func onNewLevel(dg *discordgo.Session, m *user.Member, level uint) { cfg := config.GetGuildConfig(m.GuildID) xpForLevel := exp.LevelXP(level) for _, role := range cfg.XpRoles { @@ -23,7 +24,7 @@ func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) { "user_id", m.User.ID, "guild_id", m.GuildID, ) - err := dg.GuildMemberRoleAdd(m.GuildID, m.User.ID, role.RoleID) + err := dg.GuildAPI().MemberRoleAdd(m.GuildID, m.User.ID, role.RoleID) if err != nil { logger.Alert("user/level.go - Adding role", err.Error(), "role_id", role.RoleID) } @@ -34,7 +35,7 @@ func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) { "user_id", m.User.ID, "guild_id", m.GuildID, ) - err := dg.GuildMemberRoleRemove(m.GuildID, m.User.ID, role.RoleID) + err := dg.GuildAPI().MemberRoleRemove(m.GuildID, m.User.ID, role.RoleID) if err != nil { logger.Alert("user/level.go - Removing role", err.Error(), "role_id", role.RoleID) } @@ -43,7 +44,7 @@ func onNewLevel(dg *discordgo.Session, m *discordgo.Member, level uint) { } func (c *Copaing) OnNewLevel(dg *discordgo.Session, level uint) { - m, err := dg.GuildMember(c.GuildID, c.DiscordID) + m, err := dg.GuildAPI().Member(c.GuildID, c.DiscordID) if err != nil { logger.Alert( "user/level.go - Getting member for new level", err.Error(), diff --git a/user/xp.go b/user/xp.go index 45080ea..550f3bf 100644 --- a/user/xp.go +++ b/user/xp.go @@ -9,6 +9,7 @@ import ( "github.com/anhgelus/gokord" "github.com/anhgelus/gokord/logger" discordgo "github.com/nyttikord/gokord" + "github.com/nyttikord/gokord/user" ) type cXP struct { @@ -24,7 +25,7 @@ func (c *cXP) GetXP() uint { return c.Cxp } -func (c *Copaing) AddXP(s *discordgo.Session, m *discordgo.Member, xp uint, fn func(uint, uint)) { +func (c *Copaing) AddXP(s *discordgo.Session, m *user.Member, xp uint, fn func(uint, uint)) { old, err := c.GetXP() if err != nil { logger.Alert("user/xp.go - Getting xp", err.Error(), "discord_id", c.DiscordID, "guild_id", c.GuildID) -- cgit v1.2.3