aboutsummaryrefslogtreecommitdiff
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
parent1078cf3deb94ef22c65510b42c8e7f0dc50a036a (diff)
feat(xp): rank command
-rw-r--r--commands/rank.go47
-rw-r--r--main.go21
2 files changed, 56 insertions, 12 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())
+ }
}
diff --git a/main.go b/main.go
index 7197396..09835d2 100644
--- a/main.go
+++ b/main.go
@@ -3,6 +3,7 @@ package main
import (
"flag"
"github.com/anhgelus/gokord"
+ "github.com/anhgelus/les-copaings-bot/commands"
"github.com/anhgelus/les-copaings-bot/xp"
"github.com/bwmarrin/discordgo"
)
@@ -25,15 +26,15 @@ func main() {
panic(err)
}
- //rankCmd := gokord.NewCommand("rank", "Affiche le niveau d'une personne").
- // HasOption().
- // AddOption(gokord.NewOption(
- // discordgo.ApplicationCommandOptionUser,
- // "copaing",
- // "Le niveau du Copaing que vous souhaitez obtenir",
- // )).
- // SetHandler(commands.Rank).
- // ToCmd()
+ rankCmd := gokord.NewCommand("rank", "Affiche le niveau d'une personne").
+ HasOption().
+ AddOption(gokord.NewOption(
+ discordgo.ApplicationCommandOptionUser,
+ "copaing",
+ "Le niveau du Copaing que vous souhaitez obtenir",
+ )).
+ SetHandler(commands.Rank).
+ ToCmd()
bot := gokord.Bot{
Token: token,
@@ -45,7 +46,7 @@ func main() {
},
},
Commands: []*gokord.Cmd{
- //rankCmd,
+ rankCmd,
},
AfterInit: afterInit,
}