Skip to content

ballerina-platform/module-ballerinax-discord

Repository files navigation

Ballerina Discord Connector

Build codecov Trivy GitHub Last Commit GraalVM Check License

Overview

Discord is a popular communication platform designed for creating communities and facilitating real-time messaging, voice, and video interactions over the internet.

The Ballerina Discord connector offers APIs to connect and interact with the Discord REST API v10.

Setup guide

Follow these steps to create a Discord developer account.

Step 1: Login to Discord developer page

  1. Visit Discord developer portal by logging into your Discord account.

    Discord Dev Page
  2. If you do not have a Discord account already, create a new discord account by clicking on the Register hyperlink below the Log In button when opening the Discord developer page.

    Create Discord Account
  3. Complete the account creation process by including the relevant information in the given fields.

Step 2: Make a new Discord application

  1. Once in the Discord developer portal is open, click on the New Application button as displayed above to start the process.

    Make New Application

Step 3: Name the Discord Application

  1. Proceed by giving the Discord Application a name and click on the terms of service.

    Name and Create the App
  2. Finally complete the naming process by clicking on the next button.

Step 4: Obtain the Client ID and Client Secret

  1. Under the OAuth2 section found on the left-sided list, locate the Client's Information as shown on the screen. To implement the functionalities provided by Discord's API, you will need the Client ID and Client Secret.

    Obtain Client ID and Secret

Quickstart

To use the discord connector in your Ballerina application, modify the .bal file as follows:

Step 1: Import the module

Import the discord module.

import ballerinax/discord;

Step 2: Instantiate a new connector

Create a discord:ConnectionConfig with the obtained OAuth2.0 Client Credentials and initialize the connector with it.

Apps must receive approval from users installing them to perform actions within Discord. To enable these functions, specific scopes must be defined. These scopes are outlined in the OAuth2 Scopes documentation.

configurable string clientId = ?;
configurable string clientSecret = ?;
configurable string[] scopes = ?;

discord:Client discord = check new({
    auth: {
            clientId,
            clientSecret,
            scopes
        }
});

Step 3: Invoke the connector operation

Now, utilize the available connector operations.

Return linked third-party accounts of the user

public function main() returns error? {
    ConnectedAccountResponse[] connectedAccounts = check discord->/users/\@me/connections();
}

Step 4: Run the Ballerina application

bal run

Examples

The Discord connector provides practical examples illustrating usage in various scenarios. Explore these examples, covering the following use cases:

  1. Automated Event Reminders - This use case illustrates how the Discord API can be leveraged to create a scheduled event in a Discord server and automate daily reminders about this event across all channels within the server.

  2. Automated Role Assignment Based on Reactions - This use case illustrates the utilization of the Discord API to assign roles to members based on their interests, enabling them to gain roles by reacting to designated messages.

Build from the source

Prerequisites

  1. Download and install Java SE Development Kit (JDK) version 17. You can download it from either of the following sources:

    Note: After installation, remember to set the JAVA_HOME environment variable to the directory where JDK was installed.

  2. Download and install Ballerina Swan Lake.

  3. Download and install Docker.

    Note: Ensure that the Docker daemon is running before executing any tests.

  4. Export Github Personal access token with read package permissions as follows,

    export packageUser=<Username>
    export packagePAT=<Personal access token>

Build options

Execute the commands below to build from the source.

  1. To build the package:

    ./gradlew clean build
  2. To run the tests:

    ./gradlew clean test
  3. To build the without the tests:

    ./gradlew clean build -x test
  4. To run tests against different environment:

    ./gradlew clean test -Pgroups=<Comma separated groups/test cases>
  5. To debug package with a remote debugger:

    ./gradlew clean build -Pdebug=<port>
  6. To debug with the Ballerina language:

    ./gradlew clean build -PbalJavaDebug=<port>
  7. Publish the generated artifacts to the local Ballerina Central repository:

    ./gradlew clean build -PpublishToLocalCentral=true
  8. Publish the generated artifacts to the Ballerina Central repository:

    ./gradlew clean build -PpublishToCentral=true