Skip to content

🤖 A powerful Javascript library to work with discords interactions

License

Notifications You must be signed in to change notification settings

fb-sean/interactions.js

Repository files navigation

Table of Contents

About

interactions.js is a powerful Node.js module that makes it easy to create and handle Discord interactions. It provides a comprehensive set of features and utilities that help developers to seamlessly integrate interactions into their Discord bots and applications.

Some key features of interactions.js include:

  • Object-oriented: Interactions are represented as classes which makes the API simple and intuitive to use.
  • Performant: Built on top of discord.js and optimized for performance.
  • Inbuilt Cache: Comes with an in-memory cache to store interactions for faster responses.
  • Easy to use: Simple and intuitive API that is easy to integrate into existing bots and applications.
  • Robust: Provides utilities for building complex interactions with features like autocomplete, modal forms etc.
  • Extensible: Easy to extend and customize through plugins and middleware.

Getting Started

Installation

Prerequisites: Node.js 16.9.0 or newer is required.

  • To install interactions.js, run the following command:
npm install interactions.js

//This installs interactions.js and its dependencies using npm.

Example

Here is a basic example of how to get started with interactions.js:

  • Create an Application instance
const { Application } = require("interactions.js");

  const Client = new Application({
    botToken: process.env.TOKEN, // Your Bot Token
    publicKey: process.env.PUBLICKEY, // The Application Public Key
    applicationId: process.env.APPLICATIONID, // The Application ID
  });

This creates the Application instance with the required authentication details and starts the client. It connects to Discord and initializes the interactions.js library.

  • Start the client:
  Client.start().then(() => {
     console.log("Client Started");
    });  

  Client.on("debug", debug => console.log(debug));

This logs any debug information from the client to the console.

  • Create an Interaction Command:
   Client.setAppCommands([{
    name: "ping",
    description: "Pong!",
        },
    ]).catch(console.log);

This creates a ping command and registers it with the client. The .catch() handles any errors from registering the command.

  • Create Handle interaction events:
// Handle interaction events:
Client.on("interactionCreate", async (i) => {
  if (i.commandName === "ping") {
    return i.reply({
      content: "Pong!",
      ephemeral: true,
    });
  }
});
See Full Example Code
    const { Application } = require("interactions.js");

    const Client = new Application({
            botToken: process.env.TOKEN, // Your Bot Token
            publicKey: process.env.PUBLICKEY, // The Application Public Key
            applicationId: process.env.APPLICATIONID, // The Application ID
        });

        /**
         * After calling start(), the api starts on port 8221 in this example and you need to set your application's interaction url to https://your-domain.com/interactions
         * 
         * The /interactions parts is required and you can't change it.
         */

    Client.start().then(() => {
        console.log("Client Started");
        });  

    Client.on("debug", debug => console.log(debug));

    // Create an Interaction Command:
    Client.setAppCommands([{
        name: "ping",
        description: "Pong!",
            },
        ]).catch(console.log);

    // Handle interaction events:
    Client.on("interactionCreate", async (i) => {
    if (i.commandName === "ping") {
        return i.reply({
        content: "Pong!",
        ephemeral: true,
        });
    }
    });

    //Once you have followed these steps, you will be able to start receiving and handling interactions from your Discord bot.

see above code for details on setting up interactions.js client and registering commands

Example way to get the guild count

const { UserManager } = require("interactions.js");
const application = await UserManager.fetchMyApplication();

// Note: This is not the actual guild count, but an approximation
const guildCount = application.approximate_guild_count;

Help

If you have questions, encounter issues, or need guidance, feel free to join our Discord server. We have an active community of developers happy to help!

Example Handler

Check out http-bot-template for an example of how to use interactions.js in a bot project.

Bots Using interactions.js

Some notable bots that use interactions.js include: