diff options
Diffstat (limited to 'config/channel.go')
| -rw-r--r-- | config/channel.go | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/config/channel.go b/config/channel.go new file mode 100644 index 0000000..355b0e1 --- /dev/null +++ b/config/channel.go @@ -0,0 +1,126 @@ +package config + +import ( + "github.com/anhgelus/gokord/cmd" + "github.com/anhgelus/gokord/component" + "github.com/anhgelus/gokord/logger" + "github.com/bwmarrin/discordgo" + "strings" +) + +const ( + ModifyFallbackChannel = "fallback_channel" + FallbackChannelSet = "fallback_channel_set" + + ModifyDisChannel = "disabled_channel" + DisChannelAdd = "disabled_channel_add" + DisChannelAddSet = "disabled_channel_add_set" + DisChannelDel = "disabled_channel_del" + DisChannelDelSet = "disabled_channel_del_set" +) + +func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { + err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow().Add( + component.NewChannelSelect(FallbackChannelSet).AddChannelType(discordgo.ChannelTypeGuildText), + ))).Send() + if err != nil { + logger.Alert("config/channel.go - Sending channel list for fallback", err.Error()) + } +} + +func HandleFallbackChannelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { + resp.IsEphemeral() + + cfg := GetGuildConfig(i.GuildID) + channelID := data.Values[0] + + cfg.FallbackChannel = channelID + err := cfg.Save() + if err != nil { + logger.Alert("config/channel.go - Saving fallback channel", err.Error()) + if err = resp.SetMessage("Erreur lors de la sauvegarde du salon").Send(); err != nil { + logger.Alert("config/channel.go - Sending error while saving channel", err.Error()) + } + return + } + if err = resp.SetMessage("Salon sauvegardé.").Send(); err != nil { + logger.Alert("config/channel.go - Sending channel saved", err.Error()) + } +} + +func HandleModifyDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { + err := resp.IsEphemeral().SetComponents(component.New().Add(component.NewActionRow(). + Add( + component.NewButton(DisChannelAdd, discordgo.PrimaryButton). + SetLabel("Désactiver un salon"). + SetEmoji(&discordgo.ComponentEmoji{Name: "⬇️"}), + ). + Add( + component.NewButton(DisChannelDel, discordgo.DangerButton). + SetLabel("Réactiver un salon"). + SetEmoji(&discordgo.ComponentEmoji{Name: "⬆️"}), + ), + )).Send() + if err != nil { + logger.Alert("config/channel.go - Sending action type", err.Error()) + } +} + +func HandleDisChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { + resp.IsEphemeral().SetMessage("Salon à désactiver...") + cID := DisChannelAddSet + if data.CustomID == DisChannelDel { + resp.SetMessage("Salon à réactiver...") + cID = DisChannelDelSet + } + err := resp.SetComponents(component.New().Add(component.NewActionRow().Add(component.NewChannelSelect(cID)))).Send() + if err != nil { + logger.Alert("config/channel.go - Sending channel list for disable", err.Error()) + } +} + +func HandleDisChannelAddSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { + resp.IsEphemeral() + cfg := GetGuildConfig(i.GuildID) + id := data.Values[0] + if strings.Contains(cfg.DisabledChannels, id) { + err := resp.SetMessage("Le salon est déjà dans la liste des salons désactivés").Send() + if err != nil { + logger.Alert("commands/config.go - Channel already disabled", err.Error()) + } + return + } + cfg.DisabledChannels += id + ";" + if err := cfg.Save(); err != nil { + logger.Alert("commands/config.go - Saving config disable add", err.Error()) + if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil { + logger.Alert("config/channel.go - Sending error while saving config", err.Error()) + } + } + if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil { + logger.Alert("commands/config.go - Modification saved message disable add", err.Error()) + } +} + +func HandleDisChannelDelSet(_ *discordgo.Session, i *discordgo.InteractionCreate, data discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) { + resp.IsEphemeral() + cfg := GetGuildConfig(i.GuildID) + id := data.Values[0] + if !strings.Contains(cfg.DisabledChannels, id) { + err := resp.SetMessage("Le salon n'est pas désactivé").Send() + if err != nil { + logger.Alert("commands/config.go - Channel not disabled", err.Error()) + } + return + } + cfg.DisabledChannels = strings.ReplaceAll(cfg.DisabledChannels, id+";", "") + if err := cfg.Save(); err != nil { + logger.Alert("commands/config.go - Saving config disable del", err.Error()) + if err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send(); err != nil { + logger.Alert("config/channel.go - Sending error while saving config", err.Error()) + } + } + if err := resp.SetMessage("Modification sauvegardé.").Send(); err != nil { + logger.Alert("commands/config.go - Modification saved message disable del", err.Error()) + } +} |
