aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands/config.go44
-rw-r--r--config/channel.go17
-rw-r--r--config/xp_reduce.go72
-rw-r--r--config/xp_role.go205
-rw-r--r--dynamicid/handling.go67
-rw-r--r--main.go76
-rw-r--r--rolereact/manager.go43
-rw-r--r--rolereact/rolereact.go302
-rw-r--r--rolereact/views.go38
9 files changed, 357 insertions, 507 deletions
diff --git a/commands/config.go b/commands/config.go
index 336e66a..1878bdb 100644
--- a/commands/config.go
+++ b/commands/config.go
@@ -1,18 +1,17 @@
package commands
import (
+ "context"
"fmt"
"slices"
"strings"
"git.anhgelus.world/anhgelus/les-copaings-bot/config"
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
- "github.com/anhgelus/gokord/cmd"
"github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/channel"
"github.com/nyttikord/gokord/component"
"github.com/nyttikord/gokord/discord/types"
- "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -21,8 +20,8 @@ const (
OpenConfig = "config"
)
-func ConfigResponse(i *event.InteractionCreate) *interaction.Response {
- cfg := config.GetGuildConfig(i.GuildID)
+func ConfigResponse(guildID string) *interaction.Response {
+ cfg := config.GetGuildConfig(guildID)
roles := ""
l := len(cfg.XpRoles) - 1
slices.SortFunc(cfg.XpRoles, func(xp1, xp2 config.XpRole) int {
@@ -121,45 +120,30 @@ func ConfigResponse(i *event.InteractionCreate) *interaction.Response {
}
}
-func ConfigCommand(
- s bot.Session,
- i *event.InteractionCreate,
- _ cmd.OptionMap,
- resp *cmd.ResponseBuilder,
-) {
- err := s.InteractionAPI().Respond(i.Interaction, ConfigResponse(i))
+func ConfigCommand(ctx context.Context, dg bot.Session, i *interaction.ApplicationCommand) {
+ err := dg.InteractionAPI().Respond(i.Interaction, ConfigResponse(i.GuildID))
if err != nil {
- s.Logger().Error("sending config", "error", err)
+ bot.Logger(ctx).Error("sending config", "error", err)
}
}
-func ConfigMessageComponent(
- s bot.Session,
- i *event.InteractionCreate,
- _ *interaction.MessageComponentData,
- _ *cmd.ResponseBuilder,
-) {
- response := ConfigResponse(i)
+func ConfigMessageComponent(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) {
+ response := ConfigResponse(i.GuildID)
response.Type = types.InteractionResponseUpdateMessage
- err := s.InteractionAPI().Respond(i.Interaction, response)
+ err := dg.InteractionAPI().Respond(i.Interaction, response)
if err != nil {
- s.Logger().Error("sending config", "error", err)
+ bot.Logger(ctx).Error("sending config", "error", err)
}
}
-func ConfigModal(
- s bot.Session,
- i *event.InteractionCreate,
- _ *interaction.ModalSubmitData,
- _ *cmd.ResponseBuilder,
-) {
- response := ConfigResponse(i)
+func ConfigModal(ctx context.Context, dg bot.Session, i *interaction.ModalSubmit) {
+ response := ConfigResponse(i.GuildID)
response.Type = types.InteractionResponseUpdateMessage
- err := s.InteractionAPI().Respond(i.Interaction, response)
+ err := dg.InteractionAPI().Respond(i.Interaction, response)
if err != nil {
- s.Logger().Error("sending config", "error", err)
+ bot.Logger(ctx).Error("sending config", "error", err)
}
}
diff --git a/config/channel.go b/config/channel.go
index 0c25b25..6086f09 100644
--- a/config/channel.go
+++ b/config/channel.go
@@ -1,11 +1,10 @@
package config
import (
+ "context"
"strings"
- "github.com/anhgelus/gokord/cmd"
"github.com/nyttikord/gokord/bot"
- "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -20,27 +19,27 @@ const (
DisChannelDelSet = "disabled_channel_del_set"
)
-func HandleModifyFallbackChannel(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, _ *cmd.ResponseBuilder) bool {
+func HandleModifyFallbackChannel(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) bool {
cfg := GetGuildConfig(i.GuildID)
var channelID string
- if len(data.Values) > 0 {
- channelID = data.Values[0]
+ if len(i.Data.Values) > 0 {
+ channelID = i.Data.Values[0]
}
cfg.FallbackChannel = channelID
err := cfg.Save()
if err != nil {
- s.Logger().Error("saving fallback channel", "error", err)
+ bot.Logger(ctx).Error("saving fallback channel", "error", err)
return false
}
return true
}
-func HandleModifyDisChannel(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, _ *cmd.ResponseBuilder) bool {
+func HandleModifyDisChannel(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) bool {
cfg := GetGuildConfig(i.GuildID)
- cfg.DisabledChannels = strings.Join(data.Values, ";")
+ cfg.DisabledChannels = strings.Join(i.Data.Values, ";")
err := cfg.Save()
if err != nil {
- s.Logger().Error("unable to save disabled channel", "error", err)
+ bot.Logger(ctx).Error("unable to save disabled channel", "error", err)
return false
}
return true
diff --git a/config/xp_reduce.go b/config/xp_reduce.go
index 389043d..f8f8d95 100644
--- a/config/xp_reduce.go
+++ b/config/xp_reduce.go
@@ -1,14 +1,12 @@
package config
import (
+ "context"
"fmt"
"strconv"
- "github.com/anhgelus/gokord/cmd"
"github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/component"
- "github.com/nyttikord/gokord/discord/types"
- "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -17,52 +15,54 @@ const (
TimeReduceSet = "time_reduce_set"
)
-func HandleModifyPeriodicReduceCommand(s bot.Session, i *event.InteractionCreate, _ *interaction.MessageComponentData, _ *cmd.ResponseBuilder) {
+func HandleModifyPeriodicReduceCommand(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) {
cfg := GetGuildConfig(i.GuildID)
- response := interaction.Response{
- Type: types.InteractionResponseModal,
- Data: &interaction.ResponseData{
- CustomID: TimeReduceSet,
- Title: "Modifier la durée de l'expérience",
- Components: []component.Component{
- // TODO: When gokord supports it, enable this description again
- // &component.TextDisplay{
- // Content: "Seul l'expérience gagnée sur cette période sera comptabilisée dans le niveau par défaut",
- // },
- &component.Label{
- Label: "Durée en jours",
- Component: &component.TextInput{
- CustomID: TimeReduceSet,
- MinLength: 1,
- MaxLength: 3,
- Style: component.TextInputShort,
- Placeholder: "Durée en jours",
- Value: fmt.Sprintf("%d", cfg.DaysXPRemains),
- },
- },
+ resp := interaction.NewModalResponse().
+ CustomID(TimeReduceSet).
+ Title("Modifier la durée de l'expérience").
+ AddComponent(&component.TextDisplay{
+ Content: "Seul l'expérience gagnée sur cette période sera comptabilisée dans le niveau par défaut",
+ }).
+ AddComponent(&component.Label{
+ Label: "Durée en jours",
+ Component: &component.TextInput{
+ CustomID: TimeReduceSet,
+ MinLength: 1,
+ MaxLength: 3,
+ Style: component.TextInputShort,
+ Placeholder: "Durée en jours",
+ Value: fmt.Sprintf("%d", cfg.DaysXPRemains),
},
- },
- }
- err := s.InteractionAPI().Respond(i.Interaction, &response)
+ }).
+ Response()
+ err := dg.InteractionAPI().Respond(i.Interaction, resp).Do(ctx)
if err != nil {
- s.Logger().Error("sending xp reduce modal", "error", err)
+ bot.Logger(ctx).Error("sending xp reduce modal", "error", err)
}
}
-func HandleTimeReduceSet(s bot.Session, i *event.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) bool {
- v := data.Components[0].(*component.Label).Component.(*component.TextInput).Value
+func HandleTimeReduceSet(ctx context.Context, dg bot.Session, i *interaction.ModalSubmit) bool {
+ v := i.Data.Components[0].(*component.Label).Component.(*component.TextInput).Value
days, err := strconv.Atoi(v)
if err != nil {
- err = resp.IsEphemeral().SetMessage(fmt.Sprintf("La valeur indiquée, `%s`, c'est pas un entier.", v)).Send()
+ resp := interaction.NewMessageResponse().
+ IsEphemeral().
+ Message(fmt.Sprintf("La valeur indiquée, `%s`, c'est pas un entier.", v)).
+ Response()
+ err = dg.InteractionAPI().Respond(i.Interaction, resp).Do(ctx)
if err != nil {
- s.Logger().Error("sending bad input message", "error", err)
+ bot.Logger(ctx).Error("sending bad input message", "error", err)
}
return false
}
if days < 30 {
- err = resp.IsEphemeral().SetMessage("Le nombre de jours doit être suppérieur à 30.").Send()
+ resp := interaction.NewMessageResponse().
+ IsEphemeral().
+ Message("Le nombre de jours doit être suppérieur à 30.").
+ Response()
+ err = dg.InteractionAPI().Respond(i.Interaction, resp).Do(ctx)
if err != nil {
- s.Logger().Error("sending less than 30 days message", "error", err)
+ bot.Logger(ctx).Error("sending less than 30 days message", "error", err)
}
return false
}
@@ -70,7 +70,7 @@ func HandleTimeReduceSet(s bot.Session, i *event.InteractionCreate, data *intera
cfg.DaysXPRemains = uint(days)
err = cfg.Save()
if err != nil {
- s.Logger().Error("saving DaysXPRemains configuration", "error", err)
+ bot.Logger(ctx).Error("saving DaysXPRemains configuration", "error", err)
return false
}
return true
diff --git a/config/xp_role.go b/config/xp_role.go
index 2feab59..76389c9 100644
--- a/config/xp_role.go
+++ b/config/xp_role.go
@@ -1,6 +1,7 @@
package config
import (
+ "context"
"fmt"
"slices"
"strconv"
@@ -8,12 +9,10 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/dynamicid"
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"github.com/anhgelus/gokord"
- "github.com/anhgelus/gokord/cmd"
"github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/channel"
"github.com/nyttikord/gokord/component"
"github.com/nyttikord/gokord/discord/types"
- "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -39,12 +38,7 @@ const (
XpRoleDel = `xp_role_del`
)
-func HandleXpRole(
- s bot.Session,
- i *event.InteractionCreate,
- _ *interaction.MessageComponentData,
- _ *cmd.ResponseBuilder,
-) {
+func HandleXpRole(ctx context.Context, dg bot.Session, i *interaction.Interaction) {
cfg := GetGuildConfig(i.GuildID)
container := component.Container{
Components: []component.Message{
@@ -95,65 +89,50 @@ func HandleXpRole(
Flags: channel.MessageFlagsIsComponentsV2,
},
}
- err := s.InteractionAPI().Respond(i.Interaction, response)
+ err := dg.InteractionAPI().Respond(i, response).Do(ctx)
if err != nil {
- s.Logger().Error("sending config", "error", err)
+ bot.Logger(ctx).Error("sending config", "error", err)
}
}
-func HandleXpRoleNew(
- s bot.Session,
- i *event.InteractionCreate,
- _ *interaction.MessageComponentData,
- _ *cmd.ResponseBuilder,
-) {
+func HandleXpRoleNew(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) {
one := 1
- response := &interaction.Response{
- Type: types.InteractionResponseModal,
- Data: &interaction.ResponseData{
- Title: "Nouveau rôle de niveau",
- CustomID: XpRoleAdd,
- Components: []component.Component{
- &component.Label{
- Label: "Niveau",
- Component: &component.TextInput{
- CustomID: "level",
- Style: component.TextInputShort,
- Placeholder: "5",
- MinLength: 1,
- MaxLength: 5,
- Required: true,
- },
- },
- &component.Label{
- Label: "Rôle",
- Component: &component.SelectMenu{
- MenuType: types.SelectMenuRole,
- CustomID: "role",
- MinValues: &one,
- MaxValues: one,
- },
- },
+ resp := interaction.NewModalResponse().
+ Title("Nouveau rôle de niveau").
+ CustomID(XpRoleAdd).
+ AddComponent(&component.Label{
+ Label: "Niveau",
+ Component: &component.TextInput{
+ CustomID: "level",
+ Style: component.TextInputShort,
+ Placeholder: "5",
+ MinLength: 1,
+ MaxLength: 5,
+ Required: true,
},
- },
- }
- err := s.InteractionAPI().Respond(i.Interaction, response)
+ }).
+ AddComponent(&component.Label{
+ Label: "Rôle",
+ Component: &component.SelectMenu{
+ MenuType: types.SelectMenuRole,
+ CustomID: "role",
+ MinValues: &one,
+ MaxValues: one,
+ },
+ }).
+ Response()
+ err := dg.InteractionAPI().Respond(i.Interaction, resp)
if err != nil {
- s.Logger().Error("sending modal to add", "error", err)
+ bot.Logger(ctx).Error("sending modal to add", "error", err)
}
}
-func HandleXpRoleEdit(
- s bot.Session,
- i *event.InteractionCreate,
- _ *interaction.MessageComponentData,
- parameters *XpRoleId, resp *cmd.ResponseBuilder,
-) {
+func HandleXpRoleEdit(ctx context.Context, dg bot.Session, i *interaction.Interaction, params *XpRoleId) {
config := GetGuildConfig(i.GuildID)
- id := parameters.ID
+ id := params.ID
_, role := config.FindXpRoleID(id)
if role == nil {
- HandleXpRole(s, i, &interaction.MessageComponentData{}, resp)
+ HandleXpRole(ctx, dg, i)
return
}
@@ -202,24 +181,19 @@ func HandleXpRoleEdit(
},
}
- err := s.InteractionAPI().Respond(i.Interaction, response)
+ err := dg.InteractionAPI().Respond(i, response)
if err != nil {
- s.Logger().Error("sending xp_role config", "error", err)
+ bot.Logger(ctx).Error("sending xp_role config", "error", err)
}
}
-func HandleXpRoleEditRole(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *XpRoleId, resp *cmd.ResponseBuilder,
-) {
- id := parameters.ID
- role := data.Values[0]
+func HandleXpRoleEditRole(ctx context.Context, dg bot.Session, i *interaction.MessageComponent, params *XpRoleId) {
+ id := params.ID
+ role := i.Data.Values[0]
cfg := GetGuildConfig(i.GuildID)
_, xpRole := cfg.FindXpRoleID(id)
if xpRole == nil {
- err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
+ err := dg.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseChannelMessageWithSource,
Data: &interaction.ResponseData{
Flags: channel.MessageFlagsEphemeral,
@@ -227,30 +201,24 @@ func HandleXpRoleEditRole(
},
})
if err != nil {
- s.Logger().Error("sending unable to get role message", "error", err)
+ bot.Logger(ctx).Error("sending unable to get role message", "error", err)
}
return
}
xpRole.RoleID = role
err := gokord.DB.Save(xpRole).Error
if err != nil {
- s.Logger().Error("saving config", "error", err, "guild", i.GuildID, "id", id, "type", "add")
+ bot.Logger(ctx).Error("saving config", "error", err, "guild", i.GuildID, "id", id, "type", "add")
}
- HandleXpRoleEdit(s, i, &interaction.MessageComponentData{}, parameters, resp)
+ HandleXpRoleEdit(ctx, dg, i.Interaction, params)
}
-func HandleXpRoleEditLevelStart(
- s bot.Session,
- i *event.InteractionCreate,
- _ *interaction.MessageComponentData,
- parameters *XpRoleId,
- _ *cmd.ResponseBuilder,
-) {
- id := parameters.ID
+func HandleXpRoleEditLevelStart(ctx context.Context, dg bot.Session, i *interaction.MessageComponent, params *XpRoleId) {
+ id := params.ID
cfg := GetGuildConfig(i.GuildID)
_, xpRole := cfg.FindXpRoleID(id)
if xpRole == nil {
- err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
+ err := dg.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseChannelMessageWithSource,
Data: &interaction.ResponseData{
Flags: channel.MessageFlagsEphemeral,
@@ -258,7 +226,7 @@ func HandleXpRoleEditLevelStart(
},
})
if err != nil {
- s.Logger().Error("sending unable to get role message", "error", err)
+ bot.Logger(ctx).Error("sending unable to get role message", "error", err)
}
return
}
@@ -283,31 +251,25 @@ func HandleXpRoleEditLevelStart(
},
},
}
- err := s.InteractionAPI().Respond(i.Interaction, response)
+ err := dg.InteractionAPI().Respond(i.Interaction, response)
if err != nil {
- s.Logger().Error("sending edit level modal", "error", err)
+ bot.Logger(ctx).Error("sending edit level modal", "error", err)
}
}
-func HandleXpRoleEditLevel(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.ModalSubmitData,
- parameters *XpRoleId,
- resp *cmd.ResponseBuilder,
-) {
- id := parameters.ID
+func HandleXpRoleEditLevel(ctx context.Context, dg bot.Session, i *interaction.ModalSubmit, params *XpRoleId) {
+ id := params.ID
- levelInput := data.Components[0].(*component.Label).Component.(*component.TextInput)
+ levelInput := i.Data.Components[0].(*component.Label).Component.(*component.TextInput)
level, err := strconv.Atoi(levelInput.Value)
if err != nil || level < 0 {
- err = resp.IsEphemeral().
- SetMessage(
- fmt.Sprintf("Le niveau doit être un nombre entier positif.\n-# Trouvé : %s", levelInput.Value),
- ).
- Send()
+ resp := interaction.NewMessageResponse().
+ IsEphemeral().
+ Message(fmt.Sprintf("Le niveau doit être un nombre entier positif.\n-# Trouvé : %s", levelInput.Value)).
+ Response()
+ err = dg.InteractionAPI().Respond(i.Interaction, resp).Do(ctx)
if err != nil {
- s.Logger().Error("sending bad number warning message", "error", err)
+ bot.Logger(ctx).Error("sending bad number warning message", "error", err)
}
return
}
@@ -316,38 +278,32 @@ func HandleXpRoleEditLevel(
cfg := GetGuildConfig(i.GuildID)
_, xpRole := cfg.FindXpRoleID(id)
if xpRole == nil {
- err = s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
+ err = dg.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseChannelMessageWithSource,
Data: &interaction.ResponseData{
Flags: channel.MessageFlagsEphemeral,
Content: "Impossible de modifier le rôle. Peut-être a-t-il été supprimé ?",
},
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("sending unable to modify role message", "error", err)
+ bot.Logger(ctx).Error("sending unable to modify role message", "error", err)
}
return
}
xpRole.XP = xp
err = gokord.DB.Save(xpRole).Error
if err != nil {
- s.Logger().Error("saving config", "guild", i.GuildID, "id", id, "type", "edit")
+ bot.Logger(ctx).Error("saving config", "guild", i.GuildID, "id", id, "type", "edit")
}
- HandleXpRoleEdit(s, i, &interaction.MessageComponentData{}, parameters, resp)
+ HandleXpRoleEdit(ctx, dg, i.Interaction, params)
}
-func HandleXpRoleDel(
- s bot.Session,
- i *event.InteractionCreate,
- _ *interaction.MessageComponentData,
- parameters *XpRoleId,
- resp *cmd.ResponseBuilder,
-) {
+func HandleXpRoleDel(ctx context.Context, dg bot.Session, i *interaction.MessageComponent, parameters *XpRoleId) {
id := parameters.ID
cfg := GetGuildConfig(i.GuildID)
_, role := cfg.FindXpRoleID(id)
if role == nil {
- err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
+ err := dg.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseChannelMessageWithSource,
Data: &interaction.ResponseData{
Content: "Rôle introuvable. Peut-être a-t-il déjà été supprimé ?",
@@ -355,41 +311,36 @@ func HandleXpRoleDel(
},
})
if err != nil {
- s.Logger().Error("sending role not found message", "error", err)
+ bot.Logger(ctx).Error("sending role not found message", "error", err)
}
return
}
err := gokord.DB.Delete(role).Error
if err != nil {
- s.Logger().Error("deleting entry", "error", err, "guild", i.GuildID, "id", id, "type", "del")
+ bot.Logger(ctx).Error("deleting entry", "error", err, "guild", i.GuildID, "id", id, "type", "del")
}
- HandleXpRole(s, i, &interaction.MessageComponentData{}, resp)
+ HandleXpRole(ctx, dg, i.Interaction)
}
-func HandleXpRoleAdd(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.ModalSubmitData,
- resp *cmd.ResponseBuilder,
-) {
- levelInput := data.Components[0].(*component.Label).Component.(*component.TextInput)
+func HandleXpRoleAdd(ctx context.Context, dg bot.Session, i *interaction.ModalSubmit) {
+ levelInput := i.Data.Components[0].(*component.Label).Component.(*component.TextInput)
in, err := strconv.Atoi(levelInput.Value)
if err != nil || in < 0 {
- err = resp.IsEphemeral().
- SetMessage(
- fmt.Sprintf("Le niveau doit être un nombre entier positif.\n-# Trouvé : %s", levelInput.Value),
- ).
- Send()
+ resp := interaction.NewMessageResponse().
+ IsEphemeral().
+ Message(fmt.Sprintf("Le niveau doit être un nombre entier positif.\n-# Trouvé : %s", levelInput.Value)).
+ Response()
+ err = dg.InteractionAPI().Respond(i.Interaction, resp).Do(ctx)
if err != nil {
- s.Logger().Error("sending bad number warning message", "error", err)
+ bot.Logger(ctx).Error("sending bad number warning message", "error", err)
}
return
}
xp := exp.LevelXP(uint(in))
- roleId := data.Components[1].(*component.Label).Component.(*component.SelectMenu).Values[0]
+ roleId := i.Data.Components[1].(*component.Label).Component.(*component.SelectMenu).Values[0]
cfg := GetGuildConfig(i.GuildID)
cfg.XpRoles = append(cfg.XpRoles, XpRole{
@@ -398,9 +349,9 @@ func HandleXpRoleAdd(
})
err = cfg.Save()
if err != nil {
- s.Logger().Error("saving config", "error", err, "role", roleId, "guild", i.GuildID)
+ bot.Logger(ctx).Error("saving config", "error", err, "role", roleId, "guild", i.GuildID)
return
}
- HandleXpRole(s, i, &interaction.MessageComponentData{}, resp)
+ HandleXpRole(ctx, dg, i.Interaction)
}
diff --git a/dynamicid/handling.go b/dynamicid/handling.go
index e43d658..08d1620 100644
--- a/dynamicid/handling.go
+++ b/dynamicid/handling.go
@@ -4,69 +4,60 @@ import (
"context"
"strings"
- "github.com/anhgelus/gokord"
- "github.com/anhgelus/gokord/cmd"
"github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/discord/types"
"github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
-func HandleDynamicMessageComponent[DynamicData any](
- b *gokord.Bot,
- handler func(
- bot.Session,
- *event.InteractionCreate,
- *interaction.MessageComponentData,
- *DynamicData, *cmd.ResponseBuilder,
- ),
+func HandleDynamicMessageComponent[T any](
+ events bot.EventManager,
+ handler func(context.Context, bot.Session, *interaction.MessageComponent, T),
base string,
) {
- b.AddHandler(func(_ context.Context, s bot.Session, i *event.InteractionCreate) {
+ events.AddHandler(func(ctx context.Context, dg bot.Session, i *event.InteractionCreate) {
if i.Type != types.InteractionMessageComponent {
return
}
- data := i.MessageComponentData()
- if !strings.HasPrefix(data.CustomID, base+";") {
+ msg := i.MessageComponent()
+ cid := msg.Data.CustomID
+ if !strings.HasPrefix(cid, base+";") {
return
}
- dynamicID := data.CustomID[len(base)+1:]
- dynamicData := new(DynamicData)
- err := UnmarshallCSV(dynamicID, dynamicData)
+ dynamicID := cid[len(base)+1:]
+ var dynamic T
+ err := UnmarshallCSV(dynamicID, dynamic)
if err != nil {
- s.Logger().Error("Unable to parse CustomID", "error", err, "CustomID", data.CustomID, "base", base)
+ bot.Logger(ctx).Error("Unable to parse CustomID", "error", err, "CustomID", cid, "base", base)
return
}
- handler(s, i, data, dynamicData, cmd.NewResponseBuilder(s, i))
+ handler(ctx, dg, msg, dynamic)
})
}
-func HandleDynamicModalComponent[DynamicData any](
- b *gokord.Bot,
- handler func(
- bot.Session,
- *event.InteractionCreate,
- *interaction.ModalSubmitData,
- *DynamicData,
- *cmd.ResponseBuilder,
- ),
+func HandleDynamicModalComponent[T any](
+ events bot.EventManager,
+ handler func(context.Context, bot.Session, *interaction.ModalSubmit, T),
base string,
+
) {
- b.AddHandler(func(_ context.Context, s bot.Session, i *event.InteractionCreate) {
+ events.AddHandler(func(ctx context.Context, dg bot.Session, i *event.InteractionCreate) {
if i.Type != types.InteractionModalSubmit {
return
}
- data := i.ModalSubmitData()
- if strings.HasPrefix(data.CustomID, base+";") {
- dynamicID := data.CustomID[len(base)+1:]
- dynamicData := new(DynamicData)
- err := UnmarshallCSV(dynamicID, dynamicData)
- if err != nil {
- s.Logger().Error("Unable to parse CustomID", "error", err, "CustomID", data.CustomID, "base", base)
- return
- }
- handler(s, i, data, dynamicData, cmd.NewResponseBuilder(s, i))
+ modal := i.ModalSubmit()
+ cid := modal.Data.CustomID
+ if !strings.HasPrefix(cid, base+";") {
+ return
+ }
+ dynamicID := cid[len(base)+1:]
+ var dynamic T
+ err := UnmarshallCSV(dynamicID, dynamic)
+ if err != nil {
+ bot.Logger(ctx).Error("Unable to parse CustomID", "error", err, "CustomID", cid, "base", base)
+ return
}
+ handler(ctx, dg, modal, dynamic)
})
}
diff --git a/main.go b/main.go
index 960f47e..1d70d93 100644
--- a/main.go
+++ b/main.go
@@ -18,9 +18,8 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/exp"
"git.anhgelus.world/anhgelus/les-copaings-bot/rolereact"
"git.anhgelus.world/anhgelus/les-copaings-bot/user"
- "github.com/anhgelus/gokord/cmd"
_ "github.com/joho/godotenv/autoload"
- discordgo "github.com/nyttikord/gokord"
+ "github.com/nyttikord/gokord"
"github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/discord"
"github.com/nyttikord/gokord/discord/types"
@@ -150,13 +149,14 @@ func main() {
if verbose {
logLevel = slog.LevelDebug
}
- dg := discordgo.NewWithLogLevel("Bot "+token, logLevel)
+ dg := gokord.NewWithLogLevel("Bot "+token, logLevel)
dg.Identify.Intents = discord.IntentsAllWithoutPrivileged |
discord.IntentsMessageContent |
discord.IntentGuildMembers
events := dg.EventManager()
+ intrs := dg.InteractionManager()
events.AddHandler(ready)
// related to rolereact
@@ -202,46 +202,50 @@ func main() {
})
events.AddHandler(rolereact.HandleReactionAdd)
events.AddHandler(rolereact.HandleReactionRemove)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleModifyComponent, rolereact.OpenMessage)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleApplyMessage, rolereact.ApplyMessage)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleResetMessage, rolereact.ResetMessage)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleStartSetNote, rolereact.SetNote)
- dynamicid.HandleDynamicModalComponent(&b, rolereact.HandleSetNote, rolereact.SetNote)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleNewRole, rolereact.NewRole)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleOpenRole, rolereact.OpenRole)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleSetRole, rolereact.SetRoleRoleID)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleSetReaction, rolereact.SetRoleReaction)
- dynamicid.HandleDynamicMessageComponent(&b, rolereact.HandleDelRole, rolereact.DelRole)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleModifyComponent, rolereact.OpenMessage)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleApplyMessage, rolereact.ApplyMessage)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleResetMessage, rolereact.ResetMessage)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleStartSetNote, rolereact.SetNote)
+ dynamicid.HandleDynamicModalComponent(events, rolereact.HandleSetNote, rolereact.SetNote)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleNewRole, rolereact.NewRole)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleOpenRole, rolereact.OpenRole)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleSetRole, rolereact.SetRoleRoleID)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleSetReaction, rolereact.SetRoleReaction)
+ dynamicid.HandleDynamicMessageComponent(events, rolereact.HandleDelRole, rolereact.DelRole)
// interaction: /config
- b.HandleMessageComponent(commands.ConfigMessageComponent, commands.OpenConfig)
+ intrs.HandleMessageComponent(commands.OpenConfig, commands.ConfigMessageComponent)
// xp role related
- b.HandleMessageComponent(config.HandleXpRole, config.ModifyXpRole)
- b.HandleMessageComponent(config.HandleXpRoleNew, config.XpRoleNew)
- b.HandleModal(config.HandleXpRoleAdd, config.XpRoleAdd)
- dynamicid.HandleDynamicMessageComponent(&b, config.HandleXpRoleEdit, config.XpRoleEdit)
- dynamicid.HandleDynamicMessageComponent(&b, config.HandleXpRoleEditRole, config.XpRoleEditRole)
- dynamicid.HandleDynamicMessageComponent(&b, config.HandleXpRoleEditLevelStart, config.XpRoleEditLevelStart)
- dynamicid.HandleDynamicModalComponent(&b, config.HandleXpRoleEditLevel, config.XpRoleEditLevel)
- dynamicid.HandleDynamicMessageComponent(&b, config.HandleXpRoleDel, config.XpRoleDel)
+ intrs.HandleMessageComponent(config.ModifyXpRole, func(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) {
+ config.HandleXpRole(ctx, dg, i.Interaction)
+ })
+ intrs.HandleMessageComponent(config.XpRoleNew, config.HandleXpRoleNew)
+ intrs.HandleModalSubmit(config.XpRoleAdd, config.HandleXpRoleAdd)
+ dynamicid.HandleDynamicMessageComponent(events, func(ctx context.Context, dg bot.Session, i *interaction.MessageComponent, params *config.XpRoleId) {
+ config.HandleXpRoleEdit(ctx, dg, i.Interaction, params)
+ }, config.XpRoleEdit)
+ dynamicid.HandleDynamicMessageComponent(events, config.HandleXpRoleEditRole, config.XpRoleEditRole)
+ dynamicid.HandleDynamicMessageComponent(events, config.HandleXpRoleEditLevelStart, config.XpRoleEditLevelStart)
+ dynamicid.HandleDynamicModalComponent(events, config.HandleXpRoleEditLevel, config.XpRoleEditLevel)
+ dynamicid.HandleDynamicMessageComponent(events, config.HandleXpRoleDel, config.XpRoleDel)
// channel related
- b.HandleMessageComponent(func(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) {
- if config.HandleModifyFallbackChannel(s, i, data, resp) {
- commands.ConfigMessageComponent(s, i, data, resp)
+ intrs.HandleMessageComponent(config.ModifyFallbackChannel, func(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) {
+ if config.HandleModifyFallbackChannel(ctx, dg, i) {
+ commands.ConfigMessageComponent(ctx, dg, i)
}
- }, config.ModifyFallbackChannel)
- b.HandleMessageComponent(func(s bot.Session, i *event.InteractionCreate, data *interaction.MessageComponentData, resp *cmd.ResponseBuilder) {
- if config.HandleModifyDisChannel(s, i, data, resp) {
- commands.ConfigMessageComponent(s, i, data, resp)
+ })
+ intrs.HandleMessageComponent(config.ModifyDisChannel, func(ctx context.Context, dg bot.Session, i *interaction.MessageComponent) {
+ if config.HandleModifyDisChannel(ctx, dg, i) {
+ commands.ConfigMessageComponent(ctx, dg, i)
}
- }, config.ModifyDisChannel)
+ })
// reduce related
- b.HandleMessageComponent(config.HandleModifyPeriodicReduceCommand, config.ModifyTimeReduce)
- b.HandleModal(func(s bot.Session, i *event.InteractionCreate, data *interaction.ModalSubmitData, resp *cmd.ResponseBuilder) {
- if config.HandleTimeReduceSet(s, i, data, resp) {
- commands.ConfigModal(s, i, data, resp)
+ intrs.HandleMessageComponent(config.ModifyTimeReduce, config.HandleModifyPeriodicReduceCommand)
+ intrs.HandleModalSubmit(config.TimeReduceSet, func(ctx context.Context, dg bot.Session, i *interaction.ModalSubmit) {
+ if config.HandleTimeReduceSet(ctx, dg, i) {
+ commands.ConfigModal(ctx, dg, i)
}
- }, config.TimeReduceSet)
+ })
// xp handlers
events.AddHandler(OnMessage)
@@ -275,7 +279,7 @@ func main() {
}
}
-func setupTimers(ctx context.Context, dg *discordgo.Session) {
+func setupTimers(ctx context.Context, dg *gokord.Session) {
d := 24 * time.Hour
debug := common.IsDebug(ctx)
if debug {
diff --git a/rolereact/manager.go b/rolereact/manager.go
index 1288b33..ab268f2 100644
--- a/rolereact/manager.go
+++ b/rolereact/manager.go
@@ -13,6 +13,7 @@ import (
"github.com/nyttikord/gokord/channel"
"github.com/nyttikord/gokord/emoji"
"github.com/nyttikord/gokord/event"
+ "github.com/nyttikord/gokord/interaction"
)
func MessageContent(message *config.RoleReactMessage) string {
@@ -31,34 +32,28 @@ func MessageContent(message *config.RoleReactMessage) string {
return content
}
-func ApplyMessageChange(s bot.Session, i *event.InteractionCreate, message *config.RoleReactMessage) string {
+func ApplyMessageChange(ctx context.Context, s bot.Session, i *interaction.Interaction, message *config.RoleReactMessage) string {
messageContent := MessageContent(message)
- _, err := s.ChannelAPI().MessageEditComplex(
- &channel.MessageEdit{
- Content: &messageContent,
- AllowedMentions: &channel.MessageAllowedMentions{},
- Channel: message.ChannelID,
- ID: message.MessageID,
- },
- )
+ _, err := s.ChannelAPI().MessageEditComplex(&channel.MessageEdit{
+ Content: &messageContent,
+ AllowedMentions: &channel.MessageAllowedMentions{},
+ Channel: message.ChannelID,
+ ID: message.MessageID,
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("unable to update rolereact message", "error", err)
+ bot.Logger(ctx).Error("unable to update rolereact message", "error", err)
return "Impossible de mettre à jour le message."
}
for _, role := range message.Roles {
if role.Reaction != "" && role.RoleID != "" && err == nil {
- err = s.ChannelAPI().MessageReactionAdd(
- message.ChannelID,
- message.MessageID,
- role.Reaction,
- )
+ err = s.ChannelAPI().MessageReactionAdd(message.ChannelID, message.MessageID, role.Reaction).Do(ctx)
}
}
if err != nil {
- s.Logger().Error("unable to update reactions on rolereact message", "error", err)
+ bot.Logger(ctx).Error("unable to update reactions on rolereact message", "error", err)
return "Impossible de mettre à jour le message."
}
- cfg := GetGuildConfigPreloaded(i.GuildID)
+ cfg := GetGuildConfigPreloaded(ctx, i.GuildID)
messageIndex := slices.IndexFunc(cfg.RrMessages, func(m config.RoleReactMessage) bool { return m.ID == message.ID })
if messageIndex != -1 {
oldMessage := cfg.RrMessages[messageIndex]
@@ -71,7 +66,7 @@ func ApplyMessageChange(s bot.Session, i *event.InteractionCreate, message *conf
if !ok {
err := oldGokord.DB.Delete(role).Error
if err != nil {
- s.Logger().Error("unable to delete reaction role from database", "error", err)
+ bot.Logger(ctx).Error("unable to delete reaction role from database", "error", err)
return "Impossible de sauvegarder le message de rôle. Merci de contacter l'administrateur du bot."
}
}
@@ -79,13 +74,13 @@ func ApplyMessageChange(s bot.Session, i *event.InteractionCreate, message *conf
cfg.RrMessages[messageIndex] = *message
err := oldGokord.DB.Save(cfg.RrMessages[messageIndex]).Error
if err != nil {
- s.Logger().Error("unable to save rolereaction message in database", "error", err)
+ bot.Logger(ctx).Error("unable to save rolereaction message in database", "error", err)
return "Impossible de sauvegarder le message de rôle. Merci de contacter l'administrateur du bot."
}
for _, role := range cfg.RrMessages[messageIndex].Roles {
err = oldGokord.DB.Save(role).Error
if err != nil {
- s.Logger().Error("unable to save rolereaction role in database", "error", err)
+ bot.Logger(ctx).Error("unable to save rolereaction role in database", "error", err)
return "Impossible de sauvegarder le message de rôle. Merci de contacter l'administrateur du bot."
}
}
@@ -93,8 +88,8 @@ func ApplyMessageChange(s bot.Session, i *event.InteractionCreate, message *conf
return "Message de réaction mis à jour avec succès !"
}
-func WaitForEmoji(s bot.Session, userID string, messageID string) (string, bool) {
- ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
+func WaitForEmoji(ctx context.Context, s bot.Session, userID string, messageID string) (string, bool) {
+ ctx, cancel := context.WithTimeout(ctx, 1*time.Minute)
defer cancel()
emojiChann := make(chan emoji.Emoji)
@@ -115,7 +110,7 @@ func WaitForEmoji(s bot.Session, userID string, messageID string) (string, bool)
}
}
-func GetMessageFromEditID(i *event.InteractionCreate, editID uint) (*config.RoleReactMessage, bool) {
+func GetMessageFromEditID(i *interaction.Interaction, editID uint) (*config.RoleReactMessage, bool) {
cfg := config.GetGuildConfig(i.GuildID)
m, ok := messageEdits[editID]
if !ok || m.GuildConfigID != cfg.ID {
@@ -124,7 +119,7 @@ func GetMessageFromEditID(i *event.InteractionCreate, editID uint) (*config.Role
return m, true
}
-func GetGuildConfigPreloaded(guildID string) *config.GuildConfig {
+func GetGuildConfigPreloaded(ctx context.Context, guildID string) *config.GuildConfig {
cfg := config.GuildConfig{GuildID: guildID}
// err := oldGokord.DB.Where("guild_id = ?", cfg.GuildID).Preload("XpRoles").Preload("RrMessages.Roles").FirstOrCreate(cfg).Error
err := oldGokord.DB.Where("guild_id = ?", cfg.GuildID).Preload("RrMessages.Roles").FirstOrCreate(&cfg).Error
diff --git a/rolereact/rolereact.go b/rolereact/rolereact.go
index 6cb3b5c..2830ab4 100644
--- a/rolereact/rolereact.go
+++ b/rolereact/rolereact.go
@@ -7,12 +7,10 @@ import (
"git.anhgelus.world/anhgelus/les-copaings-bot/config"
"git.anhgelus.world/anhgelus/les-copaings-bot/dynamicid"
- "github.com/anhgelus/gokord/cmd"
"github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/channel"
"github.com/nyttikord/gokord/component"
"github.com/nyttikord/gokord/discord/types"
- "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
@@ -44,22 +42,18 @@ var (
messageEdits map[uint]*config.RoleReactMessage = make(map[uint]*config.RoleReactMessage)
)
-func HandleCommand(
- s bot.Session,
- i *event.InteractionCreate,
- o cmd.OptionMap,
- resp *cmd.ResponseBuilder,
-) {
- err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
+func HandleCommand(ctx context.Context, dg bot.Session, i *interaction.ApplicationCommand) {
+ err := dg.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseDeferredChannelMessageWithSource,
Data: &interaction.ResponseData{
Flags: channel.MessageFlagsEphemeral,
},
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("unable to defer interaction", "error", err)
+ bot.Logger(ctx).Error("unable to defer interaction", "error", err)
return
}
+ o := i.OptionMap()
c := o["salon"]
var channelID string
if c != nil {
@@ -73,36 +67,35 @@ func HandleCommand(
GuildID: i.GuildID,
}
messageContent := MessageContent(&message)
- m, err := s.ChannelAPI().MessageSendComplex(
- channelID, &channel.MessageSend{
- Content: messageContent,
- AllowedMentions: &channel.MessageAllowedMentions{},
- },
- )
+ m, err := dg.ChannelAPI().MessageSendComplex(channelID, &channel.MessageSend{
+ Content: messageContent,
+ AllowedMentions: &channel.MessageAllowedMentions{},
+ },
+ ).Do(ctx)
if err != nil {
- _, err := s.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
+ _, err := dg.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
Flags: channel.MessageFlagsIsComponentsV2,
Components: []component.Message{&component.TextDisplay{Content: fmt.Sprintf("Impossible d'envoyer le message : %s", err.Error())}},
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send message", "error", err)
+ bot.Logger(ctx).Error("Unable to send message", "error", err)
}
return
}
message.MessageID = m.ID
- cfg := GetGuildConfigPreloaded(i.GuildID)
+ cfg := GetGuildConfigPreloaded(ctx, i.GuildID)
cfg.RrMessages = append(cfg.RrMessages, message)
err = cfg.Save()
if err != nil {
- s.Logger().Error("Unable to save rolereact message in database", "error", err)
- _, err := s.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
+ bot.Logger(ctx).Error("Unable to save rolereact message in database", "error", err)
+ _, err := dg.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
Flags: channel.MessageFlagsIsComponentsV2,
Components: []component.Message{
&component.TextDisplay{Content: "Impossible d'enregistrer le message dans la base de données. Merci de contacter l'administrateur du bot."},
},
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("unable to send message", "error", err)
+ bot.Logger(ctx).Error("unable to send message", "error", err)
}
return
}
@@ -111,27 +104,23 @@ func HandleCommand(
editID := messageCounter
messageCounter++
- components := MessageModifyComponents(i, &EditID{MessageEditID: editID})
+ components := MessageModifyComponents(i.Interaction, &EditID{MessageEditID: editID})
// Using this function here is deprecated as per discord documentation.
// That said, using the recommended EditResponse endpoint does not allow the use of
// version 2 components...
- _, err = s.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
+ _, err = dg.InteractionAPI().FollowupMessageCreate(i.Interaction, false, &channel.WebhookParams{
Flags: channel.MessageFlagsIsComponentsV2,
Components: components,
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send edit rolereact message", "error", err)
+ bot.Logger(ctx).Error("Unable to send edit rolereact message", "error", err)
}
}
-func HandleModifyCommand(
- ctx context.Context,
- s bot.Session,
- cmd *interaction.ApplicationCommand,
-) {
+func HandleModifyCommand(ctx context.Context, dg bot.Session, i *interaction.ApplicationCommand) {
logger := bot.Logger(ctx)
- messageId := cmd.Data.TargetID
- cfg := GetGuildConfigPreloaded(cmd.GuildID)
+ messageId := i.Data.TargetID
+ cfg := GetGuildConfigPreloaded(ctx, i.GuildID)
var target *config.RoleReactMessage
var targetEditID uint
for editID, message := range messageEdits {
@@ -147,7 +136,7 @@ func HandleModifyCommand(
}
}
if target == nil {
- err := s.InteractionAPI().Respond(cmd.Interaction, &interaction.Response{
+ err := dg.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseChannelMessageWithSource,
Data: &interaction.ResponseData{
Flags: channel.MessageFlagsEphemeral,
@@ -163,39 +152,27 @@ func HandleModifyCommand(
targetEditID = messageCounter
messageCounter++
}
- err := s.InteractionAPI().Respond(cmd.Interaction, &interaction.Response{
+ err := dg.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseChannelMessageWithSource,
- Data: MessageModifyData(cmd, &EditID{MessageEditID: targetEditID}),
+ Data: MessageModifyData(ctx, i.Interaction, &EditID{MessageEditID: targetEditID}),
}).Do(ctx)
if err != nil {
logger.Error("Unable to send modify rolereact message", "error", err)
}
}
-func HandleModifyComponent(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditID,
- resp *cmd.ResponseBuilder,
-) {
+func HandleModifyComponent(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditID) {
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
- Data: MessageModifyData(i, parameters),
- })
+ Data: MessageModifyData(ctx, i.Interaction, params),
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send modify rolereact message", "error", err)
+ bot.Logger(ctx).Error("Unable to send modify rolereact message", "error", err)
}
}
-func HandleResetMessage(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditID,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleResetMessage(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditID) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
var responseData interaction.ResponseData
if !ok {
responseData = interaction.ResponseData{
@@ -205,31 +182,25 @@ func HandleResetMessage(
},
}
} else {
- cfg := GetGuildConfigPreloaded(i.GuildID)
+ cfg := GetGuildConfigPreloaded(ctx, i.GuildID)
for _, m := range cfg.RrMessages {
if m.ID == message.ID {
- messageEdits[parameters.MessageEditID] = &m
+ messageEdits[params.MessageEditID] = &m
}
}
- responseData = *MessageModifyData(i, parameters)
+ responseData = *MessageModifyData(ctx, i.Interaction, params)
}
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
Data: &responseData,
})
if err != nil {
- s.Logger().Error("Unable to send reset message message", "error", err)
+ bot.Logger(ctx).Error("Unable to send reset message message", "error", err)
}
}
-func HandleStartSetNote(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditID,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleStartSetNote(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditID) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
if !ok {
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
@@ -241,42 +212,32 @@ func HandleStartSetNote(
},
})
if err != nil {
- s.Logger().Error("Unable to send message edit not found message", "error", err)
+ bot.Logger(ctx).Error("Unable to send message edit not found message", "error", err)
}
return
}
- err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
- Type: types.InteractionResponseModal,
- Data: &interaction.ResponseData{
- Title: "Changer la description",
- CustomID: dynamicid.FormatCustomID(SetNote, *parameters),
- Components: []component.Component{
- &component.Label{
- Label: "Nouvelle description",
- Description: "Description affichée sur votre message de réaction",
- Component: &component.TextInput{
- Style: component.TextInputParagraph,
- MaxLength: 2000,
- CustomID: "note",
- Value: message.Note,
- },
- },
+ resp := interaction.NewModalResponse().
+ Title("Changer la description").
+ CustomID(dynamicid.FormatCustomID(SetNote, *params)).
+ AddComponent(&component.Label{
+ Label: "Nouvelle description",
+ Description: "Description affichée sur votre message de réaction",
+ Component: &component.TextInput{
+ Style: component.TextInputParagraph,
+ MaxLength: 2000,
+ CustomID: "note",
+ Value: message.Note,
},
- },
- })
+ }).
+ Response()
+ err := s.InteractionAPI().Respond(i.Interaction, resp).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send edit note modal", "error", err)
+ bot.Logger(ctx).Error("Unable to send edit note modal", "error", err)
}
}
-func HandleSetNote(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.ModalSubmitData,
- parameters *EditID,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleSetNote(ctx context.Context, s bot.Session, i *interaction.ModalSubmit, params *EditID) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
if !ok {
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
@@ -288,28 +249,22 @@ func HandleSetNote(
},
})
if err != nil {
- s.Logger().Error("unable to send set note error message", "error", err)
+ bot.Logger(ctx).Error("unable to send set note error message", "error", err)
}
return
}
- message.Note = data.Components[0].(*component.Label).Component.(*component.TextInput).Value
+ message.Note = i.Data.Components[0].(*component.Label).Component.(*component.TextInput).Value
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
- Data: MessageModifyData(i, parameters),
+ Data: MessageModifyData(ctx, i.Interaction, params),
})
if err != nil {
- s.Logger().Error("Unable to send updated note message", "error", err)
+ bot.Logger(ctx).Error("Unable to send updated note message", "error", err)
}
}
-func HandleApplyMessage(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditID,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleApplyMessage(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditID) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
var responseData interaction.ResponseData
if !ok {
responseData = interaction.ResponseData{
@@ -323,35 +278,29 @@ func HandleApplyMessage(
Data: &responseData,
})
if err != nil {
- s.Logger().Error("unable to send apply message error message", "error", err)
+ bot.Logger(ctx).Error("unable to send apply message error message", "error", err)
}
return
}
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseDeferredChannelMessageWithSource,
Data: &interaction.ResponseData{Flags: channel.MessageFlagsEphemeral},
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to defer interaction", "error", err)
+ bot.Logger(ctx).Error("Unable to defer interaction", "error", err)
return
}
- m := ApplyMessageChange(s, i, message)
+ m := ApplyMessageChange(ctx, s, i.Interaction, message)
_, err = s.InteractionAPI().ResponseEdit(i.Interaction, &channel.WebhookEdit{
Content: &m,
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send apply rolereaction message changes", "error", err)
+ bot.Logger(ctx).Error("Unable to send apply rolereaction message changes", "error", err)
}
}
-func HandleNewRole(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditID,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleNewRole(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditID) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
var responseData interaction.ResponseData
if !ok {
responseData = interaction.ResponseData{
@@ -362,7 +311,7 @@ func HandleNewRole(
}
} else {
message.Roles = append(message.Roles, &config.RoleReact{CounterID: roleCounter})
- responseData = MessageModifyRoleData(i, &EditIDWithRole{MessageEditID: parameters.MessageEditID, RoleCounterID: roleCounter}, "")
+ responseData = MessageModifyRoleData(i.Interaction, &EditIDWithRole{MessageEditID: params.MessageEditID, RoleCounterID: roleCounter}, "")
roleCounter++
}
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
@@ -370,18 +319,12 @@ func HandleNewRole(
Data: &responseData,
})
if err != nil {
- s.Logger().Error("Unable to send modify reaction role message", "error", err)
+ bot.Logger(ctx).Error("Unable to send modify reaction role message", "error", err)
}
}
-func HandleOpenRole(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditIDWithRole,
- resp *cmd.ResponseBuilder,
-) {
- _, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleOpenRole(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditIDWithRole) {
+ _, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
var responseData interaction.ResponseData
if !ok {
responseData = interaction.ResponseData{
@@ -391,29 +334,23 @@ func HandleOpenRole(
},
}
} else {
- responseData = MessageModifyRoleData(i, parameters, "")
+ responseData = MessageModifyRoleData(i.Interaction, params, "")
}
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
Data: &responseData,
})
if err != nil {
- s.Logger().Error("Unable to send open reaction role message", "error", err)
+ bot.Logger(ctx).Error("Unable to send open reaction role message", "error", err)
}
}
-func HandleSetRole(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditIDWithRole,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleSetRole(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditIDWithRole) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
var responseData interaction.ResponseData
var role *config.RoleReact
if ok {
- roleIndex := slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == parameters.RoleCounterID })
+ roleIndex := slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == params.RoleCounterID })
if roleIndex != -1 {
role = message.Roles[roleIndex]
}
@@ -426,29 +363,23 @@ func HandleSetRole(
},
}
} else {
- role.RoleID = data.Values[0]
- responseData = MessageModifyRoleData(i, parameters, "")
+ role.RoleID = i.Data.Values[0]
+ responseData = MessageModifyRoleData(i.Interaction, params, "")
}
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
Data: &responseData,
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send open reaction role message", "error", err)
+ bot.Logger(ctx).Error("Unable to send open reaction role message", "error", err)
}
}
-func HandleSetReaction(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditIDWithRole,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleSetReaction(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditIDWithRole) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
var role *config.RoleReact
if ok {
- roleIndex := slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == parameters.RoleCounterID })
+ roleIndex := slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == params.RoleCounterID })
if roleIndex != -1 {
role = message.Roles[roleIndex]
}
@@ -462,66 +393,61 @@ func HandleSetReaction(
&component.TextDisplay{Content: "Impossible de trouver la modification de message. Veuillez réessayer."},
},
},
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send open reaction role message", "error", err)
+ bot.Logger(ctx).Error("Unable to send open reaction role message", "error", err)
}
return
}
- responseData := MessageModifyRoleData(i, parameters, "Ajoute la réaction que tu veux choisir au message de rôle de réaction (tu peux y accéder avec le bouton ci-dessous)")
+ responseData := MessageModifyRoleData(i.Interaction, params, "Ajoute la réaction que tu veux choisir au message de rôle de réaction (tu peux y accéder avec le bouton ci-dessous)")
+ //TODO: handle errors here
s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
Type: types.InteractionResponseUpdateMessage,
Data: &responseData,
- })
- emojiName, ok := WaitForEmoji(s, i.Member.User.ID, message.MessageID)
+ }).Do(ctx)
+ emojiName, ok := WaitForEmoji(ctx, s, i.Member.User.ID, message.MessageID)
if !ok {
- editResponseComponents := MessageModifyRoleComponents(i, parameters, "Le temps d'attente a été dépassé")
+ editResponseComponents := MessageModifyRoleComponents(i.Interaction, params, "Le temps d'attente a été dépassé")
_, err := s.InteractionAPI().ResponseEdit(i.Interaction, &channel.WebhookEdit{
Components: &editResponseComponents,
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("unable to send timed out reaction message", "error", err)
+ bot.Logger(ctx).Error("unable to send timed out reaction message", "error", err)
}
return
}
- err := s.ChannelAPI().MessageReactionAdd(message.ChannelID, message.MessageID, emojiName)
+ err := s.ChannelAPI().MessageReactionAdd(message.ChannelID, message.MessageID, emojiName).Do(ctx)
if err != nil {
- editResponseComponents := MessageModifyRoleComponents(i, parameters, "La réaction n'est pas utilisable. Cela peut être résolu en l'ajoutant à ce serveur")
+ editResponseComponents := MessageModifyRoleComponents(i.Interaction, params, "La réaction n'est pas utilisable. Cela peut être résolu en l'ajoutant à ce serveur")
_, err := s.InteractionAPI().ResponseEdit(i.Interaction, &channel.WebhookEdit{
Components: &editResponseComponents,
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("unable to send unusable reaction message", "error", err)
+ bot.Logger(ctx).Error("unable to send unusable reaction message", "error", err)
}
return
}
- err = s.ChannelAPI().MessageReactionRemove(message.ChannelID, message.MessageID, emojiName, i.Member.User.ID)
+ err = s.ChannelAPI().MessageReactionRemove(message.ChannelID, message.MessageID, emojiName, i.Member.User.ID).Do(ctx)
if err != nil {
- s.Logger().Warn("unable to remove author reaction from message", "error", err)
+ bot.Logger(ctx).Warn("unable to remove author reaction from message", "error", err)
}
role.Reaction = emojiName
- components := MessageModifyRoleComponents(i, parameters, "")
+ components := MessageModifyRoleComponents(i.Interaction, params, "")
_, err = s.InteractionAPI().ResponseEdit(i.Interaction, &channel.WebhookEdit{
Flags: channel.MessageFlagsIsComponentsV2 | channel.MessageFlagsEphemeral,
Components: &components,
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to edit original response", "error", err)
+ bot.Logger(ctx).Error("Unable to edit original response", "error", err)
}
}
-func HandleDelRole(
- s bot.Session,
- i *event.InteractionCreate,
- data *interaction.MessageComponentData,
- parameters *EditIDWithRole,
- resp *cmd.ResponseBuilder,
-) {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func HandleDelRole(ctx context.Context, s bot.Session, i *interaction.MessageComponent, params *EditIDWithRole) {
+ message, ok := GetMessageFromEditID(i.Interaction, params.MessageEditID)
roleIndex := -1
if ok {
- roleIndex = slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == parameters.RoleCounterID })
+ roleIndex = slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == params.RoleCounterID })
}
if !ok || roleIndex == -1 {
err := s.InteractionAPI().Respond(i.Interaction, &interaction.Response{
@@ -532,9 +458,9 @@ func HandleDelRole(
&component.TextDisplay{Content: "Impossible de trouver la modification de message. Veuillez réessayer."},
},
},
- })
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send open reaction role message", "error", err)
+ bot.Logger(ctx).Error("Unable to send open reaction role message", "error", err)
}
return
}
@@ -544,9 +470,9 @@ func HandleDelRole(
err := s.InteractionAPI().Respond(i.Interaction,
&interaction.Response{
Type: types.InteractionResponseUpdateMessage,
- Data: MessageModifyData(i, &EditID{MessageEditID: parameters.MessageEditID}),
- })
+ Data: MessageModifyData(ctx, i.Interaction, &EditID{MessageEditID: params.MessageEditID}),
+ }).Do(ctx)
if err != nil {
- s.Logger().Error("Unable to send modify message message", "error", err)
+ bot.Logger(ctx).Error("Unable to send modify message message", "error", err)
}
}
diff --git a/rolereact/views.go b/rolereact/views.go
index 3ecfe13..7b31ec4 100644
--- a/rolereact/views.go
+++ b/rolereact/views.go
@@ -1,6 +1,7 @@
package rolereact
import (
+ "context"
"fmt"
"slices"
@@ -9,12 +10,11 @@ import (
"github.com/nyttikord/gokord/channel"
"github.com/nyttikord/gokord/component"
"github.com/nyttikord/gokord/discord/types"
- "github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/interaction"
)
-func MessageModifyComponents(i *event.InteractionCreate, parameters *EditID) []component.Message {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func MessageModifyComponents(i *interaction.Interaction, params *EditID) []component.Message {
+ message, ok := GetMessageFromEditID(i, params.MessageEditID)
if !ok {
return []component.Message{
&component.TextDisplay{Content: "Cette modification est trop vieille et a été oubliée."},
@@ -34,7 +34,7 @@ func MessageModifyComponents(i *event.InteractionCreate, parameters *EditID) []c
Accessory: &component.Button{
Label: "Modifier",
Style: component.ButtonStyleSecondary,
- CustomID: dynamicid.FormatCustomID(SetNote, *parameters),
+ CustomID: dynamicid.FormatCustomID(SetNote, *params),
},
},
&component.Separator{},
@@ -61,7 +61,7 @@ func MessageModifyComponents(i *event.InteractionCreate, parameters *EditID) []c
Accessory: &component.Button{
Label: "Modifier",
Style: component.ButtonStyleSecondary,
- CustomID: dynamicid.FormatCustomID(OpenRole, EditIDWithRole{parameters.MessageEditID, role.CounterID}),
+ CustomID: dynamicid.FormatCustomID(OpenRole, EditIDWithRole{params.MessageEditID, role.CounterID}),
},
})
}
@@ -76,7 +76,7 @@ func MessageModifyComponents(i *event.InteractionCreate, parameters *EditID) []c
&component.Button{
Style: component.ButtonStylePrimary,
Label: "Ajouter",
- CustomID: dynamicid.FormatCustomID(NewRole, EditID{MessageEditID: parameters.MessageEditID}),
+ CustomID: dynamicid.FormatCustomID(NewRole, EditID{MessageEditID: params.MessageEditID}),
Disabled: len(message.Roles) >= 20,
},
},
@@ -87,12 +87,12 @@ func MessageModifyComponents(i *event.InteractionCreate, parameters *EditID) []c
&component.Button{
Label: "Appliquer",
Style: component.ButtonStylePrimary,
- CustomID: dynamicid.FormatCustomID(ApplyMessage, EditID{MessageEditID: parameters.MessageEditID}),
+ CustomID: dynamicid.FormatCustomID(ApplyMessage, EditID{MessageEditID: params.MessageEditID}),
},
&component.Button{
Label: "Réinitialiser",
Style: component.ButtonStyleDanger,
- CustomID: dynamicid.FormatCustomID(ResetMessage, *parameters),
+ CustomID: dynamicid.FormatCustomID(ResetMessage, *params),
},
&component.Button{
Label: "Message",
@@ -108,9 +108,9 @@ func MessageModifyComponents(i *event.InteractionCreate, parameters *EditID) []c
}
}
-func MessageModifyData(i *event.InteractionCreate, parameters *EditID) *interaction.ResponseData {
+func MessageModifyData(ctx context.Context, i *interaction.Interaction, params *EditID) *interaction.ResponseData {
components := []component.Component{}
- for _, component := range MessageModifyComponents(i, parameters) {
+ for _, component := range MessageModifyComponents(i, params) {
components = append(components, component)
}
responseData := &interaction.ResponseData{
@@ -120,11 +120,11 @@ func MessageModifyData(i *event.InteractionCreate, parameters *EditID) *interact
return responseData
}
-func MessageModifyRoleComponents(i *event.InteractionCreate, parameters *EditIDWithRole, emojiMessage string) []component.Message {
- message, ok := GetMessageFromEditID(i, parameters.MessageEditID)
+func MessageModifyRoleComponents(i *interaction.Interaction, params *EditIDWithRole, emojiMessage string) []component.Message {
+ message, ok := GetMessageFromEditID(i, params.MessageEditID)
var role *config.RoleReact
if ok {
- roleIndex := slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == parameters.RoleCounterID })
+ roleIndex := slices.IndexFunc(message.Roles, func(role *config.RoleReact) bool { return role.CounterID == params.RoleCounterID })
if roleIndex != -1 {
role = message.Roles[roleIndex]
}
@@ -145,7 +145,7 @@ func MessageModifyRoleComponents(i *event.InteractionCreate, parameters *EditIDW
reactionButton = component.Button{Label: "Ajouter", Style: component.ButtonStylePrimary}
disableBack = true
}
- reactionButton.CustomID = dynamicid.FormatCustomID(SetRoleReaction, *parameters)
+ reactionButton.CustomID = dynamicid.FormatCustomID(SetRoleReaction, *params)
defaultRoleValues := make([]component.SelectMenuDefaultValue, 0)
if role.RoleID != "" {
defaultRoleValues = append(defaultRoleValues, component.SelectMenuDefaultValue{
@@ -173,7 +173,7 @@ func MessageModifyRoleComponents(i *event.InteractionCreate, parameters *EditIDW
&component.ActionsRow{Components: []component.Message{
&component.SelectMenu{
MenuType: types.SelectMenuRole,
- CustomID: dynamicid.FormatCustomID(SetRoleRoleID, *parameters),
+ CustomID: dynamicid.FormatCustomID(SetRoleRoleID, *params),
MinValues: &one, MaxValues: 1,
Placeholder: "Sélectionner un rôle",
DefaultValues: defaultRoleValues,
@@ -183,7 +183,7 @@ func MessageModifyRoleComponents(i *event.InteractionCreate, parameters *EditIDW
&component.Button{
Style: component.ButtonStyleDanger,
Label: "Supprimer",
- CustomID: dynamicid.FormatCustomID(DelRole, *parameters),
+ CustomID: dynamicid.FormatCustomID(DelRole, *params),
},
}},
&component.Separator{},
@@ -192,7 +192,7 @@ func MessageModifyRoleComponents(i *event.InteractionCreate, parameters *EditIDW
Label: "Retour",
Style: component.ButtonStyleSecondary,
Disabled: disableBack,
- CustomID: dynamicid.FormatCustomID(OpenMessage, EditID{MessageEditID: parameters.MessageEditID}),
+ CustomID: dynamicid.FormatCustomID(OpenMessage, EditID{MessageEditID: params.MessageEditID}),
},
&component.Button{
Label: "Message", Style: component.ButtonStyleLink,
@@ -205,9 +205,9 @@ func MessageModifyRoleComponents(i *event.InteractionCreate, parameters *EditIDW
}}
}
-func MessageModifyRoleData(i *event.InteractionCreate, parameters *EditIDWithRole, emojiMessage string) interaction.ResponseData {
+func MessageModifyRoleData(i *interaction.Interaction, params *EditIDWithRole, emojiMessage string) interaction.ResponseData {
components := []component.Component{}
- for _, component := range MessageModifyRoleComponents(i, parameters, emojiMessage) {
+ for _, component := range MessageModifyRoleComponents(i, params, emojiMessage) {
components = append(components, component)
}
return interaction.ResponseData{