Option_commands - discord-php/DiscordPHP GitHub Wiki
Options are part of Components.
use Discord\Parts\Interactions\Command\Option;
Methods
addChoice()
addOption()
removeChoice()
removeOption()
setAutoComplete()
setChannelTypes()
setDescription()
setDescriptionLocalization()
setMaxLength()
setMaxValue()
setMinLength()
setMinValue()
setName()
setNameLocalization()
setRequired()
setType()
Types
ATTACHMENT
BOOLEAN
CHANNEL
INTEGER
MENTIONABLE
NUMBER
ROLE
STRING
SUB_COMMAND
SUB_COMMAND_GROUP
USER
Slash Commands
Add options toIn 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) {
$user = $interaction->data->resolved->users->first();
$interaction->respondWithMessage(MessageBuilder::new()->setContent("Hello, {$user}"));
});
Send a custom message
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('say')
->setDescriptions('Say a phrase')
->addOption((new Option($discord))
->setName('text')
->setDescription('Phrase')
->setType(Option::STRING)
->setRequired(true)
)
->toArray()
));
and then for manage the command when executed:
$discord->listenCommand('greet', function (Interaction $interaction) {
$content = $interaction->data->options->offsetGet('text')->value;
$interaction->respondWithMessage(MessageBuilder::new()->setContent($content));
});
Ephemeral messages with Interaction response
$discord->listenCommand('mycommand', function (Interaction $interaction) {
// ...
$interaction->respondWithMessage(MessageBuilder::new()->setContent($content), true);
});
Note To retrieve the associative array directly from the command and turn it into an object without having to retrieve each argument first, you can do this. It turns out, however, that it is not recommended to use.
$args = (object)$interaction->data->options->toArray();