fix(config): a role can be present twice

This commit is contained in:
Anhgelus Morhtuuzh 2024-04-15 16:17:31 +02:00
parent bde93e6b80
commit fc151a9cee
No known key found for this signature in database
GPG key ID: CF4550297832A29F
2 changed files with 13 additions and 4 deletions

View file

@ -86,12 +86,21 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
// add or delete or edit // add or delete or edit
switch ts { switch ts {
case "add": case "add":
for _, r := range cfg.XpRoles {
if r.RoleID == role.ID {
err := resp.Message("Le rôle est déjà présent dans la config").Send()
if err != nil {
utils.SendAlert("commands/config.go - Role already in config", err.Error())
}
return
}
}
cfg.XpRoles = append(cfg.XpRoles, config.XpRole{ cfg.XpRoles = append(cfg.XpRoles, config.XpRole{
XP: exp, XP: exp,
RoleID: role.ID, RoleID: role.ID,
}) })
case "del": case "del":
_, r := cfg.FindXpRole(exp, role.ID) _, r := cfg.FindXpRole(role.ID)
if r == nil { if r == nil {
err := resp.Message("Le rôle n'a pas été trouvé dans la config.").Send() err := resp.Message("Le rôle n'a pas été trouvé dans la config.").Send()
if err != nil { if err != nil {
@ -101,7 +110,7 @@ func ConfigXP(s *discordgo.Session, i *discordgo.InteractionCreate) {
} }
gokord.DB.Delete(r) gokord.DB.Delete(r)
case "edit": case "edit":
pos, r := cfg.FindXpRole(exp, role.ID) pos, r := cfg.FindXpRole(role.ID)
if r == nil { if r == nil {
err := resp.Message("Le rôle n'a pas été trouvé dans la config.").Send() err := resp.Message("Le rôle n'a pas été trouvé dans la config.").Send()
if err != nil { if err != nil {

View file

@ -32,9 +32,9 @@ func (cfg *GuildConfig) Save() {
gokord.DB.Save(cfg) gokord.DB.Save(cfg)
} }
func (cfg *GuildConfig) FindXpRole(xp uint, roleID string) (int, *XpRole) { func (cfg *GuildConfig) FindXpRole(roleID string) (int, *XpRole) {
for i, r := range cfg.XpRoles { for i, r := range cfg.XpRoles {
if r.XP == xp && r.RoleID == roleID { if r.RoleID == roleID {
return i, &r return i, &r
} }
} }