← Back to Docs

// Guide

Events

Schedule time-based meetups with RSVPs and reminders, or run goal-based delivery drives with a live leaderboard.

TierFree
You'll needThe event system enabled and at least one event type with a board channel.

StarBot's event system handles two distinct kinds of events from the same set of commands and tables. Pick the one that matches what you're running:

  • Time event — a scheduled meetup. Members RSVP Going / Maybe / Leave; capacity + waitlist; multi-tier DM reminders; broadcast at start; post-event summary.
  • Goal event — a delivery drive. Set item quantity targets; members fulfill via the existing Orders pipeline; live leaderboard ranks contributors by value; auto-completes when all items are filled.

Both flavors are administered through /eventadmin, /config-eventsadmin, and /post-eventadmin in Discord, and through the Events tab on the dashboard.

The Events tab at a glance

Events is its own tab on your guild dashboard (alongside Features, Permissions, Server Stats, Analytics, and Tokens). It has three sections: system settings, event types, and the events themselves.

Guild Dashboard — Events tab
FeaturesPermissionsServer StatsAnalyticsEventsTokens
Event System Settings
Enable the system, pick a default timezone, and choose the auto-voice category.
Configure
Event TypeBoardBroadcastRemindersActive
Server-Wide#event-board#announcements1440, 60Yes
Logistics#logistics-events60Yes
EventTypeModeStartRepeat
Friday Ops NightServer-WideTime2026-08-01 20:00Weekly
Pyro Resupply DriveLogisticsGoal2026-08-03 12:00One-off
New Event
The Events tab: system settings up top, then your event types, then the events list.

One-time setup

Before creating any events, enable the system and pick a guild-wide default timezone:

  1. 1
    Open the dashboard's Events tab (or run /config-events settings in Discord).
  2. 2
    Toggle the event system on under Event System Settings.
  3. 3
    Set the Default timezone to an IANA name like America/Chicago, Europe/London, or Australia/Sydney, then save. Don't use abbreviations like CST — they're ambiguous and DST handling is unreliable.
  4. 4
    Create at least one Event Type under Event Types (click New Type, or use the auto-created Server-Wide type). Types are how you bucket events; each type has its own broadcast channel, role to ping, and reminder timings.

For each type you create, set:

  • Board channel — where the RSVP embed posts. Without this, time events won't show up anywhere visible.
  • Broadcast channel (optional) — where the "Event starting now!" ping goes at start time.
  • Broadcast role (optional) — role to mention in the broadcast.
  • Reminder offsets — comma-separated minutes-before-start when DM reminders fire. Default 1440, 60 (24h + 1h before).
  • Log channel (optional) — where the post-event summary lands.

Time events

Create a time event with /event create:

/event create type:Server-Wide title:Friday Ops Night date:2026-06-12 time:20:00 duration_minutes:180 capacity:30 description:Bounty hunting in Pyro location:Pyro System

What happens:

  1. The bot creates the event row and materializes its first occurrence.
  2. Within a few seconds, the RSVP embed posts to the type's board channel with three buttons: Going ✅, Maybe ❔, Leave 🚪.
  3. The event also appears in Discord's server-sidebar Events tab (provided the bot has Manage Events permission).
  4. Members click Going. If the capacity is hit, additional Going clicks land on a waitlist; if someone leaves, the earliest waitlisted member is automatically promoted.
  5. At the configured offsets (default 24h and 1h before), every Going member gets a DM reminder.
  6. At start time, the broadcast channel pings the broadcast role. The Discord scheduled event transitions to Active.
  7. At end time (start + duration), the Discord scheduled event transitions to Completed. The bot posts a summary embed in the log channel with the final attendee list.
SB
StarBotApp
Friday Ops Night
Bounty hunting in Pyro
When
Fri, Jun 12 · 8:00 PM
Duration
3 hours
Location
Pyro System
Going (12/30)
@Rook, @Vex, @Talia, +9 more
Maybe (3)
@Corso, @Nyx, @Brant
Server-Wide · Event #42
Going ✅Maybe ❔Leave 🚪
The RSVP embed StarBot posts to the type's board channel.

Recurring time events

Add repeat: and (optionally) interval: to make an event recur:

/event create … repeat:weekly interval:1   # every week
/event create … repeat:daily                # every day
/event create … repeat:monthly interval:2   # every other month

Each occurrence gets its own RSVP embed, its own Discord native event, and its own reminders. The bot materializes future occurrences up to 60 days ahead. On the dashboard create modal, the same controls appear as Repeat (One-off / Daily / Weekly / Monthly) plus an "every N" interval.

Auto-created voice channels

Time-events can earn members tokens for time spent in the event's voice channel (see the Tokens & Rewards guide). You have two ways to provide that channel:

  • Pick an existing channel — set voice_channel on /event create.
  • Auto-create a temporary channel — turn on Auto-create voice channel for the event. When the occurrence goes live, the bot creates a voice channel named after the event inside your events voice category, and deletes it automatically when the event ends. Recurring events get a fresh channel each occurrence, so nothing piles up.

