{"id":148,"date":"2026-09-11T19:05:17","date_gmt":"2026-09-11T19:05:17","guid":{"rendered":"https:\/\/interaction-bot.com\/blog\/how-to-add-tts-bot-to-discord-server\/"},"modified":"2026-09-11T19:05:21","modified_gmt":"2026-09-11T19:05:21","slug":"how-to-add-tts-bot-to-discord-server","status":"publish","type":"post","link":"https:\/\/interaction-bot.com\/blog\/how-to-add-tts-bot-to-discord-server\/","title":{"rendered":"How to Add a TTS Bot to a Discord Server: Step-by-Step Setup"},"content":{"rendered":"<p>Adding a TTS bot to a Discord server takes about five minutes and happens on a web page, not inside the Discord app. Open the bot&#8217;s invite link, approve Discord&#8217;s official authorization screen (pick your server, review the permission list, click Authorize), then connect the bot to a voice channel and restrict who can trigger it. This guide walks through each step with Interaction Bot, a text-to-speech and translation bot that reports 56,065 Discord servers from the counters on its homepage (retrieved September 11, 2026), as the working example. The same flow applies to any TTS bot with a public invite link.<\/p>\n<h2>Before you start: two things your account needs<\/h2>\n<p>Discord permits a bot to be added only by someone who can manage the target server. Your account needs both of these:<\/p>\n<ul>\n<li><strong>Membership in the server<\/strong> you want the bot to join.<\/li>\n<li><strong>Manage Server<\/strong> (Discord also labels it Manage Guild) or <strong>Administrator<\/strong> on that server. Discord&#8217;s developer documentation explains that when you open a bot&#8217;s authorization page, &#8220;they&#8217;ll be prompted to add the bot to a guild in which they have proper permissions.&#8221; Without one of these roles, the server is greyed out in the &#8220;Add to server&#8221; dropdown and the invite silently fails.<\/li>\n<\/ul>\n<p>One more thing to know before you start: a bot is never added through a normal server invite. Discord&#8217;s OAuth2 flow is the only install path, and it lives at <code>discord.com\/oauth2\/authorize<\/code>. Every bot&#8217;s &#8220;Add to Discord&#8221; button is a link to that page with the bot&#8217;s own settings already filled in.<\/p>\n<h2>Step 1: open the bot&#8217;s invite link<\/h2>\n<p>On the bot&#8217;s official website or its Discord App Directory listing, find the invte button, usually labeled <strong>Add to Discord<\/strong>, <strong>Add to Server<\/strong>, or <strong>Invite<\/strong>. For Interaction Bot it sits on the homepage and points at <code>invite.interaction-bot.com<\/code>, which forwards to Discord&#8217;s authorization page:<\/p>\n<p><code>discord.com\/oauth2\/authorize?client_id=893494390142697493&amp;permissions=1072235544144&amp;scope=bot%20applications.commands<\/code><\/p>\n<p>Two parts of that address do the real work:<\/p>\n<ul>\n<li><strong><code>permissions=1072235544144<\/code><\/strong>. Against the values in Discord&#8217;s official <a href=\"https:\/\/docs.discord.com\/developers\/topics\/permissions\">permission reference<\/a>, this number decodes to 24 individual permissions, from View Channels and Send Messages up to the voice permissions (Connect, Speak, Use Voice Activity) that let a bot read messages aloud.<\/li>\n<li><strong><code>scope=bot applications.commands<\/code><\/strong>. Per Discord&#8217;s <a href=\"https:\/\/docs.discord.com\/developers\/topics\/oauth2\">OAuth2 documentation<\/a>, the <code>bot<\/code> scope &#8220;puts the bot in the user&#8217;s selected guild by default&#8221;, and <code>applications.commands<\/code> allows the app to add slash commands to that guild, which is how the bot&#8217;s commands such as <code>\/tts<\/code> and <code>\/help<\/code> appear on your server.<\/li>\n<\/ul>\n<p>If you would rather watch somebody click through the whole install before you touch anything, Tech Academy&#8217;s walkthrough, &#8220;How To Add a TTS (Text-To-Speech) Bot To Your Discord Server (Easy)&#8221;, shows the invite and setup flow for a Discord TTS bot:<\/p>\n<p><iframe loading=\"lazy\" title=\"How To Add a TTS (Text-To-Speech) Bot To Your Discord Server (Easy)\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/CJBGlEzqbrA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2>Step 2: approve Discord&#8217;s authorization screen (the OAuth step)<\/h2>\n<p>This screen is where the bot actually gets added. It loads under the bot&#8217;s name and shows three things: the Discord account acting at the top, an &#8220;Add to server&#8221; dropdown, and the list of permissions the bot is requesting, already ticked.<\/p>\n<ol>\n<li><strong>Check the account at the top.<\/strong> The page acts on whichever account is signed into that browser. If it is different from the account that holds Manage Server on your server, sign out and back in.<\/li>\n<li><strong>Pick your server<\/strong> from the dropdown. A server that is missing or greyed out is one where your account lacks Manage Server or Administrator.<\/li>\n<li><strong>Leave the permission defaults alone.<\/strong> For voice TTS these are the ones that matter:<\/li>\n<\/ol>\n<div class=\"table-wrap\"><table>\n<thead>\n<tr>\n<th>Permission<\/th>\n<th>Why a TTS bot asks<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>View Channels<\/td>\n<td>see and read the text channel it speaks from<\/td>\n<\/tr>\n<tr>\n<td>Send Messages<\/td>\n<td>post confirmations and replies<\/td>\n<\/tr>\n<tr>\n<td>Read Message History<\/td>\n<td>read older messages, not just new ones<\/td>\n<\/tr>\n<tr>\n<td>Connect<\/td>\n<td>join a voice channel<\/td>\n<\/tr>\n<tr>\n<td>Speak<\/td>\n<td>play synthesized audio in that channel<\/td>\n<\/tr>\n<tr>\n<td>Use Voice Activity<\/td>\n<td>deliver audio over a normal voice stream<\/td>\n<\/tr>\n<tr>\n<td>Use Slash Commands<\/td>\n<td>register and run <code>\/tts<\/code>, <code>\/help<\/code>, and the rest<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<ol start=\"4\">\n<li><strong>Click Authorize.<\/strong> Discord may ask you to confirm a second time. The bot appears in your member list within a few seconds.<\/li>\n<\/ol>\n<p>Two cautions. First, the most common cause of &#8220;the bot joined but never speaks&#8221; is an unticked permission during this step, often Connect, Speak, or Use Slash Commands; if members untick things to &#8220;be safe&#8221;, playback just fails silently. When in doubt, re-invite and leave the defaults. Second, do not grant Administrator. Interaction Bot&#8217;s invite does not ask for it, and no TTS bot needs it to read messages aloud.<\/p>\n<p>Doing this from a phone works the same way, but the authorization screen may open in your browser, in Discord&#8217;s in-app browser, or in a separate tab, and it acts on whichever account that browser is signed into. Our <a href=\"https:\/\/interaction-bot.com\/blog\/add-translator-bot-to-discord-mobile\/\">mobile guide to adding a bot on Android and iPhone<\/a> covers the small-screen differences.<\/p>\n<h2>Step 3: restrict who can trigger TTS<\/h2>\n<p>Once the bot is in, you control who gets to make it talk. A TTS bot that answers any member in any channel is spam waiting to happen, so give it a home:<\/p>\n<ul>\n<li>Create a dedicated text channel, for example <code>#tts-text<\/code>, and, if you like, pair it with the voice channel where speech will play.<\/li>\n<li>On that channel, set Discord&#8217;s permissions so only the roles you trust can send messages and use the bot&#8217;s commands. A small test server can keep the defaults; a busy server should start closed.<\/li>\n<\/ul>\n<p>For a fuller picture of the difference between a voice-channel TTS bot and Discord&#8217;s built-in <code>\/tts<\/code>, our <a href=\"https:\/\/interaction-bot.com\/blog\/discord-text-to-speech-bot\/\">guide to Discord text-to-speech bots<\/a> compares both side by side.<\/p>\n<h2>Step 4: connect the bot to a voice channel<\/h2>\n<p>TTS bots play audio in a server voice channel, so the bot has to be in one. Join the voice channel where you want speech to be heard, then tell the bot to follow you. Interaction Bot&#8217;s command for this is <code>\/connect<\/code>. Once it is in the channel, the bot&#8217;s <code>text-to-speech<\/code> feature can read a typed message to everyone listening, which is what its homepage advertises.<\/p>\n<figure class=\"post-figure\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"512\" class=\"wp-image-150\" alt=\"Close-up of colorful speech waveforms on a computer screen, the kind of audio a TTS bot synthesizes and plays\" src=\"https:\/\/interaction-bot.com/blog\/wp-content\/uploads\/sites\/5\/2026\/09\/pexels-photo-4765390-768x512-1.jpeg\" title=\"Photo by JerVa, Pexels License, via https:\/\/www.pexels.com\/photo\/close-up-of-sound-waves-on-a-computer-screen-4765390\/\" srcset=\"https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/09\/pexels-photo-4765390-768x512-1.jpeg 768w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/09\/pexels-photo-4765390-768x512-1-300x200.jpeg 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><figcaption>Photo by JerVa, Pexels License, via https:\/\/www.pexels.com\/photo\/close-up-of-sound-waves-on-a-computer-screen-4765390\/<\/figcaption><\/figure>\n<p>While you are at it, check the bot&#8217;s settings for guardrails before opening it to the whole server: maximum message length, volume, a default voice, and any cooldown or blocked-words options it offers. Interaction Bot&#8217;s dashboard is at the bot&#8217;s website. Log in with Discord, pick your server, and the configuration pages (including voice and translation defaults) are in the left-hand menu.<\/p>\n<h2>Step 5: test by sending a message<\/h2>\n<p>Now prove it works before announcing anything. In the text channel the bot watches, type the bot&#8217;s TTS command followed by a short sentence. On Interaction Bot that is <code>\/tts<\/code>, one of the commands its docs list for reading a message aloud in a voice channel. You should hear the sentence in the voice channel moments later.<\/p>\n<p>Two things to expect on a fresh install. Slash commands do not appear instantly: they are registered through Discord&#8217;s interactions system, and a brand-new command can show up a little later than the authorization. And if you type <code>\/<\/code> and see no bot commands at all, the invite was likely made through an old link that omitted the <code>applications.commands<\/code> scope; re-run the bot&#8217;s current invite link, which fixes it.<\/p>\n<h2>Where people get stuck: the four classic failures<\/h2>\n<p>If something breaks, it is almost always one of these:<\/p>\n<div class=\"table-wrap\"><table>\n<thead>\n<tr>\n<th>Symptom<\/th>\n<th>Most likely cause<\/th>\n<th>Fix<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Server greyed out on the auth screen<\/td>\n<td>Your account lacks Manage Server or Administrator<\/td>\n<td>Ask an admin for the role, then re-open the invite<\/td>\n<\/tr>\n<tr>\n<td>Bot joined but never speaks<\/td>\n<td>A permission was unticked at install, or the bot is not connected to a voice channel<\/td>\n<td>Re-invite leaving the defaults; join a voice channel and run <code>\/connect<\/code><\/td>\n<\/tr>\n<tr>\n<td>Bot will not join the voice channel<\/td>\n<td>The bot&#8217;s role lacks Connect or Speak in that channel, or no one is in it<\/td>\n<td>Check the channel&#8217;s permission overwrites and that someone is sitting in the room<\/td>\n<\/tr>\n<tr>\n<td>Slash commands do not appear<\/td>\n<td>Invite was made without <code>applications.commands<\/code>, or members lack Use Slash Commands<\/td>\n<td>Re-run the bot&#8217;s current invite; check the member&#8217;s channel permissions<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The site&#8217;s <a href=\"https:\/\/interaction-bot.com\/blog\/discord-translator-bot-not-working\/\">troubleshooting guide for Discord bots that go quiet<\/a> works through the permission and channel fixes in full, including how to tell a settings problem from an outage by checking the bot&#8217;s status page.<\/p>\n<h2>Bottom line<\/h2>\n<p>Adding a TTS bot to a Discord server is a web-page job, not an app-menu job: open the bot&#8217;s invite link, choose your server and review the 24 requested permissions on Discord&#8217;s official authorization screen, then click Authorize. After that, three settings decide whether it is useful or chaotic: which text channel feeds it, which voice channel it is connected to, and which roles are allowed to trigger it. Set those, test with one short sentence, and open it up.<\/p>\n<figure class=\"post-figure\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"450\" class=\"wp-image-151\" alt=\"A person at a computer holding headphones in a red-lit gaming setup, the kind of member who can join voice chat by typing\" src=\"https:\/\/interaction-bot.com/blog\/wp-content\/uploads\/sites\/5\/2026\/09\/pexels-photo-9072382-800x450-1.jpeg\" title=\"Photo by yankrukov, Pexels License, via https:\/\/www.pexels.com\/photo\/a-man-in-a-black-shirt-talking-on-a-headphone-s-mic-while-looking-at-a-computer-monitor-9072382\/\" srcset=\"https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/09\/pexels-photo-9072382-800x450-1.jpeg 800w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/09\/pexels-photo-9072382-800x450-1-300x169.jpeg 300w, https:\/\/interaction-bot.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/09\/pexels-photo-9072382-800x450-1-768x432.jpeg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>Photo by yankrukov, Pexels License, via https:\/\/www.pexels.com\/photo\/a-man-in-a-black-shirt-talking-on-a-headphone-s-mic-while-looking-at-a-computer-monitor-9072382\/<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Step-by-step guide to adding a text-to-speech bot to a Discord server: how the invite link works, approving permissions on Discord&#8217;s authorization screen, picking a server, connecting to a voice channel, and testing with a message.<\/p>\n","protected":false},"author":1,"featured_media":149,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts\/148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/comments?post=148"}],"version-history":[{"count":1,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts\/148\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/posts\/148\/revisions\/152"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/media\/149"}],"wp:attachment":[{"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/media?parent=148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/categories?post=148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interaction-bot.com\/blog\/wp-json\/wp\/v2\/tags?post=148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}