Run a tournament

Run check-ins, releases, veto, timing and reminders in Discord on tournament day.

Last updated

These tasks need a configured Bot Manager role and a finished setup. Something not working? See Recovery.

Click a command marked “copy”, paste it in Discord, then fill in its options.

Check-in

Open attendance in the announcement channel after participants are linked and active in CalicoTab.

Choose the attendance rule first: one representative per team (rep) or every team member (all). Adjudicators are always counted individually.

  • Choose the time: replace each <HH:MM> placeholder with your start or end time. Use start-time:now to start after confirmation.
  • Keep the window valid: it must last 5 minutes to 12 hours and may cross midnight.
  • Check the timezone: times use CalicoTab’s timezone or your timezone override.
  • Review and confirm: check the exact date, time and mode privately, then select Open Check-in Window. The public card appears in the announcement channel at the start time.
Debaters and Adjudicators: check in together
/checkin start start-time:<HH:MM> end-time:<HH:MM> mode:rep
  • Debaters: choose mode:rep for one active representative per team, or mode:all for every active team member.
  • Adjudicators: each checks in individually using the same card, in either mode.
  • Reports: preview and confirm the window. The bot reports missing teams and Adjudicators at midpoint and closing.
Optional: ask Adjudicators to check in again
/checkin adjudicator
  • When to use: when you need a fresh Adjudicator availability check for the round.
  • Reset after confirmation: shows a private preview, then marks active Adjudicators as checked out (including anyone already checked in) and posts a separate card with ✅ Check In and ↩️ Check Out.
  • Debaters: their check-ins are unchanged.
Close either check-in early
/checkin close
Ends active participant and Adjudicator cards immediately. At the scheduled participant end, the bot closes them automatically.
  • Closed card: its buttons no longer work. Participants should use the newest card posted by the bot.
  • Busy periods: participants may receive a private loading reply while requests wait. Ask them to wait for the final confirmation before clicking again; loading does not mean the check-in was saved. Requests still waiting when a card closes are rejected. A full queue, expired wait or restart asks participants to retry. Allow time for final confirmations before closing the window.
  • Slow CalicoTab: for an already-loaded tournament, requests may wait until the window closes, capped at 12 minutes from the button click. Closing or replacing a card cancels requests that have not started. Without loaded tournament state, the cap remains three minutes. Invite participants in waves when responses are very slow; keep the window open and check final confirmations and /missing before closing.
  • No buttons: when Participant Self Check-in is disabled in CalicoTab, the bot posts a notice without buttons. Enable that CalicoTab setting if participants should respond through Discord.
  • Mentions: opening notices mention @everyone. Midpoint and final reports do not mention anyone.

Missing check-ins

Check live CalicoTab attendance before releasing the draw.

  • Who is missing? Check Adjudicators, one representative per team, or every team member.
  • Where should the report go? Use visibility:hidden for a private report. Use visibility:public to post immediately in the current channel and mention @everyone. Start with a private report when checking readiness.
  • Which team rule? Use mode:rep when one representative checks in, or mode:all when every team member checks in. An active check-in supplies the default.
/missing visibility:<visibility> type:adjudicators
List Adjudicators who have not checked in, counting Adjudicators individually without requiring a mode parameter.
/missing visibility:<visibility> type:teams mode:rep
List teams with no active representative checked in.
/missing visibility:<visibility> type:teams mode:all
List teams with at least one active member missing. The report shows progress such as 0/3, 1/3, or 2/3.

Concurrent reports share one CalicoTab status scan across both team modes, cached for up to 15 seconds. The final window report waits for already-admitted check-ins and starts fresh reads. If the bot says check-ins changed during loading, wait for pending check-ins to finish and run /missing again; it does not publish that interrupted scan.

Draw release

When the Tab Team publishes the draw in CalicoTab, the bot automatically posts it in the announcement channel and DMs linked participants. Discord commands cannot publish or change the CalicoTab draw.

For large releases, DMs are queued and may take several minutes. Participants can use View Draw or /room while waiting. Reposting /draw does not restart the participant DM batch.

CalicoTab may make a draw public in two steps:

  • Team release: teams, sides, and rooms become public. Adjudicator assignments stay private.
  • Full release: Adjudicator assignments also become public. The bot then sends updated DMs to Debaters and Adjudicators.

After Full release, Adjudicator allocation changes are checked every three minutes. Only affected linked Adjudicators receive a Draw Update DM.

/draw
Immediately repost the latest public draw to the configured announcement channel if the automatic announcement did not appear. There is no confirmation; the command result is private.

Motion release

Publish the current round’s motions in CalicoTab. The bot automatically posts them in your announcement channel, including any info slides with extra context. For long motions, participants can use View Public Motions to read the full text.

Running a tournament with motion veto (such as Asian Parliamentary or Australs)? The bot supports interactive voting directly in Discord; see Veto.

/motion
Immediately repost the current round’s latest public motion to the configured announcement channel if the automatic post did not appear. There is no confirmation, and the result is private. This command cannot publish or edit a motion in CalicoTab.

To announce prep time and the round start, use /debate start.

Veto

For debate formats with motion preference and vetoes (such as Asian Parliamentary or Australs), the bot runs interactive motion voting directly in Discord.

