discord/interactions

Utils for implementing the Discord Interactions API

2.2.0 2022-02-09 17:58 UTC

This package is not auto-updated.

Last update: 2024-12-12 08:14:35 UTC


README

Types and helper functions that may come in handy when you implement a Discord Interactions webhook.

Installation

Install from packagist:

composer require discord/interactions

Validating request signatures requires the simplito/elliptic-php package to be installed, which requires the php-gmp extension to be enabled:

composer require simplito/elliptic-php

Usage

Use InteractionType and InteractionResponseType to interpret and respond to webhooks.

Use InteractionResponseFlags to make your response special.

Use verifyKey to check a request signature. Note you must install the simplito/elliptic-php package first. For example:

use Discord\Interaction;
use Discord\InteractionResponseType;

$CLIENT_PUBLIC_KEY = getenv('CLIENT_PUBLIC_KEY');

$signature = $_SERVER['HTTP_X_SIGNATURE_ED25519'];
$timestamp = $_SERVER['HTTP_X_SIGNATURE_TIMESTAMP'];
$postData = file_get_contents('php://input');

if (Interaction::verifyKey($postData, $signature, $timestamp, $CLIENT_PUBLIC_KEY)) {
  echo json_encode(array(
    'type' => InteractionResponseType::PONG
  ));
} else {
  http_response_code(401);
  echo "Not verified";
}