aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands/config.go51
-rw-r--r--config/channel.go43
-rw-r--r--config/xp_role.go18
-rw-r--r--main.go4
4 files changed, 60 insertions, 56 deletions
diff --git a/commands/config.go b/commands/config.go
index 9aa4682..18c5aa9 100644
--- a/commands/config.go
+++ b/commands/config.go
@@ -12,10 +12,8 @@ import (
)
const (
- ConfigModify = "config_modify"
- ConfigModifyDisChannel = "disabled_channel"
- ConfigModifyFallbackChannel = "fallback_channel"
- ConfigModifyTimeReduce = "time_reduce"
+ ConfigModify = "config_modify"
+ ConfigModifyTimeReduce = "time_reduce"
)
func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMap, resp *cmd.ResponseBuilder) {
@@ -85,13 +83,13 @@ func Config(_ *discordgo.Session, i *discordgo.InteractionCreate, _ cmd.OptionMa
SetEmoji(&discordgo.ComponentEmoji{Name: "🏅"}),
).
AddOption(
- component.NewSelectOption("Salons désactivés", ConfigModifyDisChannel).
+ 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 de repli", ConfigModifyFallbackChannel).
+ component.NewSelectOption("Salons de repli", config.ModifyFallbackChannel).
SetDescription("Spécifie le salon de repli").
SetEmoji(&discordgo.ComponentEmoji{Name: "đź’ľ"}),
).
@@ -176,47 +174,6 @@ func ConfigChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap
}
}
-func ConfigFallbackChannel(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
- resp.IsEphemeral()
- // verify every args
- salon, ok := optMap["channel"]
- if !ok {
- err := resp.SetMessage("Le salon n'a pas été renseigné.").Send()
- if err != nil {
- logger.Alert("commands/config.go - Channel not set (fallback)", err.Error())
- }
- return
- }
- channel := salon.ChannelValue(s)
- if channel.Type != discordgo.ChannelTypeGuildText {
- err := resp.SetMessage("Le salon n'est pas un salon textuel.").Send()
- if err != nil {
- logger.Alert("commands/config.go - Invalid channel type", err.Error())
- }
- return
- }
- cfg := config.GetGuildConfig(i.GuildID)
- cfg.FallbackChannel = channel.ID
- // save
- err := cfg.Save()
- if err != nil {
- logger.Alert(
- "commands/config.go - Saving config",
- err.Error(),
- "guild_id",
- i.GuildID,
- "channel_id",
- channel.ID,
- )
- err = resp.SetMessage("Il y a eu une erreur lors de la modification de de la base de données.").Send()
- } else {
- err = resp.SetMessage("Salon enregistré.").Send()
- }
- if err != nil {
- logger.Alert("commands/config.go - Channel saved message", err.Error())
- }
-}
-
func ConfigPeriodBeforeReduce(s *discordgo.Session, i *discordgo.InteractionCreate, optMap cmd.OptionMap, resp *cmd.ResponseBuilder) {
resp.IsEphemeral()
// verify every args
diff --git a/config/channel.go b/config/channel.go
new file mode 100644
index 0000000..2ef8b48
--- /dev/null
+++ b/config/channel.go
@@ -0,0 +1,43 @@
+package config
+
+import (
+ "github.com/anhgelus/gokord/cmd"
+ "github.com/anhgelus/gokord/component"
+ "github.com/anhgelus/gokord/logger"
+ "github.com/bwmarrin/discordgo"
+)
+
+const (
+ ModifyDisChannel = "disabled_channel"
+ ModifyFallbackChannel = "fallback_channel"
+ FallbackChannelSet = "fallback_channel_set"
+)
+
+func HandleModifyFallbackChannel(_ *discordgo.Session, _ *discordgo.InteractionCreate, _ discordgo.MessageComponentInteractionData, resp *cmd.ResponseBuilder) {
+ err := resp.SetMessage("Salon de repli...").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", 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())
+ }
+}
diff --git a/config/xp_role.go b/config/xp_role.go
index bed5c57..8f98265 100644
--- a/config/xp_role.go
+++ b/config/xp_role.go
@@ -87,7 +87,7 @@ func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d
if r.RoleID == roleId {
err := resp.SetMessage("Le rôle est déjà présent dans la config").Send()
if err != nil {
- logger.Alert("commands/config.go - Role already in config", err.Error())
+ logger.Alert("config/xp_role.go - Role already in config", err.Error())
}
return
}
@@ -99,7 +99,7 @@ func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d
err := cfg.Save()
if err != nil {
logger.Alert(
- "commands/config.go - Saving config",
+ "config/xp_role.go - Saving config",
err.Error(),
"guild_id", i.GuildID,
"role_id", roleId,
@@ -107,7 +107,7 @@ func HandleXpRoleAddRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d
)
}
if err = resp.IsEphemeral().SetMessage("Rôle ajouté.").Send(); err != nil {
- logger.Alert("commands/config.go - Sending success", err.Error())
+ logger.Alert("config/xp_role.go - Sending success", err.Error())
}
}
@@ -118,7 +118,7 @@ func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate,
if r == nil {
err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send()
if err != nil {
- logger.Alert("commands/config.go - Role not found (edit)", err.Error())
+ logger.Alert("config/xp_role.go - Role not found (edit)", err.Error())
}
return
}
@@ -126,7 +126,7 @@ func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate,
err := gokord.DB.Save(r).Error
if err != nil {
logger.Alert(
- "commands/config.go - Saving config",
+ "config/xp_role.go - Saving config",
err.Error(),
"guild_id", i.GuildID,
"role_id", roleId,
@@ -134,7 +134,7 @@ func HandleXpRoleEditRole(_ *discordgo.Session, i *discordgo.InteractionCreate,
)
}
if err = resp.IsEphemeral().SetMessage("Rôle modifié.").Send(); err != nil {
- logger.Alert("commands/config.go - Sending success", err.Error())
+ logger.Alert("config/xp_role.go - Sending success", err.Error())
}
}
@@ -155,14 +155,14 @@ func HandleXpRoleDelRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d
if r == nil {
err := resp.SetMessage("Le rôle n'a pas été trouvé dans la config.").Send()
if err != nil {
- logger.Alert("commands/config.go - Sending role not found (del)", err.Error())
+ logger.Alert("config/xp_role.go - Sending role not found (del)", err.Error())
}
return
}
err := gokord.DB.Delete(r).Error
if err != nil {
logger.Alert(
- "commands/config.go - Deleting entry",
+ "config/xp_role.go - Deleting entry",
err.Error(),
"guild_id", i.GuildID,
"role_id", roleId,
@@ -170,7 +170,7 @@ func HandleXpRoleDelRole(_ *discordgo.Session, i *discordgo.InteractionCreate, d
)
}
if err = resp.IsEphemeral().SetMessage("Rôle supprimé.").Send(); err != nil {
- logger.Alert("commands/config.go - Sending success", err.Error())
+ logger.Alert("config/xp_role.go - Sending success", err.Error())
}
}
diff --git a/main.go b/main.go
index b57fcb5..d03283a 100644
--- a/main.go
+++ b/main.go
@@ -129,6 +129,7 @@ func main() {
}
// interaction: /config
+ // xp related
bot.HandleMessageComponent(config.HandleModifyXpRole, config.ModifyXpRole)
bot.HandleMessageComponent(config.HandleXpRoleAddEdit, config.XpRoleAdd)
bot.HandleMessageComponent(config.HandleXpRoleAddEdit, config.XpRoleEdit)
@@ -138,6 +139,9 @@ func main() {
bot.HandleMessageComponent(config.HandleXpRoleDelRole, config.XpRoleDelRole)
bot.HandleModal(config.HandleXpRoleLevel, config.XpRoleAddLevel)
bot.HandleModal(config.HandleXpRoleLevel, config.XpRoleEditLevel)
+ // channel related
+ bot.HandleMessageComponent(config.HandleModifyFallbackChannel, config.ModifyFallbackChannel)
+ bot.HandleMessageComponent(config.HandleFallbackChannelSet, config.FallbackChannelSet)
// xp handlers
bot.AddHandler(OnMessage)