Skip to content
FoxWorn3365 edited this page Jan 24, 2023 · 8 revisions

Options are part of Components.

use Discord\Parts\Interactions\Command\Option;

ATTACHMENT

BOOLEAN

CHANNEL

INTEGER

MENTIONABLE

NUMBER

ROLE

STRING

SUB_COMMAND

SUB_COMMAND_GROUP

USER


Add options to Slash Commands

In this case, the example proposed in the link above is used.

use Discord\Builders\CommandBuilder;

//...

$discord->application->commands->save($discord->application->commands->create(CommandBuilder::new()
  ->setName('greet') 
  ->setDescriptions('Greet an user')
  ->addOption((new Option($discord))
    ->setName('user')
    ->setDescription('User to greet')
    ->setType(Option::USER)
    ->setRequired(true)
  )
  ->toArray()
));

Then:

// Handle
$discord->listenCommand('greet', function (Interaction $interaction) {
  $args = $interaction->data->options->toArray();
  $interaction->respondWithMessage(MessageBuilder::new()->setContent('Hello, <@[' . $args['user']['value'] . '>!'));
});

If you want an Object:

// ...
  $args = (object)$interaction->data->options->toArray();
// ..

ⓘ Note
If you need to easily recover the data instead of using the Collector you can do it like this BUT is not recommended, rather it is better to use the above method:

  $args = json_decode(json_encode($interaction->data->options));
Clone this wiki locally