A Discord roster bot posts a sign-up board that members join with a button, caps the number of slots, moves overflow to a waitlist, opens and closes on a schedule, and records who showed up and for how long. It is the tool you reach for when "react with a checkmark if you're coming" stops working: GTA RP duty shifts, raid groups, tournament teams, volunteer rotas, weekly staff meetings. This guide explains what rosters do, how they differ from event bots like Apollo or Raid-Helper, and how to run one with Noxyr for free.

Roster slots fill one by one along a timeline until the event starts and every slot glows. Event Starts in 3h Starts in 20m Live now

Roster vs event signup: what is the difference?

Event bots (Apollo, Raid-Helper, sesh) are calendars. They answer "when is it and who is coming?" and are excellent at reminders, time zones and RSVP counts. A roster bot answers a slightly different question: "who is on duty right now, and did they actually stay?" The distinction matters for communities where being on the list carries an obligation:

  • Roleplay servers where Police, EMS or Mechanics need a live on-duty board per department.
  • Competitive teams where a scrim needs exactly five players and a substitute list.
  • Staff rotas where someone should be reachable in a support channel every hour.

If you only need RSVPs for a one-off event, an event bot is simpler. If you need a repeatable board with limits, a waitlist and attendance, keep reading.

The parts of a roster

Noxyr's rosters were built for GTA RP servers first, which is why the vocabulary is "types" and "boards", but nothing about them is game-specific.

Roster types

A type is a template: a name (say, Police), a default channel, a colour, and the rules below. You create one with /roster type_add and reuse it every time. Types are where most of the configuration lives, so a new board inherits everything and staff only decide when to post it.

Boards

/roster create posts a board for a type into a channel. Members press a button to join or leave. The board redraws with the current list, and every join and leave is logged with a timestamp. Staff open an admin panel with /roster admin_panel to kick, close or inspect the event; /roster control-panel posts a persistent staff panel so nobody has to remember command names.

Member limits and the waitlist

Set a maximum on the type and the board stops accepting joins at that number. Turn the waitlist on and the overflow queues instead of bouncing: when someone leaves, the first person on the waitlist moves up automatically. That single feature removes most of the "I was here first" arguments from a busy signup.

Scheduling: recurring rosters and auto-close

Manual boards are fine for a one-off. For anything that repeats, the type can carry a schedule so nobody has to be awake to post it:

  • Recurring open and close times in a chosen timezone, for example open at 18:00 and close at 22:00 every day. Hourly patterns are supported too, for boards that reset every hour.
  • Duration-based auto-close as an alternative: close the board a fixed number of minutes after it is posted. When this is set it takes priority over the clock-time schedule.
  • A ping role that gets notified when a roster opens, set with /roster settings.
  • A posting notice a few seconds ahead ("roster opens in 30 seconds") so the first slots are not decided by who happened to be typing.

Timers survive restarts: active events are rescanned when the bot comes back up, so a scheduled close does not silently vanish because of a deploy.

Voice channel tracking

The feature that separates a roster from a list of names is the voice requirement. A type can require members to be in one of a set of voice channels. When someone joins the board while not in voice, a wait timer starts (five minutes by default, configurable, never under 15 seconds). If they are not in a required voice channel when the timer runs out, they are removed from the roster and the next waitlisted member takes the slot.

This is how RP servers keep a "12 officers on duty" board honest: signing up and then going AFK in a text channel does not hold a seat. It also gives you time-on-roster per member, which the web summary shows after the event closes.

Bonuses and attendance records

Many communities pay out something for attendance: in-game money, points, a role. Noxyr has an optional bonus column on the board. Turn it on with /roster bonus_enable, then mark members as tick, cross or pending with /roster bonus_set. /roster bonus_list shows who is marked. It is deliberately simple; the point is that the board and the payout list are the same document, so nobody reconciles a spreadsheet afterwards.

Closing a roster keeps the record. Each event has a web summary with the final list and time on roster per member, which is easier to share with department leads than a screenshot and stays available after the Discord message is deleted.

Setting up a roster in Noxyr

  • 1. Add Noxyr and open the dashboard. The rosters module is on by default.
  • 2. Run /roster settings to choose a manager role (who can run boards without being an admin), a ping role and whether to send a posting notice.
  • 3. Create a type with /roster type_add, then open the dashboard to set its member limit, waitlist, schedule, timezone and voice channels.
  • 4. Post a board with /roster create, or let the schedule post it.
  • 5. Post the staff control panel once with /roster control-panel so managers close, kick and inspect from buttons.

The roster documentation lists every setting, and the tutorial walks through it with an animated example. Related commands are on the command reference.

Who should use something else

Be honest with yourself about the need. If you want a calendar with reminders and time zone conversion for a monthly community night, Apollo or Raid-Helper will serve you better and their signup counts are all you need. Rosters earn their setup cost when the board is recurring, capped, or tied to voice presence and attendance. Servers that run both (an event bot for the calendar, rosters for the on-duty board) are common and there is no conflict between them.

Common questions

Can I run more than one roster at a time? Yes. Each type can have its own active board, so Police and EMS can be open side by side in different channels.

What happens when a roster is full? If the waitlist is on, new joiners queue and move up automatically as places open. If it is off, the join button reports the board is full.

Does the voice check remove people instantly? No. They get a wait window (default five minutes) to join a required voice channel before they are dropped.

Who can manage rosters? Administrators, plus any role you set as the manager role in /roster settings.

Is the roster bot free? Yes. Rosters, waitlists, scheduling and voice tracking are all part of Noxyr's free feature set.