Installation

Create a Discord application, enable the required intents, connect the token to TicketCord, and invite the bot with the right permissions

TicketCord runs your own Discord bot: you create the application in Discord's Developer Portal, and TicketCord runs it under your name and avatar. This page walks through every step, from an empty Developer Portal to a bot that is online in your server.

You need a Discord account, and Administrator (or ownership) on the server you want to add the bot to. Discord itself also requires Manage Server to add any bot to a server.

Step 1: Create the Discord application

Open the Developer Portal

Go to discord.dev and sign in with the Discord account that should own the bot.

Create a new application

Click New Application, enter the name you want your bot to have, accept the terms, and click Create. You can change the name and avatar later; TicketCord reads both from Discord.

Turn off Public Bot

Open the Bot tab. Find Public Bot and switch it off (the toggle turns grey). This stops strangers from adding your bot to their servers.

If Discord refuses with "Private application cannot have a default authorization link", open the Installation tab, set Install Link to None, save, and switch Public Bot off again. TicketCord builds its own invite link, so the default one is not needed.

Leave Requires OAuth2 Code Grant off. When it is on, Discord blocks the invite with "Integration requires code grant".

Enable the two privileged intents

Still on the Bot tab, under Privileged Gateway Intents, enable:

  • Server Members Intent
  • Message Content Intent

TicketCord needs these to see who joins or leaves, verify staff roles, and read ticket messages for transcripts, ModMail, and AI features. If they are off, Discord rejects the connection with a "disallowed intent" error (code 4014). TicketCord makes one automatic attempt to enable them for you when that happens; if the bot still cannot connect, turn them on manually and restart the bot from the dashboard.

Do not turn these off later. The bot goes offline until they are enabled again.

Copy the bot token

Click Reset Token, confirm, and copy the token. This is the only credential TicketCord needs; the application ID is read from it. You do not need the Client ID or Client Secret.

Treat the token like a password. Anyone who has it controls your bot. Discord shows it only once; if you lose it, reset it again.

Step 2: Connect the bot to TicketCord

Sign in to the dashboard

Open ticketcord.com/dashboard and sign in with Discord.

Add the bot

Click Add Bot and paste the token.

Validate and create

Click Validate & Continue. TicketCord checks the token, connects to Discord once, and shows the bot's name and avatar. If validation fails with a "disallowed intent" (4014) error, go back to the Developer Portal, enable both intents, and validate again. Click Create Bot to finish. The bot starts within a few moments and shows as online in the dashboard.

Invite the bot to your server

On the bot's page, click Invite and choose your server. The invite link requests exactly the permissions listed below plus the applications.commands scope that registers the slash commands.

Every new TicketCord account starts a 14-day Enterprise trial with no card required, so every feature is available while you set up. When the trial ends, the account moves to the Free plan; nothing you configured is deleted.

Permissions the invite requests

PermissionWhy the bot needs it
View ChannelSee the channels and categories it works in
Manage ChannelsCreate, rename, move, and delete ticket channels
Manage RolesSet per-ticket permission overwrites for the creator and staff
Manage WebhooksDeliver logs and transcripts
Send MessagesPost ticket messages, panels, and replies
Send Messages in ThreadsReply in thread-style tickets
Create Public ThreadsOpen thread-style tickets
Create Private ThreadsOpen private thread-style tickets
Manage ThreadsArchive and rename thread tickets
Manage MessagesPin panels and clean up ticket messages
Pin MessagesPin the welcome message in tickets
Embed LinksSend rich embeds and panels
Attach FilesSend transcripts and attachments
Read Message HistoryRead ticket conversations for transcripts and AI
Add ReactionsAdd reactions to messages
Mention EveryonePing staff roles when a ticket opens
Use Application CommandsRegister and run slash commands

The invite does not ask for Administrator, Manage Server, or any moderation permission such as Kick, Ban, or Timeout.

Do not build your own invite link in the Developer Portal. A manual invite usually misses permissions or the applications.commands scope, which shows up later as tickets that will not open, transcripts that never arrive, or commands that do not appear. If that already happened, kick the bot and invite it again from the dashboard; the token stays valid.

After the invite

  • Discord places the bot's role at the bottom of the role list. Drag it above your staff roles in Server Settings → Roles so it can manage permissions for them.
  • Run /setup in the server, then finish the configuration in the dashboard. See Configuration.
  • Run /diagnose to confirm the bot can see every channel and category it will use.

Troubleshooting

SymptomCauseFix
Validation fails with 4014 / disallowed intentServer Members Intent or Message Content Intent is offEnable both on the Bot tab, then validate again
The invite fails with "Integration requires code grant"Requires OAuth2 Code Grant is on for your applicationOpen the Bot tab in the Developer Portal, switch Requires OAuth2 Code Grant off, save, and invite the bot again from the dashboard
"Private application cannot have a default authorization link" when you turn off Public BotThe Installation tab still has a default install linkSet Install Link to None on the Installation tab, save, then switch Public Bot off
Bot shows offline after you reset the tokenThe old token no longer worksOpen the bot in the dashboard, click Update Credentials, paste the new token. The bot restarts on its own
Bot is online but slash commands do not appearThe invite lacked the applications.commands scopeKick the bot and invite it again from the dashboard, then reload Discord (Ctrl+R / Cmd+R)
Replies arrive without a TC code footerSomething else is running the same tokenStop the other program, reset the token, and update it in the dashboard
"Bot Cannot Access This Server" (TC002)The bot's role lost View Channel at the server levelRestore the permission on the bot's role under Server Settings → Roles
"TicketCord isn't a member of this server" (TC004)The bot was kickedInvite it again from the dashboard

Common questions

Why does Discord say "Integration requires code grant" when I invite my bot? The application has Requires OAuth2 Code Grant switched on in the Discord Developer Portal. TicketCord invites the bot with a standard bot invite, which Discord rejects while that setting is on. Open the Bot tab, switch Requires OAuth2 Code Grant off, save, and invite the bot again from the dashboard.

Can I use an existing bot application? Yes. Paste its token. Make sure Public Bot is off and both privileged intents are on, and invite it from the dashboard so the permissions are right.

Do I need to keep anything running on my computer? No. TicketCord hosts and runs the bot for you. You only supply the token.

Can one bot be in several servers? Yes. Invite it from the dashboard to each server and configure each server separately. The number of bots you can create depends on your plan: 1 on Free, 3 on Basic and Pro, 6 on Enterprise.

I changed the bot's name and avatar in the Developer Portal. When does the dashboard update? Automatically. The bot picks up the new name and avatar from Discord while it is online, and checks again each time it starts. If the dashboard still shows the old values, restart the bot from the dashboard.

Does TicketCord store my token? Yes, encrypted, so that it can run the bot. Resetting the token in the Developer Portal invalidates the stored copy; update it with Update Credentials.

Why does the invite ask for Manage Roles and Mention Everyone? Manage Roles lets the bot set per-ticket permission overwrites so only the creator and staff can see a ticket. Mention Everyone lets it ping staff roles when a ticket opens even when those roles are not otherwise mentionable.

Last updated on

On this page