Socket
Socket
Sign inDemoInstall

discord-interactions

Package Overview
Dependencies
1
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    discord-interactions

Helpers for discord interactions


Version published
Weekly downloads
9.2K
decreased by-33.36%
Maintainers
1
Install size
199 kB
Created
Weekly downloads
 

Readme

Source

discord-interactions

version Build Status Downloads

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

Installation

npm install discord-interactions

Usage

Use the InteractionType and InteractionResponseType enums to figure out how to respond to a webhook.

Use verifyKey to check a request signature:

 const signature = req.get('X-Signature-Ed25519');
 const timestamp = req.get('X-Signature-Timestamp');
 const isValidRequest = verifyKey(req.rawBody, signature, timestamp, 'MY_CLIENT_PUBLIC_KEY');
 if (!isValidRequest) {
   return res.status(401).end('Bad request signature');
 }

Note that req.rawBody must be populated by a middleware (it is also set by some cloud function providers).

If you're using an express-like API, you can simplify things by using the verifyKeyMiddleware. For example:

app.post('/interactions', verifyKeyMiddleware('MY_CLIENT_PUBLIC_KEY'), (req, res) => {
  const message = req.body;
  if (message.type === InteractionType.APPLICATION_COMMAND) {
    res.send({
      type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
      data: {
        content: 'Hello world',
      },
    });
  }
});

Make sure that you do not use other middlewares like body-parser, which tamper with the request body, for interaction routes.

Exports

This module exports the following:

InteractionType

An enum of interaction types that can be POSTed to your webhook endpoint.

InteractionResponseType

An enum of response types you may provide in reply to Discord's webhook.

InteractionResponseFlags

An enum of flags you can set on your response data.

MessageComponentTypes

An enum of message component types that can be used in messages and modals.

Message components

Types for the different message component structures: Button, ActionRow, StringSelect, and InputText.

Also includes the enums ButtonStyleTypes and TextStyleTypes, and a StringSelectOption type.

verifyKey(rawBody: Buffer, signature: string, timestamp: string, clientPublicKey: string): Promise<boolean>

Verify a signed payload POSTed to your webhook endpoint.

verifyKeyMiddleware(clientPublicKey: string)

Express-style middleware that will verify request signatures (make sure you include this before any other middleware that modifies the request body).

Keywords

FAQs

Last updated on 08 May 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc