From 2b285f45234a8b6709ed1adf4ff151f028b51eff Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Mon, 15 Apr 2024 16:56:01 +0200 Subject: [PATCH] feat(config): fallback channel --- commands/config.go | 38 +++++++++++++++++++++++++++++++++++++- config/guild.go | 1 + main.go | 10 ++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/commands/config.go b/commands/config.go index e663b40..62b7710 100644 --- a/commands/config.go +++ b/commands/config.go @@ -43,6 +43,11 @@ func ConfigShow(s *discordgo.Session, i *discordgo.InteractionCreate) { Description: "Configuration", Color: utils.Success, Fields: []*discordgo.MessageEmbedField{ + { + Name: "Salons par défaut", + Value: fmt.Sprintf("<#%s>", cfg.FallbackChannel), + Inline: false, + }, { Name: "Rôles liés aux niveaux", Value: roles, @@ -172,7 +177,7 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate) { if !ok { err := resp.Message("Le salon n'a pas été renseigné.").Send() if err != nil { - utils.SendAlert("commands/config.go - Channel not set", err.Error()) + utils.SendAlert("commands/config.go - Channel not set (disabled)", err.Error()) } return } @@ -211,3 +216,34 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate) { utils.SendAlert("commands/config.go - Modification saved message", err.Error()) } } + +func ConfigFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate) { + optMap := utils.GenerateOptionMapForSubcommand(i) + resp := utils.ResponseBuilder{C: s, I: i} + resp.IsEphemeral() + // verify every args + salon, ok := optMap["channel"] + if !ok { + err := resp.Message("Le salon n'a pas été renseigné.").Send() + if err != nil { + utils.SendAlert("commands/config.go - Channel not set (fallback)", err.Error()) + } + return + } + channel := salon.ChannelValue(s) + if channel.Type != discordgo.ChannelTypeGuildText { + err := resp.Message("Le salon n'est pas un salon textuel.").Send() + if err != nil { + utils.SendAlert("commands/config.go - Invalid channel type", err.Error()) + } + return + } + cfg := config.GetGuildConfig(i.GuildID) + cfg.FallbackChannel = channel.ID + // save + cfg.Save() + err := resp.Message("Salon enregistré.").Send() + if err != nil { + utils.SendAlert("commands/config.go - Channel saved message", err.Error()) + } +} diff --git a/config/guild.go b/config/guild.go index 6ed07c6..00d3bf1 100644 --- a/config/guild.go +++ b/config/guild.go @@ -11,6 +11,7 @@ type GuildConfig struct { GuildID string `gorm:"not null"` XpRoles []XpRole DisabledChannels string + FallbackChannel string } type XpRole struct { diff --git a/main.go b/main.go index 2529b8f..d6a97f9 100644 --- a/main.go +++ b/main.go @@ -82,6 +82,16 @@ func main() { "Salon à modifier", ).IsRequired()). SetHandler(commands.ConfigChannel), + ). + AddSub( + gokord.NewCommand("fallback-channel", "Modifie le salon textuel par défaut"). + HasOption(). + AddOption(gokord.NewOption( + discordgo.ApplicationCommandOptionChannel, + "channel", + "Salon textuel par défaut", + ).IsRequired()). + SetHandler(commands.ConfigFallbackChannel), ) bot := gokord.Bot{