From 02e7ea559bae7ec54aa292e4f182291a67e5de57 Mon Sep 17 00:00:00 2001 From: Yusta <53965703+NotYusta@users.noreply.github.com> Date: Sun, 6 Oct 2024 23:47:26 +0700 Subject: [PATCH] feat(interactions): add GetOption method to interaction data structs (#1535) * Add ApplicationCommandInteractionData.GetOption * Add ApplicationCommandInteractionDataOption.GetOption --------- Co-authored-by: Fedor Lapshin --- interactions.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/interactions.go b/interactions.go index 93ba366..59dc047 100644 --- a/interactions.go +++ b/interactions.go @@ -346,6 +346,18 @@ type ApplicationCommandInteractionData struct { TargetID string `json:"target_id"` } +// GetOption finds and returns an application command option by its name. +func (d ApplicationCommandInteractionData) GetOption(name string) (option *ApplicationCommandInteractionDataOption) { + for _, opt := range d.Options { + if opt.Name == name { + option = opt + break + } + } + + return +} + // ApplicationCommandInteractionDataResolved contains resolved data of command execution. // Partial Member objects are missing user, deaf and mute fields. // Partial Channel objects only have id, name, type and permissions fields. @@ -428,6 +440,18 @@ type ApplicationCommandInteractionDataOption struct { Focused bool `json:"focused,omitempty"` } +// GetOption finds and returns an application command option by its name. +func (o ApplicationCommandInteractionDataOption) GetOption(name string) (option *ApplicationCommandInteractionDataOption) { + for _, opt := range o.Options { + if opt.Name == name { + option = opt + break + } + } + + return +} + // IntValue is a utility function for casting option value to integer func (o ApplicationCommandInteractionDataOption) IntValue() int64 { if o.Type != ApplicationCommandOptionInteger {