When motions are published in CalicoTab, the bot automatically posts the ⚔️ Motion Release & Veto card to your announcement channel. The veto starts only when the round’s motions and draw are both public and the draw loads from CalicoTab. Until then, the bot waits and does not post the raw motions.

  • Team debater authorization: any linked debater on the assigned team can submit for the team. They click 🗳️ Submit Team Veto in the announcement channel, or 🗳️ Submit Motion Veto inside /room. Teams should agree on their ranking before clicking Submit Team Veto.
  • Private voting steps: debaters privately select their 🥇 1st Choice and ❌ Veto motion. The remaining motion becomes their 🥈 2nd Choice.
  • Check room status: participants and adjudicators can click 📋 My Room Status on the announcement card or run /room. The private reply shows whether each team in their room has locked in preferences or is still deciding.
  • Parallel preliminary rooms: each debate room resolves independently as soon as both teams submit, or when time runs out. The central card updates first. Linked debaters and adjudicators then receive the result through the managed DM queue, so it may arrive shortly afterward.
/config veto enabled:true duration:<minutes>
  • Enable and countdown: enable motion veto and set the voting duration (1–15 minutes, default 5 minutes). Requires Manage Server.
  • Flexible configuration: staff can set either option individually or both together (for example, /config veto enabled:true).
  • When disabled: motions use standard announcements without voting.
/veto status
Privately check tournament-wide motion veto progress for the current public round. It shows which rooms are finalized, which teams have locked in their preferences, and which teams are still deciding. No DMs are sent.
/veto start
Immediately start or recover an active interactive veto session for the current public round if the automatic post did not appear. There is no confirmation, and the result appears in the configured announcement channel immediately. The command refuses, and posts nothing, if the motions are only staged in CalicoTab, the draw is not public, or CalicoTab’s draw cannot be loaded.

Schedule & round timing

Publish round times in CalicoTab. Then share the schedule in Discord and announce round starts and other countdowns.

/schedule
  • Edit first: change rounds and times in CalicoTab. The bot only displays that schedule in Discord.
  • Preview and post: review the latest schedule privately, then confirm to post it in the current channel. The bot mentions @everyone only after confirmation.
/debate start time:<HH:MM>
Preview the current round’s start time privately, check its date and timezone, then confirm to post in the configured announcement channel. Replace the time placeholder with the intended time.
See the preview and round-start announcement
Moji Tournament BotAPPToday at 5:29 PM

Round-start preview
Timezone: Asia/Ho_Chi_Minh (GMT+7)
Source: override
Interpreted: Wednesday, 9 September 2026 5:44 PM (in 15 minutes)
Rounds: Round 1

Nothing has been posted publicly yet.

Post AnnouncementCancel

Only you can see this

Review the date and timezone. Post Announcement publishes to the configured announcement channel; Cancel publishes nothing. This example shows a reader in GMT+7.

Moji Tournament BotAPPToday at 5:29 PM

🧠 Prep time for Round 1 ends in 15 minutes
⏰ The round starts at 5:44 PM (GMT+7).

Posted after you confirm /debate start time:<HH:MM>. Discord updates the relative countdown automatically.

/event start minutes:<minutes> name:<name>
Use for an upcoming event start countdown, such as name:Break Announcement or name:Award Ceremony. Displays ⏳ **Name** starts in MM:SS.
/event end minutes:<minutes> name:<name>
Use for a deadline countdown. Displays ⏳ **Name** ends in MM:SS.
/config timezone zone:<IANA timezone>
A configured Bot Manager saves the timezone for staff-entered check-in, round-start and ballot reminder times. It saves immediately, and the result is private. If your event uses Vietnam time (GMT+7), run /config timezone zone:Asia/Ho_Chi_Minh. To use CalicoTab’s timezone again, run /config timezone zone:api. This does not change CalicoTab’s schedule.

Ballots & feedback

After the round, check missing ballots, schedule reminders, then follow up. Chairs must be linked and able to receive DMs; ballot checks use current public rounds.

/ballots status
First, privately find rooms that still need a ballot and resolve unlinked Chairs.
/ballots start time:<HH:MM>
Next, replace the time placeholder with the intended reminder time. Review the private date, timezone and rounds, then confirm Schedule Reminder. This replaces the previous schedule; nothing is sent immediately. At the chosen time, the bot checks the selected rounds and DMs each linked Chair whose room still has no ballot record.
/ballots remind
Remind linked Chairs of still-missing rooms in the last confirmed schedule. There is no second confirmation, and delivery results stay private.
  • Active delivery: wait for it to finish before you retry or replace its schedule.
  • Partial retry: skips confirmed successful room reminders. It retries pending or known failed deliveries, including after a restart.
  • Uncertain outcomes: these are not automatically resent. Check receipt with the Chair before you confirm a new schedule.
  • Completed batch: another invocation sends a fresh reminder.
  • Restarts: a timeout does not mean no DMs were delivered. An overdue or interrupted schedule does not send late automatically after a restart.
/feedback status visibility:hidden
  • Check privately: review tournament-wide missing feedback with visibility:hidden. No DMs are sent.
  • Publish report: use visibility:public to post the report in the channel and mention @everyone. No preview is shown.
/feedback remind
  • Send reminder DMs: send direct messages to linked Debaters and Adjudicators with missing feedback across the tournament.
  • Delivery results: privately check sent and failed DM counts, plus missing Teams or Adjudicators without usable links.

Direct Message

Teams
/dm type:team message:<your message>
Send to all linked Debaters across the tournament teams. Each linked Debater receives a separate DM.
Adjudicators
/dm type:adjudicator message:<your message>
Send to all linked Adjudicators.
Individuals
/dm type:individual message:<your message>
Select up to 25 human server members using the member picker. They do not need to be linked to CalicoTab.

Requires a configured Bot Manager role. Replace <your message> with your message, then review the private preview and recipient count. Select Send DMs to send or Cancel to discard. Nothing is sent before confirmation; the preview expires after five minutes.

The bot sends one DM per person and reports delivery failures privately. If delivery is blocked, ask the recipient to allow direct messages from server members, then retry.

↑