aboutsummaryrefslogtreecommitdiff
path: root/commands
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <anhgelus.morhtuuzh@proton.me>2024-04-14 17:41:29 +0200
committerAnhgelus Morhtuuzh <anhgelus.morhtuuzh@proton.me>2024-04-14 17:41:29 +0200
commit3e06848f7280d03af7d2aacd6b4146ec7cf7c04e (patch)
tree6e7a15df36b24bdb5cd5b71113d1e10c703262d0 /commands
parent1078cf3deb94ef22c65510b42c8e7f0dc50a036a (diff)
feat(xp): rank command
Diffstat (limited to 'commands')
-rw-r--r--commands/rank.go47
1 files changed, 45 insertions, 2 deletions
diff --git a/commands/rank.go b/commands/rank.go
index e5b760b..cd37a0c 100644
--- a/commands/rank.go
+++ b/commands/rank.go
@@ -1,7 +1,50 @@
package commands
-import "github.com/bwmarrin/discordgo"
+import (
+ "fmt"
+ "github.com/anhgelus/gokord/utils"
+ "github.com/anhgelus/les-copaings-bot/xp"
+ "github.com/bwmarrin/discordgo"
+)
func Rank(s *discordgo.Session, i *discordgo.InteractionCreate) {
-
+ optMap := utils.GenerateOptionMap(i)
+ c := xp.Copaing{DiscordID: i.Member.User.ID, GuildID: i.GuildID}
+ msg := "Votre niveau"
+ m := i.Member
+ var err error
+ resp := utils.ResponseBuilder{C: s, I: i}
+ if v, ok := optMap["copaing"]; ok {
+ u := v.UserValue(s)
+ if u.Bot {
+ err = resp.Message("Imagine si les bots avaient un niveau :rolling_eyes:").IsEphemeral().Send()
+ if err != nil {
+ utils.SendAlert("rank.go - Reply error user is a bot", err.Error())
+ }
+ }
+ m, err = s.GuildMember(i.GuildID, u.ID)
+ if err != nil {
+ utils.SendAlert("rank.go - Fetching guild member", err.Error())
+ 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
+ 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(
+ "%s : **%d**\n> XP : %d\n> Prochain niveau dans %d XP",
+ msg,
+ lvl,
+ c.XP,
+ nxtLvl-lvl,
+ )).Send()
+ if err != nil {
+ utils.SendAlert("rank.go - Sending rank", err.Error())
+ }
}