Skip to content
SQKo edited this page Jun 25, 2022 · 19 revisions

Formerly known as slash commands, DiscordPHP v7+ supports all types of Discord Application Commands

Here is the example of /ping command:

<?php

include __DIR__.'/vendor/autoload.php';

use Discord\Builders\MessageBuilder;
use Discord\Discord;
use Discord\Parts\Interactions\Command\Command; // Please note to use this correct namespace!
use Discord\Parts\Interactions\Interaction;

$discord = new Discord(['token'=> 'your bot token']);
$discord->on('ready', function (Discord $discord) {
    // When bot is ready, attempt to create a global slash command "/ping"
    $command = new Command($discord, ['name' => 'ping', 'description' => 'Pong!']);
    $discord->application->commands->save($command);
});

// Handle the command
$discord->listenCommand('ping', function (Interaction $interaction) {
    // Respond the /ping command with interaction message "pong!"
    $interaction->respondWithMessage(MessageBuilder::new()->setContent('pong!'));
});

Command is registered:

discordslashcommandping

Handle reply:

discordslashcommandpingresponse

For more information about Interaction, see the documentation.

Application Command scope

You may notice that your command does not show up in the guild even if it's already registered or showing in the Bot's Direct Message.

In order for your global application command to show up in a guild, you must authorize the Bot using applications.commands scope, the URL can be generated from Discord Developers Portal discordapplicationcommandsscope

And then you can double check the command in Server Settings > Integrations

discordapplicationcommandintegration

Guild Command

Just like global application commands, you need to save it in the Guild repository instead.

$guildCommand = new Command($discord, ['name' => 'ping', 'description' => 'Pong!']);
$guild->commands->save($guildCommand);

Old slash library

If you are previously using DiscordPHP v6.x and DiscordPHP-Slash, slash commands are now integrated into the main library. You no longer need the DiscordPHP-Slash library anymore! Read how to upgrade here: https://github.com/discord-php/DiscordPHP/blob/master/V7_CONVERSION.md#slash-commands

Clone this wiki locally