tech
How to Create and Configure Discord Bot Tokens
924 words5 min read
- Authors

- Name
- Wan Ilhami
- @wan-ilhami-43515a184
In this guide, I'll show you how to create a Discord Bot, generate authentication tokens, and integrate it into your server for automations and custom commands.
I needed a Discord Bot for my community server to manage roles, log events, and provide real-time notifications for project updates.
First Approach (Manual Setup)
Step 1: Create a New Application
- Go to the Discord Developer Portal
- Click the New Application button
- Enter your application name (e.g., "Community Manager Bot")
- Accept the terms and click Create
Step 2: Create a Bot User
- In your application settings, go to the Bot tab on the left sidebar
- Click Add Bot
- Your bot user has been created! You'll see a TOKEN section
Step 3: Copy Your Bot Token
- Under the TOKEN section, click Copy to copy your bot token
- Important: Store this token securely in an environment variable or password manager
- Never share this token publicly or commit it to version control
- If compromised, click Regenerate to create a new token
Step 4: Configure Bot Permissions
-
In the Bot tab, scroll down to Permissions
-
Select the permissions your bot needs:
Send Messages- Post messages in channelsRead Messages- Access message contentManage Messages- Delete or pin messagesManage Roles- Assign roles to usersKick Members- Remove users from serverBan Members- Ban users from server- For a full list, see the Discord documentation
-
A Permission Integer will be generated (e.g.,
268435456)
Step 5: Generate Invite Link
- Scroll up in the Bot tab and find the SCOPES section
- Check
botscope - Copy the generated URL under SCOPES
- This URL will look like:
https://discord.com/api/oauth2/authorize?client_id=$CLIENT_ID&permissions=$PERMISSIONS&scope=bot
- Example:
https://discord.com/api/oauth2/authorize?client_id=1234567890&permissions=268435456&scope=bot
Step 6: Invite Bot to Your Server
- Open the invite link in your browser
- Select the server where you want to add the bot
- Click Authorize
- Complete any CAPTCHA verification
Your bot is now in your server!
Second Approach (OAuth2 with Integration)
Step 1: Get Your Client ID and Secret
- Go to the Discord Developer Portal
- Open your application
- In General Information, copy your CLIENT ID
- Go to the OAuth2 tab
- Under Client Credentials, click Reset Secret
- Copy and securely store your CLIENT SECRET
Step 2: Set Up Redirect URIs
- In the OAuth2 tab, find the Redirects section
- Click Add Redirect and enter your callback URL:
https://myapp.com/callbackhttp://localhost:3000/callback(for local development)
- Click Save Changes
Step 3: Create Authorization URL
- Build an OAuth2 authorization URL with your credentials:
https://discord.com/api/oauth2/authorize?client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&response_type=code&scope=bot+guilds
- Example:
https://discord.com/api/oauth2/authorize?client_id=1234567890&redirect_uri=https%3A%2F%2Fmyapp.com%2Fcallback&response_type=code&scope=bot+guilds
Note: URL encode your redirect URI
Step 4: Exchange Code for Access Token
- When authorized, users are redirected with a
codeparameter - From your backend, exchange the code for an access token:
curl -X POST https://discord.com/api/v10/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=$CLIENT_ID" \
-d "client_secret=$CLIENT_SECRET" \
-d "grant_type=authorization_code" \
-d "code=$CODE" \
-d "redirect_uri=$REDIRECT_URI"
Step 5: Handle Token Response
- The response will contain:
{
"access_token": "ACCESS_TOKEN_HERE",
"token_type": "Bearer",
"expires_in": 604800,
"refresh_token": "REFRESH_TOKEN_HERE",
"scope": "bot guilds"
}
- Save the
access_tokenfor API requests andrefresh_tokenfor long-term access
Using Your Bot Token
Python Example (discord.py)
import discord
from discord.ext import commands
# Load bot token from environment variable
TOKEN = os.getenv('DISCORD_BOT_TOKEN')
bot = commands.Bot(command_prefix='!', intents=discord.Intents.default())
@bot.event
async def on_ready():
print(f'{bot.user} has connected to Discord!')
@bot.command(name='ping')
async def ping(ctx):
await ctx.send(f'Pong! {round(bot.latency * 1000)}ms')
bot.run(TOKEN)
JavaScript Example (discord.js)
const { Client, Intents } = require('discord.js');
require('dotenv').config();
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
const TOKEN = process.env.DISCORD_BOT_TOKEN;
client.on('ready', () => {
console.log(`Bot logged in as ${client.user.tag}`);
});
client.on('messageCreate', (message) => {
if (message.author.bot) return;
if (message.content === '!ping') {
message.reply('Pong!');
}
});
client.login(TOKEN);
API Request Examples
Get Bot Information
curl -H "Authorization: Bot YOUR_BOT_TOKEN" \
https://discord.com/api/v10/users/@me
Send Message to Channel
curl -X POST https://discord.com/api/v10/channels/$CHANNEL_ID/messages \
-H "Authorization: Bot YOUR_BOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": "Hello from my bot!"}'
Get Guild Members
curl -H "Authorization: Bot YOUR_BOT_TOKEN" \
https://discord.com/api/v10/guilds/$GUILD_ID/members
Security Best Practices
- Never commit tokens to version control - use
.envfiles and.gitignore - Rotate tokens regularly - regenerate if you suspect compromise
- Use environment variables - store tokens outside your code
- Restrict permissions - only grant scopes and permissions your bot needs
- Implement rate limiting - Discord has strict API rate limits
- Add input validation - prevent injection attacks
- Keep dependencies updated - use latest discord.py or discord.js versions
- Log activity - monitor bot actions for security issues
- Check the Discord Security Best Practices
Troubleshooting
| Issue | Solution |
|---|---|
| "Invalid Token" error | Regenerate your token in Developer Portal |
| Bot doesn't respond | Check bot has Send Messages permission |
| Rate limited (429 error) | Implement exponential backoff for API requests |
| Bot can't see channels | Verify bot role has proper permissions in server |
| Token leaked | Immediately regenerate in Developer Portal |
Ready to build? Check out the Discord Developer Documentation and start creating amazing bots!