From ec1657d398bd6e198acc74c752f833b0aba7fdf4 Mon Sep 17 00:00:00 2001 From: Luther Wen Xu Date: Sat, 4 Jan 2020 21:16:10 +0800 Subject: [PATCH] modules/commands+level: Prestiging now flushes level cache This allows newly prestiged users to get their roles back. --- modules/commands/prestige.go | 1 + modules/level/scheduler.go | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/commands/prestige.go b/modules/commands/prestige.go index 5790357..96013dc 100644 --- a/modules/commands/prestige.go +++ b/modules/commands/prestige.go @@ -93,6 +93,7 @@ func ListenPrestigeReact(s *discordgo.Session, m *discordgo.MessageReactionAdd) log.Error(s, "checkPrestigeReact", "SetPrestigeMultiplier", err) return } + level.ClearCache(m.UserID) s.ChannelMessageSend(m.ChannelID, fmt.Sprintf( "**PRESTIGE > ** <@%s>, you have prestiged!", m.UserID, diff --git a/modules/level/scheduler.go b/modules/level/scheduler.go index 26a8e3b..1dc53c1 100644 --- a/modules/level/scheduler.go +++ b/modules/level/scheduler.go @@ -17,6 +17,12 @@ var ( lastKnownLevel = make(map[string]int) ) +func ClearCache(discordID string) { + levelMutex.Lock() + defer levelMutex.Unlock() + delete(lastKnownLevel, discordID) +} + func QueueCheck(discordID string) { levelMutex.Lock() defer levelMutex.Unlock() @@ -46,7 +52,11 @@ func ScheduleUpdates(s *discordgo.Session) { return } if newLevel > oldLevel { - err = gacha.RollReward(s, checkID, newLevel-oldLevel) + timeToRoll := newLevel - oldLevel + if oldLevel == 0 { + timeToRoll-- + } + err = gacha.RollReward(s, checkID, timeToRoll) if err != nil { log.Error(s, err) }