diff --git a/commands/rank.go b/commands/rank.go index cd37a0c..ecf9a08 100644 --- a/commands/rank.go +++ b/commands/rank.go @@ -9,7 +9,8 @@ import ( func Rank(s *discordgo.Session, i *discordgo.InteractionCreate) { optMap := utils.GenerateOptionMap(i) - c := xp.Copaing{DiscordID: i.Member.User.ID, GuildID: i.GuildID} + c := xp.GetCopaing(i.User.ID, i.GuildID) // current copaing = member who used /rank + xp.LastEventUpdate(c) // update xp and reset last event msg := "Votre niveau" m := i.Member var err error @@ -24,17 +25,25 @@ func Rank(s *discordgo.Session, i *discordgo.InteractionCreate) { } m, err = s.GuildMember(i.GuildID, u.ID) if err != nil { - utils.SendAlert("rank.go - Fetching guild member", err.Error()) + utils.SendAlert( + "rank.go - Fetching guild member", + err.Error(), + "discord_id", + u.ID, + "guild_id", + i.GuildID, + ) err = resp.Message("Erreur : impossible de récupérer le membre").IsEphemeral().Send() if err != nil { utils.SendAlert("rank.go - Reply error fetching guild member", err.Error()) } return } - c.DiscordID = u.ID + c.DiscordID = u.ID // current copaing = member targeted by member who wrote /rank + c.Load() // reload copaing (change line before) + xp.XPUpdate(c) // update xp without resetting event msg = fmt.Sprintf("Le niveau de %s", m.DisplayName()) } - c.Load() lvl := xp.Level(c.XP) nxtLvl := xp.XPForLevel(lvl + 1) err = resp.Message(fmt.Sprintf( diff --git a/commands/top.go b/commands/top.go index bc444a3..6df259f 100644 --- a/commands/top.go +++ b/commands/top.go @@ -9,6 +9,7 @@ import ( ) func Top(s *discordgo.Session, i *discordgo.InteractionCreate) { + xp.LastEventUpdate(xp.GetCopaing(i.User.ID, i.GuildID)) resp := utils.ResponseBuilder{C: s, I: i} err := resp.IsDeferred().Send() if err != nil { diff --git a/xp/events.go b/xp/events.go index c3b843c..655e9fd 100644 --- a/xp/events.go +++ b/xp/events.go @@ -30,7 +30,7 @@ func OnMessage(s *discordgo.Session, m *discordgo.MessageCreate) { return } c := GetCopaing(m.Author.ID, m.GuildID) - onLastEventUpdate(c) + LastEventUpdate(c) // add xp trimmed := utils.TrimMessage(strings.ToLower(m.Content)) m.Member.User = m.Author @@ -63,7 +63,7 @@ func OnVoiceUpdate(s *discordgo.Session, e *discordgo.VoiceStateUpdate) { if e.Member.User.Bot { return } - onLastEventUpdate(GetCopaing(e.UserID, e.GuildID)) + LastEventUpdate(GetCopaing(e.UserID, e.GuildID)) cfg := config.GetGuildConfig(e.GuildID) if cfg.IsDisabled(e.ChannelID) { return diff --git a/xp/level.go b/xp/level.go index 14d0e95..b179cdb 100644 --- a/xp/level.go +++ b/xp/level.go @@ -43,7 +43,7 @@ func onNewLevel(s *discordgo.Session, m *discordgo.Member, level uint) { } } -func onLastEventUpdate(c *Copaing) { +func LastEventUpdate(c *Copaing) { h := c.HourSinceLastEvent() l := Lose(h, c.XP) xp := c.XPAlreadyRemoved() @@ -57,7 +57,7 @@ func onLastEventUpdate(c *Copaing) { c.SetLastEvent() } -func onXPUpdate(c *Copaing) { +func XPUpdate(c *Copaing) { h := c.HourSinceLastEvent() l := Lose(h, c.XP) xp := c.XPAlreadyRemoved()