Setup

  1. 1
    Designate a category. In the dashboard's Events tab → Event System Settings, pick an Auto-voice category. (Bot equivalent: /config-events settings voice_category:<category>.) The auto-created channel inherits that category's permissions — set who can see/join the category once, and every auto channel follows it.
  2. 2
    Opt an event in. On the dashboard create modal, check "Auto-create a temporary voice channel … for token earning". (Bot equivalent: /event create … auto_voice:true.) When auto-voice is on, any manual voice_channel you pass is ignored.

The channel exists only while the occurrence is live; token crediting happens at completion exactly as it does for a manually-chosen channel. If the tokens feature is disabled the channel is still created — only the crediting is skipped.

Starting and ending an event manually

Time events start and end on their own schedule. Event leaders can also drive them by hand from the RSVP embed, which is useful when the group gathers early or wraps up sooner than planned.

▶ Start Event⏹ End Event

▶ Start Event does everything the scheduled start would do, immediately: posts the start broadcast, starts the built-in Discord server event, creates the auto-voice channel if the event opted in, and opens the token earning window.

⏹ End Event does everything the scheduled end would do: credits tokens for the time members actually spent in voice, deletes the auto-created voice channel, marks the Discord server event completed, locks the RSVP embed, and posts the summary to the log channel.

Neither button replaces the schedule — if nobody presses Start, the event still starts on time by itself, and the same goes for ending.

Who can press them

  1. 1
    If the event type has a broadcast role set, members with that role can start and end its events.
  2. 2
    Anyone with Discord's Manage Events permission can too, whether or not a broadcast role is set.
  3. 3
    Administrators can always start and end, regardless of either setting.
The broadcast role controls the buttons too

The broadcast role does double duty: it is both the role pinged at start time and the role allowed to start and end events. If you set it to something broad like @Members, every member can end a running event for everyone. Point it at leadership if that is not what you want.

Goal events (delivery drives)

Switch the create command's mode: to goal:

/event create type:Logistics title:Pyro Resupply Drive date:2026-06-15 time:12:00 mode:goal deadline_date:2026-06-22 deadline_time:23:59

Goal events don't materialize a recurrence — they're always one-off. The "start" time is when the drive opens. The optional deadline is a soft cutoff (a nudge fires when it passes if the goal isn't met yet); the drive stays open until either all items are fulfilled or you manually cancel.

After creating the event, add items:

/event item add event_id:42 name:Titanium quantity:5000 unit:SCU price:50
/event item add event_id:42 name:Aluminum quantity:2000 unit:SCU price:30

Each item becomes a real Orders system row (see the Orders & Logistics guide). When the drive opens (start time), each item posts as a pinned message in the board channel with a Fulfill Order button. Members click it, deliver in-game, and a moderator confirms — the same flow as a standalone order.

The leaderboard ranks contributors by Σ(quantity × price_per_unit) across all items. It updates live with every delivery confirmation. When every item hits zero remaining, the drive auto-completes and posts a final summary to the log channel.

SB
StarBotApp
🏆 Pyro Resupply Drive — Leaderboard
Contributions ranked by delivered value. Updates with every confirmed delivery.
1. @Rook
3,200 SCU Titanium · 160,000 aUEC
2. @Vex
1,500 SCU Aluminum · 45,000 aUEC
3. @Talia
800 SCU Titanium · 40,000 aUEC
Progress
Titanium 4,000/5,000 · Aluminum 1,500/2,000
Goal event #42 · Logistics
The live leaderboard for a goal-event delivery drive.

Posting an RSVP embed manually

If you want an event's embed in a specific channel that isn't the type's default board channel:

/post-event event_id:42 channel:#event-board

This is useful for one-off events that should appear in a different channel than the rest of your events.

Cancelling

/event cancel event_id:42 does three things:

  1. Marks the event inactive (poller stops touching it).
  2. Cancels any pending Discord native scheduled events for it.
  3. Leaves the channel embed in place but updates it to show "ended" status.
Deleting is permanent

To delete an event entirely from the dashboard, click the event in the Events tab and use Delete at the bottom — this hard-deletes the row.

Troubleshooting

Embed didn't post — the type's board channel isn't set. Open the event type, set a channel, save. Future events will post; for an existing event, run /post-event event_id:N.

Native Discord event missing from the sidebar — the bot lacks Manage Events permission. Grant it and create a new event to test (Discord events can't be added retroactively).

Event scheduled for the wrong time — your default timezone is probably set to an abbreviation like CST. Change it to a full IANA name (America/Chicago) and recreate the event.

Reminders didn't fire — Reminders only DM members who clicked Going (not Maybe, not waitlisted). Also check the poller log; reminders within the grace window (60 min late) still fire, but anything later is dropped to avoid spamming after downtime.