Automated Discord Chatbot for chat Interaction in channel using Gemini 2.0 Flash
A Discord bot that responds to mentions by sending messages to n8n workflows and returning the responses. Connects Discord conversations with custom automations, APIs, and AI services through n8n.
Full guide on: https://github.com/JimPresting/AI-Discord-Bot/blob/main/README.md
Discord Bot Summary
Overview The Discord bot listens for mentions, forwards questions to an n8n workflow, processes responses, and replies in Discord. This workflow is intended for all Discord users who want to offer AI interactions with their respective channels.
What do you need? You need a Discord account as well as a Google Cloud Project
Key Features
-
Listens for Mentions The bot monitors Discord channels for messages that mention it. Optional Configuration**: Can be set to respond only in a specific channel.
-
Forwards Questions to n8n When a user mentions the bot and asks a question: The bot extracts the question. Sends the question, along with channel and user information, to an n8n webhook URL.
-
Processes Data in n8n The n8n workflow receives the question and can: Interact with AI services (e.g., generating responses). Access databases or external APIs. Perform custom logic. n8n formats the response and sends it back to the bot.
-
Replies to Discord with n8n's Response The bot receives the response from n8n. It replies to the user's message in the Discord channel with the answer. Long Responses**: Handles responses exceeding Discord's 2000-character limit by chunking them into multiple messages.
-
Error Handling Includes error handling for: Issues with n8n communication. Response formatting problems. Manages cases where: No question is asked. An invalid response is received from n8n.
-
Typing Indicator While waiting for n8n's response, the bot sends a "typing..." indicator to the Discord channel.
-
Status Update For lengthy n8n processes, the bot sends a message to the Discord channel to inform the user that it is still processing their request.
Step-by-Step Setup Guide as per Github Instructions
Key Takeaways
You’ll configure an n8n webhook to receive Discord messages, process them with your workflow, and respond.
You’ll set up a Discord application and bot, grant the right permissions/intents, and invite it to your server.
You’ll prepare your server environment (Node.js), scaffold the project, and wire up environment variables.
You’ll implement message‐chunking, “typing…” indicators, and robust error handling in your bot code.
You’ll deploy with PM2 for persistence and know how to test and troubleshoot common issues.
- n8n: Create & Expose Your Webhook
New Workflow
Log into your n8n instance.
Click Create Workflow (➕), name it e.g. Discord Bot Handler.
Webhook Trigger
Add a node (➕) → search Webhook.
Set:
Authentication: None (or your choice)
HTTP Method: POST
Path: e.g. /discord-bot
Click Execute Node to activate.
Copy Webhook URL
After execution, copy the Production Webhook URL.
You’ll paste this into your bot’s .env.
Build Your Logic
Chain additional nodes (AI, database lookups, etc.) as required.
Format the JSON Response
Insert a Function node before the end:
return {
json: { answer: "Your processed reply" }
};
Respond to Webhook
Add Respond to Webhook as the final node.
Point it at your Function node’s output (with the answer field).
Activate
Toggle Active in the top‐right and Save.
- Discord Developer Portal: App & Bot
New Application
Visit the Discord Developer Portal.
Click New Application, name it.
Go to Bot → Add Bot.
Enable Intents & Permissions
Under Privileged Gateway Intents, toggle Message Content Intent.
Under Bot Permissions, check:
Read Messages/View Channels
Send Messages
Read Message History
Grab Your Token
In Bot → click Copy (or Reset Token).
Store it securely.
Invite Link (OAuth2 URL)
Go to OAuth2 → URL Generator.
Select scopes: bot, applications.commands.
Under Bot Permissions, select the same permissions as above.
Copy the generated URL, open it in your browser, and invite your bot.
- Server Prep: Node.js & Project Setup
Install Node.js v20.x
sudo apt purge nodejs npm
sudo apt autoremove
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
node -v # Expect v20.x.x
npm -v # Expect 10.x.x
Project Folder
mkdir discord-bot
cd discord-bot
Initialize & Dependencies
npm init -y
npm install discord.js axios dotenv
4. Bot Code & Configuration
Environment Variables
Create .env:
nano .env
Populate:
DISCORD_BOT_TOKEN=your_bot_token
N8N_WEBHOOK_URL=https://your-n8n-instance.com/webhook/discord-bot
Optional: restrict to one channel
TARGET_CHANNEL_ID=123456789012345678
Bot Script
Create index.js:
nano index.js
Implement:
Import dotenv, discord.js, axios.
Set up client with MessageContent intent.
On messageCreate:
Ignore bots or non‐mentions.
(Optional) Filter by channel ID.
Extract and validate the user’s question.
Send “typing…” every 5 s; after 20 s send a status update if still processing.
POST to your n8n webhook with question, channelId, userId, userName.
Parse various response shapes to find answer.
If answer.length ≤ 2000, message.reply(answer).
Else, split into ~1900‑char chunks at sentence/paragraph breaks and send sequentially.
On errors, clear intervals, log details, and reply with an error message.
Login
client.login(process.env.DISCORD_BOT_TOKEN);
5. Deployment: Keep It Alive with PM2
Install PM2
npm install -g pm2
Start & Monitor
pm2 start index.js --name discord-bot
pm2 status
pm2 logs discord-bot
Auto‐Start on Boot
pm2 startup
Follow the printed command (e.g. sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u your_user --hp /home/your_user)
pm2 save
6. Test & Troubleshoot
Functional Test
In your Discord server:
@YourBot What’s the weather like?
Expect a reply from your n8n workflow.
Common Pitfalls
No reply → check pm2 logs discord-bot.
Intent Errors → verify Message Content Intent in Portal.
Webhook failures → ensure workflow is active and URL is correct.
Formatting issues → confirm your Function node returns json.answer.
Inspect Raw Data
Search your logs for Complete response from n8n: to debug payload shapes.
`
Related Templates
Automate Daily Keyword Research with Google Sheets, Suggest API & Custom Search
Who's it for This workflow is perfect for SEO specialists, marketers, bloggers, and content creators who want to automa...
AI Agent: Scrape, Summarize & Save Articles to Notion (Gemini, Browserless)
This n8n workflow automates the process of saving web articles or links shared in a chat conversation directly into a No...
USDT And TRC20 Wallet Tracker API Workflow for n8n
Overview This n8n workflow is specifically designed to monitor USDT TRC20 transactions within a specified wallet. It u...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments