Discord Bot Invite Link Generator
A bot invite link is an OAuth2 authorization URL, and getting the scopes wrong is the most common reason slash commands never appear after inviting a bot. This generator builds the full URL with the bot and applications.commands scopes, a permission integer, and optional guild and redirect parameters.
How to use the Bot Invite Link Generator
- Enter your application's client ID from the Developer Portal.
- Tick the permissions your bot actually needs, and keep the rest off.
- Copy the generated OAuth2 URL and open it to add the bot to a server.
Discord Bot OAuth2 Scopes Explained
bot: Allows the application to join the server as a bot user and interact with channels.applications.commands: Grants permission for the bot to register and handle Slash Commands, User Context Menus, and Message Context Menus.messages.read: Required for Discord user apps and specific thread-reading bot integrations.
OAuth2 scopes, and why slash commands sometimes never appear
A bot invite is an OAuth2 authorization URL carrying a client ID, one or more scopes, and a permission integer. The single most common setup failure is a missing scope: an invite generated with only the bot scope adds the account to the server, but the applications.commands scope is what registers slash commands. Without it the bot joins successfully and its commands never show up.
Fixing this after the fact does not require kicking the bot. Generating a new invite with both scopes and running it against the same server grants the missing scope in place, leaving the bot's roles and history intact. This is worth knowing because the usual instinct is to remove and re-add, which discards role assignments.
The permission integer in the URL is the maximum the bot can be granted at invite time, and it is worth trimming before sending the link out. A bot that only posts messages does not need Manage Server, Manage Roles, or Administrator. You can also pin the invite to one server with the guild_id parameter, which is useful for a private bot you do not want added elsewhere.
Common problems and fixes
- Slash commands do not appear after inviting
The applications.commands scope was missing. Regenerate the invite with both scopes and reauthorize on the same server. - The invite link returns an error
The client ID is wrong, or the application has no bot user. Check the Bot tab in the Developer Portal. - The bot joins with no permissions
The permission integer was zero or omitted. Regenerate with the permissions selected.
Frequently asked questions
Why do modern Discord bots need the applications.commands scope?
Discord slash commands and context menus require the 'applications.commands' scope in the OAuth2 URL. Without it, the bot will join the server but its slash commands will not register.
Where do I find my bot's Application / Client ID?
Visit the Discord Developer Portal (discord.com/developers/applications), select your bot application, and copy the 'Application ID' from General Information.
How do I preselect a server in the invite link?
Add &guild_id=YOUR_SERVER_ID to the invite link to preselect a specific guild in the server selection dropdown.
What happens if I don't give the bot any permissions in the link?
The bot will join with no special role permissions and will rely solely on @everyone channel permissions.
What is the difference between the bot and applications.commands scopes?
The bot scope adds the account to the server. The applications.commands scope allows it to register slash commands. Most bots need both.
Can I change a bot's permissions after inviting it?
Yes, by editing its role in Server Settings. The invite integer only sets the initial grant.
How do I stop others adding my bot to their servers?
Turn off Public Bot in the Developer Portal, or pin the invite to one server with the guild_id parameter.