diff options
| author | William Hergès <william@herges.fr> | 2025-07-30 21:34:07 +0200 |
|---|---|---|
| committer | William Hergès <william@herges.fr> | 2025-07-30 21:34:07 +0200 |
| commit | 7508627d86a4f2ef9b3caebd88d92fe8be854816 (patch) | |
| tree | d34fad4e94f0c89eab9497210b914d1208983480 /user/xp.go | |
| parent | 436ec957481bdadefc8a38dc5ad848021a34ac37 (diff) | |
feat(xp): boost XP if user has a certain role
Diffstat (limited to 'user/xp.go')
| -rw-r--r-- | user/xp.go | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -87,10 +87,17 @@ func (c *Copaing) GetXPForDays(n uint) (uint, error) { } func (c *Copaing) GetBoost(m *discordgo.Member) float64 { + boost := 1.0 if m.PremiumSince != nil { - return 2.0 + boost = max(boost, 2.0) } - return 1.0 + cfg := config.GetGuildConfig(c.GuildID) + for _, r := range cfg.BoostXpRoles { + if slices.Contains(m.Roles, r.RoleID) { + boost = max(boost, r.Boost) + } + } + return boost } // GetBestXP returns n Copaing with the best XP within d days (d <= cfg.DaysXPRemain; d < 0 <=> d = cfg.DaysXPRemain) |
