Skip to main content

Add Bot to Discord

info

While we develop our own integration with Discord, it's possible to integrate your bot using Zapier. As at the time of writing, Zapier offers a free 14 day trial. Mottle is in no way associated with Zapier, nor do we benefit financially from it. Use at your own risk.

caution

You must add a filter condition, otherwise you'll get into an endless loop of your bot talking to itself. See step 10 for details.

You can easily have your bot respond to messages sent to a Discord channel by creating a Zapier integration.

  1. Make sure you have the Discord server and channel already setup before continuing.

  2. Sign in to Zapier and click Create Zap:

  1. For Trigger, select Discord and for Event select New Message Posted to Channel:

  2. Click Continue and Sign in to your Discord account to connect it. You will need to link your Discord server as part of the login process.

  3. Ensure the correct Discord server is selected and click Continue.

  4. Select the channel you wish to use.

  5. Click Continue.

  6. Test the integration by posting a message in your Discord channel and then find that message in Zapier. You need a message posted by a real human – not by the Zapier bot – as this is important in later steps. Click on Load more to find and select the correct message in the channel.

  1. When set up correctly, click Continue.

  2. We need to filter out any messages posted by bots, otherwise we'll get trapped in an endless loop of our bot talking to itself. Therefore, select Filter as the next step:

  1. Select: Only continue if... 1.Author Bot is (Boolean) is false.

If you receive this warning when you test your filter, it means you selected a Bot message back in step 8. Go back and fix.

Once it's working, it should look like so:

  1. Click Continue.

  2. For Action, select Webhooks by Zapier:

  1. For Event choose POST:
  1. Click Continue.

  2. For URL enter https://api.mottle.com/connect?bot=YOUR_BOT_ID – being careful to substitute YOUR_BOT_ID for your bot ID. Your bot ID can be found on the Publish / API Page.

  3. For Payload Type select JSON.

  4. For Data, we need to add two rows:

    • secret – This should be your bot's secret key. Again, you can find this on the Publish / API Page.

    • question – Click on the field to select a dynamic variable. Select the Discord variable that starts with "Content:". It should say something like Content: \{whatever you typed\}.

    It should look something like this:

  5. The rest of the options can be left as is. Click Continue.

  6. Click Test Action to test the connection to Mottle. If you've done everything correctly, you will see something like the following:

  1. We're not done, so don't Publish your Zap just yet. We need to send your bot's answer back to Discord.

  2. Click on the plus icon at the bottom of the screen:

  1. Select Discord again, and for the Event Type select Send Channel Message:
  1. Click Continue.

  2. Ensure the same Discord server is selected. Click Continue again.

  3. Pick the same channel as before.

  4. For Message Text, click into the text field to select a dynamic variable: 3. POST in Webhooks by Zapier > 2. Answer {the answer from before...}

  5. You can then customize the rest of the variables, including setting a bot name and an icon URL. When done, click Continue.

  6. Click Test Action. If you now head back to your Discord channel and you should find a test response.

  7. Click Publish Zap > Publish & Turn On to activate your bot.

  8. Once activated, try sending your Discord channel a message. In a few seconds you should receive a message back from your bot.

  9. Congratulations! You've now linked your bot to your Discord channel!

tip

Anecdotally, the Discord integration is a little slow. It's jarring, as a user, when you don't get immediate feedback after submitting a question. You could modify the recipe above to send back a "Thinking ..." message before sending the user's question off to Mottle.

info

Since Zapier Webhook requests are limited to 30 seconds, you may experience occasional timeouts, particularly when the OpenAI API is under stress (OpenAI status page). Unfortunately there is no way to send this information back to the user – the query will just fail silently. We will try to address this issue when we build our own Discord integration.