Private Discord bot · D&D 5e, 2024 rules
The dice are
the easy part.
Any bot can roll 1d20. BardicAI adjudicates the turn — attack rolls against real AC, saving throws, damage types checked against resistances, conditions that expire on their own, concentration that breaks when it should. Your server, your table.
BardicAI
Masked construct, chaotic good
- Rules SRD 5.2.1 — the 2024 rules, and only those
- Combat Attacks and spells, fully adjudicated
- Commands 64 slash commands, all documented below
- Table Private to your server, and the DM screen stays closed
Traits
What it actually does
Six things worth installing it for. Everything here runs on the bot's own rules engine, not on someone at the table remembering to apply the modifier.
A rules engine, not a macro. Attacks, spells, saves, conditions, auras and concentration all resolve mechanically. Resistances and immunities apply themselves, death saves follow RAW down to the automatic failures on a natural 1, and multiattack, grapples and legendary actions are adjudicated rather than narrated.
D&D Beyond, natively.
/ddb import pulls the whole sheet — ability scores, HP math, skills, spells,
weapons, inventory, portrait. It re-syncs on its own when a player joins initiative with a
sheet that changed, and magic item bonuses (a Wand of the War Mage's spell attack bonus)
are read from the sheet's own data.
A co-DM that reads the room.
/dm is a private assistant that already knows the live encounter: initiative
order, current HP, active effects, monster stat blocks. Hand it a monster's turn, ask it a
rules question, or let it run legendary actions — the players never see the conversation.
Speak as anyone.
/say and /write post in character under the right name and face:
any PC with their D&D Beyond portrait, any monster in the fight with its token art, or
the Dungeon Master persona. Full Markdown, and a drop-in replacement for Tupperbox.
Dice with a grammar.
/roll handles advantage, keep and drop, and exploding dice.
/check knows which proficiencies your character actually has. Every result
shows the individual dice, labeled by die size, so nobody has to take the bot's word for it.
Campaigns that keep secrets. A campaign binds to one or more channels. Creating one takes Discord's Manage Server permission — the admin who runs it becomes the DM and can deputize co-DMs. Players never see monster defenses, hidden notes, or anything else from behind the screen — the boundary is enforced by the bot everywhere, not remembered command by command.
Multiattack
One bot instead of three
A 5e server usually ends up running a sheets-and-dice bot, a second bot so people can post in character, and a third that just rolls dice. BardicAI covers what your table uses all three for, under one set of slash commands.
Usually Avrae
Sheets, dice and initiative
Import a character from D&D Beyond, roll checks that already know your
proficiencies, keep initiative in order. BardicAI does that much, then keeps going:
attacks and spells resolve their real effects — damage measured against resistances,
conditions that stick and expire, concentration, death saves — instead of leaving the
arithmetic to whoever is paying attention. /dm adds a co-DM that knows
the encounter.
Usually Tupperbox
Speaking in character
/say and /write post as any PC with their D&D Beyond
portrait, any monster in the fight with its token art, or the Dungeon Master. The bot
already knows who is in the scene, so there are no proxy tags to register — and
nothing has to read your channel to make it work.
Usually a dice bot
Rolling anything else
/roll takes a full grammar — advantage, keep and drop, exploding dice —
and shows every die it rolled, labelled by size. /check handles the ones
tied to a character. That is one fewer name in the member list.
Consolidation, not parity. This is about the jobs a table actually uses those bots for. If yours leans on Avrae's alias and workshop ecosystem, that is a deep thing of its own and BardicAI makes no attempt to reimplement it.
Actions
How a turn feels
Stick casts Chromatic Orb from a 3rd-level slot and picks acid.
One command: /cast spell:Chromatic Orb target:Grick Alpha level:3 damage-type:acid.
The bot rolls the spell attack with the character's real modifier, compares it to the target's AC, rolls the base 3d8 plus 1d8 per slot level above 1st, applies whatever the target resists or ignores, and writes the new hit points down.
Every die is shown. Nothing about the grick's defenses is — the players get the number, the DM gets the reasoning.
Getting started
Two ways in
Players need about a minute. Opening a table takes about as long.
For players
Join a table
-
Get into the server
Your DM adds BardicAI once. If you can see the play channel, you can use it.
-
Import your character
Set your D&D Beyond sheet to public, then run
/ddb importwith the character URL. Stats, HP, skills, spells, weapons, inventory and portrait come across. -
Roll initiative
/joinwhen the fight starts. If you levelled up or changed gear since last session, the sheet syncs on the way in. -
Stay in character
/sayposts as your character, portrait and all./rolland/checkhandle everything else.
For DMs
Run a table
-
Invite BardicAI
Add the bot to the server you play in. Invite link.
-
Open your campaign
/bardic campaign createin your play channel (needs Discord's Manage Server permission). You become the DM automatically, and can deputize co-DMs with/bardic dm add. -
Add your other channels
Play across several channels? Bind each one to the campaign with
/bardic. -
Start the fight
/encounteropens initiative and pins the tracker. Your players/join, and you are running combat.
Reference
Every command
Every slash command BardicAI answers to, exactly as it appears in Discord.
Getting Started
/bardic 🔗
Configure campaigns and who the DMs are (admins only).
/bardic dm add
Grant DM privileges to a user or role.
/bardic dm remove
Revoke DM privileges from a user or role.
/bardic dm list
List the DMs for this channel's campaign.
/bardic campaign create
Create a campaign and bind it to this channel.
/bardic campaign bind
Bind a channel to a campaign (several channels can share one campaign).
/bardic campaign list
List this server's campaigns.
/bardic campaign info
Show which campaign is bound to this channel, and its DMs.
/bardic campaign add
Put an existing character on this channel's campaign.
/bardic campaign remove
Take a character off this channel's campaign (the character is kept).
/bardic campaign delete
Delete this channel's campaign (asks for confirmation).
/help 🔗
Show Bardic help and available commands
/timezone 🔗
See or set the time zone used to read times you type (polls, scheduling)
Characters & Sheets
/character 🔗
Manage your characters
/character list
List your characters in this server
/character set-active
Set your active character
/character show
Show a character's summary
/character set-ac
Override a character's armor class (e.g. after an import)
/character set-hp
Override a character's maximum HP (e.g. homebrew/custom items the import missed)
/character set-init
Override a character's initiative bonus (and advantage)
/character set-speed
Override a character's walking speed
/character delete
Delete one of your characters (with confirmation)
/character create
Quick-create a character (name, class, level, ability scores)
/coins 🔗
Show your coinpurse, or add/subtract coins (e.g. gp:-100)
/ddb 🔗
Import public D&D Beyond characters and link your DDB account
/ddb import
Import a PUBLIC D&D Beyond character into a new Bardic character
/ddb import-spell
Import a spell from a D&D Beyond sheet so the table can cast it
/ddb link
Link your D&D Beyond account reference (user id or profile URL)
/ddb unlink
Remove your linked D&D Beyond account reference
/ddb update
Re-import your active character from D&D Beyond (no link needed)
/ddb status
Show your linked D&D Beyond account reference
/ddb cleanup
DM only: delete all imported characters in this server (with confirmation)
/pc 🔗
Manage your characters — alias of /character
/pc list
List your characters in this server
/pc set-active
Set your active character
/pc show
Show a character's summary
/pc set-ac
Override a character's armor class (e.g. after an import)
/pc set-hp
Override a character's maximum HP (e.g. homebrew/custom items the import missed)
/pc set-init
Override a character's initiative bonus (and advantage)
/pc set-speed
Override a character's walking speed
/pc delete
Delete one of your characters (with confirmation)
/pc create
Quick-create a character (name, class, level, ability scores)
/rest 🔗
Take a short or long rest with your active character
/rest short
Take a short rest (spend hit dice)
/rest long
Take a long rest (restore HP, hit dice, and resources)
/sheet 🔗
Show your character's sheet, spells, or inventory
/slots 🔗
View or adjust spell slots (yours; the DM can adjust anyone's)
/slots show
Show current spell slots
/slots restore
Restore (add back) spell slots of a level, up to the maximum
/slots set
Set the exact number of remaining slots of a level
/toggle 🔗
View or set your on/off preferences
/update 🔗
Re-import your active character from D&D Beyond (same as /ddb update)
Dice & Checks
/check 🔗
Skill or ability check — pick the type, add adv/bardic/+2/dc:15 in with
/r 🔗
Quick dice roll — alias of /roll
/roll 🔗
Roll dice or a check — insight, arcana adv bardic, 2d6+3; house rules: 2d6!, r1, (2d6)*2
/save 🔗
Roll a saving throw with your active character (or a combatant, DM only)
Combat
/action 🔗
Show & use a combatant's actions (defaults to whoever's turn it is)
/arm 🔗
Arm a reaction spell to fire automatically while you're away (Silvery Barbs auto-adjudicates)
/attack 🔗
Make a weapon/attack roll with your active character
/bonus 🔗
Show a combatant's available bonus actions and use one
/condition 🔗
Manage conditions on a combatant in the active encounter
/condition add
Apply a condition (defaults to your active character)
/condition remove
Remove a condition (defaults to your active character)
/condition list
List a combatant's active conditions
/cover 🔗
Set a combatant's standing cover (applies to attacks and DEX saves until changed)
/deathsave 🔗
Roll a death saving throw for your active character
/dismiss 🔗
Dismiss a summoned creature you control (removes it from the fight)
/distance 🔗
Distance to one combatant or your whole view of the field — or set: to record where someone is
/hp 🔗
Adjust your active character's (or, as DM, any combatant's) hit points
/hp damage
Take damage
/hp heal
Regain hit points
/hp temp
Set temporary hit points
/hp set
Set current hit points directly
/initiative 🔗
Roll or set initiative in the active encounter
/inspire 🔗
Heroic Inspiration: the DM grants it; a player cashes it in to reroll
/inspire grant
DM: award Heroic Inspiration to a character
/inspire use
Cash in your Heroic Inspiration to reroll your most recent d20
/join 🔗
Join the active combat with your active character (alias for /initiative)
/map 🔗
The battlefield: melee, formation, elevation, your distances — and any creature's
/move 🔗
Move, dash, disengage, teleport, jump, or fly
/move toward
Move toward a combatant (default: your full Speed)
/move away
Move away — provokes opportunity attacks from melee you leave
/move disengage
Disengage action: leave melee with NO opportunity attacks, then move
/move dash
Dash action on the ground: up to TWICE your Speed (flying? /move fly dash:True)
/move teleport
Teleport (Misty Step, Dimension Door…): no opportunity attacks, ignores Speed
/move jump
Jump toward/away: a jump grant (Jump spell, Springing boots) or a Long Jump — leaving reach provokes
/move fly
Fly: climb, descend, close on or get away from a target (leaving reach provokes)
/move land
Come down to the ground (controlled — no damage)
/move fall
Fall to the ground from your current height (damage + Prone)
/move swap
Trade places with a willing creature within 5 ft
/myturn 🔗
Show your character's class features available on your turn
/next 🔗
Advance to the next turn (shorthand for /turn)
/position 🔗
DM: place any combatant anywhere — any distance, any height, no limits
/potion 🔗
Drink a potion from your inventory — or feed one to an ally — and apply its effects
/previous 🔗
Step back to the previous turn (shorthand for /turn previous:true)
/reaction 🔗
Show a combatant's reactions and use one
/ready 🔗
Ready an action (spends your Action): declare a trigger, release later with your Reaction
/request 🔗
DM: request a saving throw or skill check with a public card (trap, hazard, or just because)
/summon 🔗
Add a creature YOU control to the fight (familiar, steed, summon)
/turn 🔗
Advance to the next turn in the active encounter
/use 🔗
Use one of your character's class features (spends a use; runs it if automated)
/wildshape 🔗
Druid: Bonus Action to become a Beast (or revert), taking on its stat block
/wildshape into
Bonus Action: shape-shift into one of your known Beast forms
/wildshape revert
Bonus Action: return to your normal form
Spells & Effects
/aura 🔗
Apply an active aura to a combatant — damage (Spirit Guardians) or healing (Aura of Vitality)
/cast 🔗
Cast a spell and auto-resolve its effects with your active character
/contingency 🔗
Arm a self-target spell to auto-cast on a combat trigger (a light Contingency)
/effect 🔗
Manage timed combat effects on a combatant (DM only)
/effect add
Add a timed effect to a combatant
/effect remove
Remove an effect from a combatant
/effect list
List a combatant's effects (or every combatant's)
Roleplay & Table Talk
Delete Post context menu
Right-click a message → Apps → Delete Post.
Edit Post context menu
Right-click a message → Apps → Edit Post.
Ping Player context menu
Right-click a message → Apps → Ping Player.
Reply in Character context menu
Right-click a message → Apps → Reply in Character.
/campaign 🔗
Show this channel's campaign — its DM, its characters, and its channels
/note 🔗
Attach a freeform note to a combatant (DM only)
/note set
Set a combatant's note
/note clear
Clear a combatant's note
/poll 🔗
Polls: choice, ranked, score, time → event, loot, safety; anonymous, repeats, media, calendar, CSV
/poll create
Start a poll (a form asks for the question and options)
/poll time
Find a time: everyone marks Yes / If needed / No per slot; the best becomes a server event
/poll results
See a poll's results (privately, as far as you're allowed)
/poll close
Close a poll now and post its results (creator, DM or admin)
/poll list
This channel's polls
/poll media
Add (or remove) a picture, sound or video on a poll or one of its options
/poll export
Download a poll's results as a CSV file (privately, only what you're allowed to see)
/poll calendar
Subscribe to this server's events in Google, Apple or Outlook Calendar (private link)
📖 How polls work
Kinds of poll
- 🔘 Single choice, ☑️ Multiple choice and 👍 Yes / No / Abstain — the everyday polls.
- 🥇 Ranked choice — rank the options privately; the winner is found by instant runoff, shown round by round.
- ✅ Approval — tick every option you'd accept. ⭐ Score — rate each option 1–5; the best average wins.
- 📅 Time poll (
/poll time) — everyone marks Yes / If needed / No for each time; the winner becomes a Discord event. - 🎲 Party decision — one vote per character, so a player with two PCs votes twice.
- 💰 Loot: Need / Greed — Need, Greed or Pass per item; Need beats Greed, ties are rolled with a visible d100, and the results suggest who gets what.
- 🚦 Safety check-in — 🟢 / 🟡 / 🔴, anonymous by default, with an optional anonymous note only the DM reads.
- Just run
/poll createwith nothing else and a builder opens: pick the kind, privacy, deadline and extras from menus, then write the question. Prefer typing? Every choice is also a/poll createoption (type:,anonymous:,closes-in:…), and typing any of them skips the builder. - ⚡ Quick Discord poll —
/poll create native:Trueposts Discord's own built-in poll instead (single, multiple or yes / no; up to 10 answers; 1 hour to 32 days). It isn't anonymous and has none of the extras below — handy for a throwaway question.
Privacy
anonymous:is truly anonymous: the bot never stores who voted — not even for the DM — and it can't be switched off later. That's why anonymous polls have no voter list and no "waiting on" reminders.results:chooses when counts show: Live, After you vote, or Secret until close.
Voting and managing
- Vote with the buttons on the poll card (ranking, scores and time grids open a private picker). Vote again to change your mind.
- ⚙️ Manage lets anyone change or clear their vote and, when the poll allows it, see who voted or who hasn't yet.
- The poll's creator, the DM or a server admin also get Edit, Deadline, Add media, Remind, Repeat, Close now and Delete.
- ➕ Add option appears when
allow-adding:is on. closes-in:takes2d,6hor a time likeFri 7pm;close-when-all-voted:closes as soon as every expected voter is in. A results card is posted when it closes.- Expected voters are the campaign's players by default (or a role, or anyone in the channel);
nudge:reminds only the people who haven't voted.
Time polls and events
- 📅 Any poll whose options are dates is a scheduling poll —
Fri 7pm,Sat Nov 8 7pm, or justSat/Nov 8. No need to remember/poll time: a single-choice, multiple-choice, ranked, approval or score poll of dates puts its clear winner on the Events calendar too. One non-date option ("Can't make it") is fine; if it wins, there's no event. - 🕖 Days without a time use the server's usual start time. The first time, the bot asks the creator (⚙️ → Session time, or a button when a day wins) and remembers it from then on.
- Times you type are read in your time zone (see
/timezone) and shown to everyone in their own. - When it closes — or a manager presses 🔒 Lock in — the best time becomes a Discord Scheduled Event on the server's Events calendar; tap Interested there. A tie goes to the creator to pick.
- Reminders go out 24 hours and 1 hour before, to everyone who said they'd come (Yes / If needed, or picked that date) and everyone marked Interested.
- 🔁 Moved or cancelled in Discord? The bot notices, posts it under the results (pinging the same people), and re-times the reminders.
- The bot needs the Create Events permission. Without it the poll still closes, and the results say what to turn on, with a 🔁 button to try again.
- 🖼️ Event cover — the poll's picture becomes the event's cover. ⚙️ → Event cover lets a manager use a different image or none, before or after the event exists. Discord shows covers wide (about 2.5:1, at least 800×320).
Calendars
- 📥 Add to calendar on the results gives anyone a one-event
.icsfile for Apple, Outlook or Google Calendar. It carries its own alerts (24 hours and 1 hour before), so your phone reminds you too. - 🗓️ Google Calendar is one tap: the button opens Google's add-event page already filled in.
- If the session moves, the notice has a fresh 📥 copy that replaces the one you added; if it's cancelled, 📥 Remove from calendar marks it cancelled.
/poll calendargives you a private subscribe link to the server's whole Events calendar, kept up to date automatically. Anyone with the link can read it, so share it only with the table.- A DM or server admin can run
/poll calendar reset:Trueto make a new link; the old one stops working.
Repeating polls
- ⚙️ → 🔁 Repeat takes a schedule like
weekly Mon 10am,every 2 weeks Fri 7pmordaily 9am; pause, resume or stop it from the same menu. - A repeating time poll moves its times forward each week, so a weekly "next session?" always asks about the coming days.
Pictures, sound and video
- Add media with
media:(a file),media-url:(an https link — YouTube works), the form's upload box, or later with/poll media— on the poll or on one option. - Images show on the card; audio and video play right in Discord.
Exporting
/poll exportor ⚙️ → 📄 Export CSV sends you a spreadsheet of a poll's results — only what you're allowed to see. Anonymous polls export totals only; a secret poll exports once it closes.
For the DM
- Ask
/dmto draft a poll — you get a preview and Confirm posts it — or to summarise a poll's results and notes privately.
/say 🔗
Speak in-character: post a message as your character (DMs: any character or NPC).
/schedule 🔗
Find a date for the next session — pick days from a menu; the winner goes on the Events calendar
📖 Scheduling the next session
No typing
- Run
/schedule. Pick the days that might work from the menus — everything from a week to about six weeks out, in two lists — then the start time and how long the session runs, and press 📅 Post the poll. - ✏️ Question & deadline changes the question, adds a description, or sets when the poll closes. By default it closes the day before the first day you picked.
- The start time you pick becomes the server's usual one: next time it's already selected, and date polls use it too.
What happens next
- Everyone marks Yes / If needed / No for each day. When it closes — or you press 🔒 Lock in — the best day goes on the server's Events calendar, with reminders 24 hours and 1 hour before.
- The results carry 📥 Add to calendar (Apple, Outlook, Google — with its own alerts) and a one-tap 🗓️ Google Calendar button. If the session is moved or cancelled in Discord, everyone who said yes is told, with a fresh copy for their calendar.
- Need a voice channel, a place, a quorum, or exact times rather than whole days? Use
/poll time.
/write 🔗
Speak in-character with a multi-line Markdown editor (headers, quotes, lists…).
DM Tools
/combat 🔗
Manage combat in this channel (DM only)
/combat start
Start combat in this channel
/combat begin
End the Round 0 prep phase, roll initiative and start Round 1 (DM only)
/combat show
Show the current combat tracker
/combat list
Re-post the tracker at the bottom of the channel (visible to everyone)
/combat post
Re-post the tracker at the bottom of the channel (alias of list)
/combat add-monster
Add a monster combatant (DM only)
/combat remove
Remove any combatant from combat (DM only)
/combat remove-monster
Remove a combatant from combat — alias of /combat remove (DM only)
/combat leave
Take your own character out of this combat
/combat goto
Jump the active turn directly to a combatant (DM only)
/combat set-initiative
Change a combatant's initiative in this combat (yours; DM: anyone)
/combat reset-turn
Give a combatant back its Action, Bonus Action, and Reaction for this turn (DM only)
/combat restore-legendary
Restore legendary actions to a combatant that has them (DM only)
/combat restart
Restart this combat from round 1 (asks to confirm)
/combat reactions
Whether a monster's protective Reaction fires or asks you first (DM only)
/combat end
End combat
/dm 🔗
Ask the AI DM assistant to narrate or adjudicate (DM only).
/homebrew 🔗
Create and manage campaign homebrew content (DM only).
/homebrew create-spell
Author a homebrew spell by pasting its JSON.
/homebrew create-item
Author a homebrew magic item by pasting its JSON.
/homebrew create-monster
Author a homebrew monster: paste its JSON, or its printed stat block.
/homebrew list
List this campaign's homebrew content.
/homebrew delete
Delete a homebrew item by slug.
/rolls 🔗
Show the recent dice rolls in this channel (DM only)
/spelltest 🔗
DM: simulate a character casting a spell at an SRD monster — stateless, nothing is spent.
Content & Reference
/content 🔗
Import and manage uploaded content packs (DM only).
/content import
Import a JSON content pack from a file attachment or an https URL.
/content list
List installed content packs.
/content remove
Remove an installed content pack and all of its items.
/lookup 🔗
Look up an SRD spell, monster, rule, class, feat, and more
/lookup spell
Look up an SRD spell
/lookup monster
Look up an SRD monster stat block
/lookup rule
Look up a rules-glossary entry
/lookup race
Look up a playable race's traits
/lookup class
Look up a class's proficiencies and hit die
/lookup subclass
Look up a subclass
/lookup feat
Look up a feat
/lookup background
Look up a background
/lookup feature
Look up a class or racial feature
No command matches that filter.