les-copaings-bot/commands/config.go

121 lines
4.2 KiB
Go

package commands
import (
"fmt"
"strings"
"git.anhgelus.world/anhgelus/les-copaings-bot/config"
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/gokord/cmd"
"github.com/anhgelus/gokord/component"
"github.com/anhgelus/gokord/logger"
"github.com/bwmarrin/discordgo"
)
const (
ConfigModify = "config_modify"
)
func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
cfg := config.GetGuildConfig(i.GuildID)
roles := ""
l := len(cfg.XpRoles) - 1
for i, r := range cfg.XpRoles {
if i == l {
roles += fmt.Sprintf("> Niveau %d - <@&%s>", exp.Level(r.XP), r.RoleID)
} else {
roles += fmt.Sprintf("> Niveau %d - <@&%s>\n", exp.Level(r.XP), r.RoleID)
}
}
if len(roles) == 0 {
roles = "Aucun rôle configuré :("
}
disChans := strings.Split(cfg.DisabledChannels, ";")
l = len(disChans) - 1
chans := ""
for i, c := range disChans {
if i == l-1 {
chans += fmt.Sprintf("> <#%s>", c)
} else if i != l {
chans += fmt.Sprintf("> <#%s>\n", c)
}
}
if len(chans) == 0 {
chans = "Aucun salon désactivé :)"
}
var defaultChan string
if len(cfg.FallbackChannel) == 0 {
defaultChan = "Pas de valeur"
} else {
defaultChan = fmt.Sprintf("<#%s>", cfg.FallbackChannel)
}
//comp := component.New().
// Add(component.NewTextDisplay("# Config")).
// Add(component.NewTextDisplay("**Salon par défaut**\n" + defaultChan)).
// Add(component.NewSeparator()).
// Add(component.NewTextDisplay("**Rôles liés aux niveaux**\n" + roles)).
// Add(component.NewSeparator()).
// Add(component.NewTextDisplay("**Salons désactivés**\n" + chans)).
// Add(component.NewSeparator()).
// Add(component.NewTextDisplay(fmt.Sprintf("**%s**\n%d", "Jours avant la réduction", cfg.DaysXPRemains))).
// Add(component.NewActionRow().Add(component.NewStringSelect(ConfigModify).
// SetPlaceholder("Modifier...").
// AddOption(
// component.NewSelectOption("Rôles liés à l'XP", config.ModifyXpRole).
// SetDescription("Gère les rôles liés à l'XP").
// SetEmoji(&discordgo.ComponentEmoji{Name: "🏅"}),
// ).
// AddOption(
// component.NewSelectOption("Salons désactivés", config.ModifyDisChannel).
// SetDescription("Gère les salons désactivés").
// SetEmoji(&discordgo.ComponentEmoji{Name: "❌"}),
// ).
// AddOption(
// // I don't have a better idea for this...
// component.NewSelectOption("Salons par défaut", config.ModifyFallbackChannel).
// SetDescription("Spécifie le salon par défaut").
// SetEmoji(&discordgo.ComponentEmoji{Name: "💾"}),
// ).
// AddOption(
// component.NewSelectOption("Temps avec la réduction", config.ModifyTimeReduce).
// SetDescription("Gère le temps avant la réduction d'XP").
// SetEmoji(&discordgo.ComponentEmoji{Name: "⌛"}),
// ),
// ))
comp := component.New().
Add(component.NewActionRow().Add(component.NewStringSelect(ConfigModify).
SetPlaceholder("Modifier...").
AddOption(
component.NewSelectOption("Rôles liés à l'XP", config.ModifyXpRole).
SetDescription("Gère les rôles liés à l'XP").
SetEmoji(&discordgo.ComponentEmoji{Name: "🏅"}),
).
AddOption(
component.NewSelectOption("Salons désactivés", config.ModifyDisChannel).
SetDescription("Gère les salons désactivés").
SetEmoji(&discordgo.ComponentEmoji{Name: "❌"}),
).
AddOption(
// I don't have a better idea for this...
component.NewSelectOption("Salons par défaut", config.ModifyFallbackChannel).
SetDescription("Spécifie le salon par défaut").
SetEmoji(&discordgo.ComponentEmoji{Name: "💾"}),
).
AddOption(
component.NewSelectOption("Temps avec la réduction", config.ModifyTimeReduce).
SetDescription("Gère le temps avant la réduction d'XP").
SetEmoji(&discordgo.ComponentEmoji{Name: "⌛"}),
),
))
msg := fmt.Sprintf(
"# Config\n**Salon par défaut**\n%s\n\n**Rôles liés aux niveaux**\n%s\n\n**Salons désactivés**\n%s\n\n**Jours avant la réduction**\n%d",
defaultChan,
roles,
chans,
cfg.DaysXPRemains,
)
err := resp.SetComponents(comp).SetMessage(msg).IsEphemeral().Send()
if err != nil {
logger.Alert("config/guild.go - Sending config", err.Error())
}
}