aboutsummaryrefslogtreecommitdiff
path: root/commands/top.go
blob: 22574ceaa4f209ff3a325df121c3dbb05438948b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package commands

import (
	"fmt"
	"github.com/anhgelus/gokord"
	"github.com/anhgelus/gokord/utils"
	"github.com/anhgelus/les-copaings-bot/exp"
	"github.com/anhgelus/les-copaings-bot/user"
	"github.com/bwmarrin/discordgo"
)

func Top(s *discordgo.Session, i *discordgo.InteractionCreate) {
	user.LastEventUpdate(s, user.GetCopaing(i.Member.User.ID, i.GuildID))
	resp := utils.ResponseBuilder{C: s, I: i}
	err := resp.IsDeferred().Send()
	if err != nil {
		utils.SendAlert("commands/top.go - Sending deferred", err.Error())
		return
	}
	resp.NotDeferred().IsEdit()
	go func() {
		var tops []user.Copaing
		gokord.DB.Where("guild_id = ?", i.GuildID).Limit(10).Order("exp desc").Find(&tops)
		msg := ""
		for i, c := range tops {
			if i == 9 {
				msg += fmt.Sprintf("%d. **<@%s>** - niveau %d", i+1, c.DiscordID, exp.Level(c.XP))
			} else {
				msg += fmt.Sprintf("%d. **<@%s>** - niveau %d\n", i+1, c.DiscordID, exp.Level(c.XP))
			}
		}
		err = resp.Embeds([]*discordgo.MessageEmbed{
			{
				Title:       "Top",
				Description: msg,
				Color:       utils.Success,
			},
		}).Send()
		if err != nil {
			utils.SendAlert("commands/top.go - Sending response top", err.Error())
		}
	}()
}