Discord has become one of the main channels for content creators to create their private communities.
And with 963 million messages being sent on Discord every day, a chatbot can become interesting to automatically reply to messages in your Discord server.
In this tutorial, I will cover:
- What a Discord chatbot is and why you need one
- How to create your own Discord Chatbot, without using any code
- And how to add your chatbot to your own Discord server
Let’s dive in!
What is a Discord chatbot?
A chatbot is an automated conversation partner. It facilitates a conversation between a human and a computer.
So a Discord chatbot is an automated conversation partner on Discord.
Usually, when you have a conversation, you are talking to another human. But with chatbots, you are not talking to a human, but to a computer that can automatically talk back based on your questions and answers.
Why should you create a chatbot on Discord?
Discord has 140 million users that are using Discord each month.
And together, they are accountable for sending 963 million messages each day.
That’s a lot of messages sent every day!
So the reason why you should use a chatbot on Discord is that it can take a lot of time to reply to each and every message. And by using a chatbot, you can:
- Automatically reply to standard questions in your Discord server, such as “When are you going live” and “Can I have your gaming cheatsheet”
- Reply to questions when you are not actually online
How to Create a Discord Chatbot
Now it’s time to create your own Discord chatbot.
And to do this, we are going to use Xenioo as our chatbot builder. So if you don’t have a Xenioo account yet, just click the button below and create a free Xenioo account:
The best part about Xenioo is that it is an omnichannel chatbot builder. That means that you can create one chatbot and just with the push of a button you can publish it on more than 10 channels (Discord, Facebook, Instagram, WhatsApp, etc.)
Once you have created your Xenioo account, you can just log in and click on Create New Bot:
Xenioo already creates a pre-built flow for you that gives you a kind of example of how you can start your bot.
Let’s say, we are a content creator about games and we have shared a gaming cheatsheet and we are going live every Tuesday.
Then, if someone is asking in our Discord channel “Can I have the cheatsheet” and “When are you going live”, we want to automatically respond to that.
So, let’s start with the cheatsheet!
In Xenioo, you can click on the + button in the left-hand corner to add a new flow to your chatbot:
By the way, a chatbot flow in Xenioo is called a “behavior”. Just so you know 😉
On the right-hand side, you can click on the Settings button:
And then we can give a good name to this behavior so we can easily find it. Let’s call it “Gaming cheatsheet” and click on Save:
Then inside the Start interaction, there is already a text message. So we can just click on this text message, edit the text and click on Save:
By the way, you must click on Save, otherwise, Xenioo will not save any of your changes!
Because we are giving away a free cheatsheet, we want users to automatically download it inside Discord. To do that, we can click on the Tool icon and click on Add new action:
Under Content, you can select the File download element:
Here, you need to set it to Upload to Storage, give a friendly name to your file and Upload a file:
But we only created the chatbot flow just yet. We haven’t set this up so that it responds to specific words. To do that, just click on the Art icon (View global bot operations):
Then, we can set up a global bot operation. What this does, is that it automatically responds with a flow when a user says a specific keyword. So, just click on Add bot operation:
And select Text parse:
Then, you need to set the Control expression to “gaming cheatsheet”, the target variable to “last_user_message” and the Go To to the Start Interaction of Gaming cheatsheet (the flow we just created):
What this does, is that every time a user says “gaming cheatsheet”, the chatbot will automatically respond with “Here is your gaming cheatsheet:” and gives the gaming cheatsheet file.
By the way, if you want that the chatbot replies to multiple keywords, you can just type in the keywords and separate them with the “|” character.
That’s set up! Now we can create an automatic reply when someone asks when we are going live. So again, just create a new flow by clicking on the + icon and giving it the name “Live”.
Then, we will first duplicate the Start Interaction by clicking on Clone:
Now, we will remove the text message from the Start Interaction and add a new action to the chatbot called a Variable Conditional Switch (you can find this under “Flow”):
And then we will check if the variable “last_user” is equal to “general”:
What this will do, is that it checks if the Discord bot has given a reply inside the #general channel or privately to a user. Because if they are in a private chat, we can ask for more private information, such as their email. And if we get their email address, we can also send them an email once we go live 🙂
NOTE: If you have more channels than just #general, I would recommend cloning this condition for every channel so that your chatbot is not going to give private replies in a group chat.
So the next thing we need to do is click on Add operation and select the Go to Bot Interaction (under “Flow”):
And then we can select the message we copied before:
In that message, we can set a general public response by editing the text message:
What this will do, is that if the chatbot is triggered inside the #general channel, it will automatically reply with “We are going live every Tuesday at 5PM. If you want to get a reminder in your email inbox, please send me a message in a private chat 😉”
But, what will the chatbot do when they ask this question in a private conversation? Then, we can also ask for the email of the user!
So in the start interaction, we will add a text message saying” We are going live every Tuesday at 5 PM. Would you like to get a reminder in your email inbox? Just simply reply with ‘Yes’ or ‘No'”:
Then, we will add two options, by adding two Quick Reply buttons (You can this under “Content”):
But before we go further, we will add three new blocks (called Interactions in Xenioo) by clicking the Puzzle icon at the top 3 times:
Then, you can just click on the Button Text, set it to “Yes”, set the Trigger Text Expression to “yes” and select one of the interactions we just added under “Go To”:
Now, if someone replies to your question with “Yes”, they are getting Bot Interaction #2. Now, we can do the same by adding a “No” option, so that the flow looks like this:
NOTE: Although we added two Quick Reply Buttons, these buttons are actually shown as text in Discord. This is because Discord doesn’t have buttons on its platform.
As you can see above, for the “No” option I edited the text to “No worries, it’s not for everyone.”
But for the “Yes” option, we want to ask for their email address.
So, we will ask for the email address with a simple text bubble and add a new action called Email address input (which you can find under “Input”):
The Email address input element waits for input by the user and checks if that input is actually a real email address. If that’s not the case, it will automatically ask to fill in a correct email.
Then, just set the Go To element to “Bot Interaction #4” (which is the last interaction we added to this flow):
And add some text to that block, so the final flow looks like this:
So that flow works. And to let it automatically reply when someone asks when you are going live, we set up another Global Bot Expression that looks like this:
Lastly, we need to remove the content of the fallback interaction for every flow in your chatbot.
So just go to the fallback interaction in each flow, click on the Text message and then click Delete in the top-right corner:
The reason why we do this is that the fallback interaction would normally trigger when the chatbot does not understand a question.
And because we are going to add this chatbot to our own Discord server, this would lead to very annoying messages every time a user says something the chatbot doesn’t understand.
To avoid these annoying messages, we simply remove the fallback interaction from every flow 🙂
Connect your chatbot to Discord
Now that our chatbot is set up and ready, it’s time to connect it to Discord.
In Xenioo, you can just click on the Publish button:
And click on Discord:
And here we need to fill in our authorization token. To get this token, we first need to go to the Developer Portal of Discord. So you can just click the button below and log in with your Discord account:
In the Developer Portal, you can click on New application in the top-right corner:
And fill in the name of your chatbot and click on Create:
Now, your application in Discord is ready. But, it is not a bot yet.
So to create a bot out of your application, simply click on Bot in the menu and click on Add Bot:
In the pop-up, just click on Yes, do it!:
And then you can click on Copy to copy the authorization token:
This is the token you need to paste into Xenioo. After you’ve pasted it, just click on Save and Publish and this will connect your chatbot to Discord.
And that’s it! Now your chatbot is connected to Discord!
How to add your chatbot to a Discord server
But before you can talk to your chatbot, you first need to add it to your Discord server.
To do this, we need to go to OAuth2, click on URL Generator and set Bot as the scope:
And give some permissions to the bot and copy the Invite URL:
When you go to this URL, you can select the Discord server you want to add your bot to and click on Continue:
Once you’ve done this, your Discord chatbot is automatically added to every channel inside your Discord server. Also, it will automatically say the Start Interaction inside your #general channel. If you want to avoid this, you can just simply remove the Start Interaction in Xenioo:
Now It’s Your Turn
And that’s how you can create your own Discord chatbot and add it to your Discord server.
Now I have a question for you:
Have you ever used a chatbot on your Discord server before? Why (not)?
Please let me know by leaving a comment below!