diff options
Diffstat (limited to 'dynamicid')
| -rw-r--r-- | dynamicid/handling.go | 67 |
1 files changed, 29 insertions, 38 deletions
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) }) } |
