Set up your Discord
Your Discord is where viewers hang out, guests get ready, and your schedule comes from: each show is a Discord event, and your site, overlays and thumbnails read it. Follow this guide step by step to build a starter server that does all of that, plus the bot your site uses to read it.
It takes about 45 minutes. Use Discord on a computer (the app or discord.com in a browser): you can change a few settings, like Onboarding, only there. If you already have a server, skip to step 6; steps 1 to 5 are a tried layout you can borrow from.
What you end up with:
- Start Here: a welcome and rules channel, and announcements
- Topics: a channel for each game your show covers
- Community: general chat, clips, self-promotion and a voice lobby
- The Show: questions for guests, a private prep room and green room for guests, and the Studio voice channel where the interview happens
- Staff: private channels for you and your mods
- roles for you, your mods, guests, fellow streamers and go-live pings, and onboarding questions that hand them out
If you're Claude
A host may paste this guide into a chat and ask you to walk them through it. When that happens:
- Go one step at a time, wait for them to say it's done, and check what they see against "You should see" before moving on.
- Discord moves its menus around now and then. If a menu name doesn't match, help them find it by what it does rather than guessing a new path.
- Never ask for, accept or repeat the bot's token. The token goes in one place: the server window, through
bash deploy/keys.sh, which hides what they paste. If they paste it into the chat, tell them to reset it in the Developer Portal (step 6) and add the new one with the helper. Server and channel IDs are not secret; those are fine. - Their channel and role names may differ from this guide; that's fine as long as the permissions match what each step describes.
1. Make the server
- In Discord, press the + at the bottom of your server list, then Create My Own, then For a club or community.
- Name it after your show, add your logo if you have one, and press Create.
- Turn on Developer Mode, so you can copy IDs later: User Settings (the gear by your name) → Advanced → Developer Mode on.
You should see your new server with a #general text channel and a General voice channel. Leave them for now; step 4 sorts the channels.
2. Turn on Community and safety settings
Turning on Community gives you announcement channels, onboarding questions and member screening. Later steps use them.
- Open Server Settings (click the server name at the top left).
- Find Enable Community (under Community) and press Get Started.
- Discord asks for three things. Choose:
- Verified email required: yes.
- Scan media content from all members: yes.
- Rules channel: let Discord make a new one, or pick #general for now. Community updates channel: let Discord make one; it's where Discord sends notices for admins. You'll move both in step 4.
- Finish the setup and agree to the guidelines.
- Set the verification level to Medium: members must have been on Discord for at least 5 minutes before they can talk. It's in Server Settings under Safety Setup (sometimes called Moderation) → Verification Level. If you get spam later, Highest (a verified phone number) stops almost all of it, but some real viewers give up there.
- Under Overview, set Default Notification Settings to Only @mentions, so a busy chat doesn't buzz everyone's phone.
You should see "Community" in Server Settings with Overview, Onboarding and Server Insights under it.
3. Make the roles
You use roles to set who can do what. In Server Settings → Roles → Create Role, make these five, in this order from the top. Drag them in the list to change the order: a role can only manage roles below it.
- Host (you). Pick a color, tick Display role members separately, and under Permissions turn on Administrator. Then give it to yourself: right-click your name in the member list → Roles → Host.
- Mods (people who help keep chat friendly). Color, display separately, and turn on: Manage Messages, Manage Threads, Manage Events, Kick Members, Ban Members, Time out members, Mute Members, Move Members, View Audit Log. Leave Administrator off.
- Guest (this week's show guests). A color so chat can spot them, display separately. No extra permissions: the channels in step 4 let guests in. You give it to a guest before their show and can take it off after.
- Streamer (fellow streamers allowed to post in #self-promo). No extra permissions.
- Live Pings (people who want a ping when you go live). Turn on Allow anyone to @mention this role. No other permissions. Members pick it themselves in step 5.
Leave @everyone as Discord set it: members can read and chat in the open channels.
You should see Host, Mods, Guest, Streamer and Live Pings in that order, above @everyone.
4. Make the categories and channels
Create each category with the + next to an existing category name (or right-click the channel list → Create Category), then add channels inside it. Delete Discord's starter #general and General voice once your new ones exist, or drag them into place.
To set a channel's permissions, right-click it → Edit Channel → Permissions → Add members or roles, pick the role, then click ✓ (allow) or ✕ (deny) next to each permission. A Private Channel switch on that page hides it from everyone except the roles you add.
Start Here
- #welcome (text): your rules and a short hello. Deny @everyone Send Messages. Make it your rules channel: Server Settings → Overview (or Community) → Rules channel. Step 9 of the setup page can write a starter welcome message from your show for you to paste in.
- #announcements (announcement): show news. Deny @everyone Send Messages. Members can follow it into their own servers.
Topics
- One text channel per game or subject your show covers (for example #cozy-games and #co-op). Open to everyone. Make at least two; you need them for onboarding in step 5.
Community
- #general (text): everyday chat. Open to everyone.
- #clips (text): highlights from the streams. Open to everyone.
- #self-promo (text): turn on Slowmode (10 minutes) in Edit Channel → Overview. Deny @everyone Send Messages, allow Streamer Send Messages, so only streamers you approve can post.
- Lobby (voice): hangouts. Open to everyone.
The Show
- #go-live (announcement): "we're live" posts and the Live Pings ping. Deny @everyone Send Messages.
- #questions-for-guests (text): viewers leave questions for the next guest before the show. Open to everyone.
- #guest-prep (text): turn on Private Channel and add Guest and Mods. You and your guests sort out the details here.
- Green Room (voice): turn on Private Channel and add Guest and Mods. Guests wait here before going on.
- Studio (voice): where the interview happens. Leave it visible, so viewers can see who's on, but deny @everyone Connect, and allow Guest and Mods Connect and Speak.
Staff
- Make the whole category private: Edit Category → Permissions → Private Category, add Mods. Channels inside follow it.
- #mod-chat (text): for you and your mods. Make it the Community updates channel (Server Settings → Community → Overview), so Discord's notices land here.
- #mod-log (text): set it as the System Messages Channel (Server Settings → Overview) to see joins and boosts without cluttering chat.
- #guest-requests (text): the later booking plugin will post guest requests here.
- AFK (voice): set it as the Inactive Channel (Server Settings → Overview, 15 minutes).
You should see five categories in this order: Start Here, Topics, Community, The Show, Staff. In the member view, a normal account sees no Staff category, no #guest-prep and no Green Room. To check, use View Server As Role in Server Settings → Roles → @everyone.
5. Onboarding: the questions new members answer
Onboarding shows a new member which channels they get when they join, and asks a question or two that hands out roles. It replaces bots like MEE6 for picking roles.
Discord only lets you turn it on once you have at least 7 default channels, at least 5 of which everyone can read and post in. The layout above has them.
- Server Settings → Onboarding.
- Default channels: tick #welcome, #announcements, #go-live, #general, #clips, #questions-for-guests and your topic channels. That's at least 5 that everyone can post in (#general, #clips, #questions-for-guests and two topic channels).
- Questions: add these two, changing the words to fit your show. Step 9 of the setup page can write them out for you (with your own welcome message), saved in your show.json:
- "What brings you here?" (pick any), with answers:
- "Watching the streams": shows #go-live and #questions-for-guests.
- "Chatting with the community": shows #general and #clips.
- Then one answer per topic channel, each showing that channel.
- "Want a ping when we go live?" (pick one): "Yes, ping me" gives Live Pings; "No thanks" gives nothing.
- "What brings you here?" (pick any), with answers:
- Turn on Ask before member joins for the first question if you want everyone to answer it.
- Press Enable Onboarding. Discord checks the default channels and tells you if something is missing.
You should see "Onboarding is enabled". To test it, open your server invite in a private browser window with a second account, or ask a friend to join and tell you what they saw.
6. The bot your site uses
Your site reads your events and your member count through a small bot of your own. It only reads; it never posts.
- Go to discord.com/developers/applications and press New Application. Name it after your show (for example "Pixel Pals Site") and create it.
- Open Bot on the left. Press Reset Token, confirm, and copy the token. This is a password for your bot. Put it on your server with the key helper (below), never in GitHub, show.json or a chat. Discord shows it once; if you lose it, press Reset Token again.
- Still on the Bot page: if you want your announcements to scroll along the bottom of your site, turn on Message Content Intent under Privileged Gateway Intents and save. Otherwise leave all three intents off.
- Invite it: open this address with your application's ID in place of
YOUR_APP_ID(on the General Information page, called Application ID):
https://discord.com/oauth2/authorize?client_id=YOUR_APP_ID&scope=bot&permissions=66560- Pick your server and press Authorize. The permissions it asks for are View Channels and Read Message History, nothing else.
You should see your bot in the member list (offline is normal; it only reads when your site asks).
Put the token on your server. Log in to your server (server guide, step 3) and run:
cd /opt/stream-eve-today && bash deploy/keys.sh DISCORD_BOT_TOKENPaste the token and press Enter; nothing shows as you paste. The helper asks Discord whether the token works, tells you your bot's name and whether it can see your server, saves it and restarts your site. If your site isn't on a server yet, the installer asks for the token at the end instead.
7. Tell your site about it
- Right-click your server's name → Copy Server ID (needs Developer Mode from step 1).
- On the setup page, step 8, paste it into Discord server ID.
- Optional: right-click #announcements → Copy Channel ID, and paste it into Discord announcements channel ID. Its posts will scroll along the bottom of your site (needs the Message Content Intent from step 6).
- Download show.json and upload it to your GitHub copy. Your site picks it up within 5 minutes.
You should see, within a few minutes of your site updating, your member count on your site's Community page.
8. Put your shows on the calendar
Each show is a Discord event. Your site's schedule, countdown, overlays and thumbnails all come from these.
- Click your server's name → Create Event.
- Where: choose Voice Channel → Studio, or Somewhere Else and paste your Twitch link.
- Event topic: the show's title, for example
Cozy Builds: Chat Picks the Roof. Before the colon is the small line on your thumbnail; after it is the headline. - Start date and time, and Repeat if it's weekly.
- Description: a one-line hook first, then these two lines, each on its own line:
Guests: Pip Turner, Juno Park
Topic: Cozy Games- Guests: player names only, separated by commas. If you don't know yet, write
Guests: TBAand fill it in later. - Topic: the subject, used to group your guests on your site.
- Press Create Event.
To skip a week, rename that event to No Show (or delete it), and your site leaves it out.
You should see the show on your site's Schedule page within a few minutes, and its guest name plates fill in on your overlays 90 minutes before it starts.
Coming later
A later Discord plugin will add:
- a "we're live" post in #go-live that pings Live Pings when you start streaming, and an "episode is up" post when the video lands on YouTube
- a welcome message in #general when someone joins
- setting your onboarding questions for you, from step 9 of the setup page
- an optional bot trap: a "do not post here" channel that bans spam bots and hacked accounts the moment they post in it
If something goes wrong
- Can't find Enable Community or Onboarding: you need to be the server owner or have Administrator, and it's only on a computer, not the phone app.
- "Enable Onboarding" says you need more channels: tick more default channels until at least 5 of them let @everyone read and post.
- Your schedule is empty on the site: check the server ID on the setup page (step 8), that the bot is in your member list, and the token: run
bash deploy/keys.sh DISCORD_BOT_TOKENand paste it again; the helper says whether Discord accepts it and whether the bot can see your server. Events in a channel the bot can't see won't show; keep them in Studio or Somewhere Else. - Guest plates show the wrong names: check the
Guests:line is on its own line and spelled the way the guest wants. - You pasted the bot token somewhere public (a chat, a screenshot, GitHub): press Reset Token on the Bot page (step 6). The old token stops working then. Put the new one on your server with
bash deploy/keys.sh DISCORD_BOT_TOKEN.
FAQ
Do I need MEE6 or another bot? No. Discord's own Onboarding hands out roles, and your site's bot reads your events. The later Discord plugin covers welcome messages and go-live posts.
Can I use the Discord server I already have? Yes. Do steps 6 to 8 for your server; steps 1 to 5 are optional ideas.
Why Medium verification and not Highest? Medium stops brand-new throwaway accounts without asking viewers for a phone number. If spam gets through, switch to Highest in a minute.
Do my guests need anything? They need to join your server. Give them the Guest role before the show so they can reach #guest-prep, the Green Room and the Studio.