121 lines
4.2 KiB
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())
|
|
}
|
|
}
|