How events work

An event is something your server does at a given time: a movie night, a raid, a staff meeting, a stream. You give it a title, a start, a timezone and a place; FlaviBot posts an RSVP panel in a channel, members say whether they are coming, and the bot reminds the ones who said yes. The same event can also be mirrored into your server's own Events tab as a native Discord scheduled event, can land in members' calendars, and can be published on a page anyone can read without a Discord account.

Events are being rolled out gradually. If Events is not in your dashboard's Management section, and /event answers that it is not available, the feature is not enabled for your server yet.

The objects

ObjectWhat it isWhere it lives
EventOne thing happening once, with its own panel, RSVPs and remindersThe calendar, and one channel
SeriesA repeat rule that produces events on a scheduleThe calendar, drawn as its occurrences
SlotA named group of seats on one event, with its own capacity: "Tank 0/5"The event's panel and roster
TeamA named group of members, used to invite and to find a timeThe Teams tab
PanelThe message members click to sign upOne channel per event
Discord eventThe native copy in your server's Events tab, if you sync itDiscord
BoardA message listing what is coming, kept up to date by the botOne channel per board

A series is never shown on its own. What you see and what members sign up for are its occurrences, each one a normal event. See recurring events.

The path an event takes

  1. Someone creates it, from the dashboard, from /event create, or from an automation.
  2. FlaviBot posts the RSVP panel in the channel you picked: title, start time shown in each reader's own timezone, host, place, and the buttons Going, Maybe, Can't make it, Who's coming. An event with sign-up slots has one button per slot instead of the single Going, "Tank 0/5", "Healer 0/2", each with its own count. When the event has a sign-up window, the buttons outside it are disabled and say when they open, or that sign-ups are closed.
  3. Members answer. A Going past the capacity goes on the waitlist, in order, and is promoted automatically (with a DM) when a seat frees up; on an event with slots, the count and the waitlist are per slot. If the event has a required role, only its holders can sign up. A member can also answer with /event rsvp, and a manager can sign someone up, remove them or promote them from the dashboard; see managing attendees. An event with a participant role hands it out as members say Going, and takes it back when they change their mind.
  4. Before the start, FlaviBot DMs the members who said Going and the ones on the waitlist. By default that is one day and one hour before; you choose the offsets in the settings, and any event can carry its own list instead. The DM shows the start as a Discord timestamp and, for a member who set a timezone on their profile, as a plain "20:00 your time" next to it. A member who would rather not be reminded switches it off on their profile page, and one who wants a nudge on their own schedule sets their own reminders. See reminders and announcements.
  5. At the start the event flips to live and the panel changes colour. When Announce when it starts is on, for that event or for the server by default, the bot also posts "🎉 Title is starting now" with a link to the panel, pinging the members who said Going or one role you chose. At the end (or two hours after the start when no end was given) it flips to ended, and the buttons are disabled but stay readable, so a member who opens the channel a week later still sees who came.

Cancelling an event repaints the panel, stops the reminders, removes the native Discord copy, and takes the entry out of the calendars it was written to.

Cancelling keeps the event, though: the panel stays in the channel painted as cancelled, the attendee list stays readable and the calendar shows the event struck through. Deleting permanently removes every trace instead — the panel message, the RSVPs, the calendar entries and the event itself (for a series, every occurrence and the series with them). It is offered as a checkbox on the cancel confirmation, Also delete it permanently, and as a Delete permanently button on an event that is already cancelled or over. An event still open is cancelled first, so the reminders stop and the native Discord copy goes exactly as above. There is no undo.

Kinds

Every event has a kind. It decides the colour of the event everywhere (the panel, the calendar chips, the list) and the defaults of a few fields when you create it. You can override the colour on any event.

KindColourDefaults
EventBlurpleSynced to Discord
MeetingSky blueNot synced to Discord
SessionGreenNot synced to Discord
StreamPurpleSynced to Discord
MilestoneAmberAll-day, not synced
DeadlineRedAll-day, not synced
OffGreyAll-day, not synced, no panel

Off is the odd one out: it is a day off, a holiday, a "no raid this week". Nobody signs up for it, so no panel is posted and no channel is needed; it only exists on the calendar.

A default is only a default. Pick Meeting and the Discord sync switch starts off; flip it on if you want that meeting in the server's Events tab.

Sign-up slots

Some events need more than a head count: a raid wants two healers and five tanks, a podcast wants a host and three guests, a tournament wants eight players and two casters. Sign-up slots split an event's seats into named groups, each with its own capacity.

You add them in the event form, under Sign-up slots: one row per slot, with an optional emoji, a label (up to 32 characters) and a capacity, or none for an open slot. Up to ten slots fit on one event. Each slot also has a key, generated from the label and editable: lower-case letters, digits, _ and -, 32 characters at most. The key is what /event rsvp slot: takes, so keep it short: tank, healer, dps.

What changes once an event has slots:

  • The panel shows one button per slot, "🛡️ Tank 2/5", in place of the single Going button. Maybe, Can't make it and Who's coming stay as they are. The embed lists each slot's count, "Tank 3/5", above the overall Going line.
  • Pressing a slot button signs the member up for that slot. Pressing another one moves them; the seat they held is freed.
  • Capacity and the waitlist are per slot: a full slot puts the member on that slot's waitlist, shown as "(waitlist 2)" next to it, and a seat that frees up in that slot goes to the first person waiting for it, with a DM. A slot with no capacity never waitlists anyone. The event's own Capacity, when you set one, still caps the whole roster.
  • Who's coming, the dashboard roster and /event info group the names by slot; /event list sums the slots up after each event.

On a series, slots are part of the shared details: set them once and every occurrence gets the same slots, each with its own sign-ups. Removing the slots from an event that already has answers keeps the answers: everyone stays Going, in one pool again.

When sign-ups open and close

Two optional moments on an event, Sign-ups open and Sign-ups close, decide when its panel takes answers. Neither has anything to do with the start: open sign-ups a week early for a raid that fills up in an hour, or close them the day before so you can plan around a settled roster.

  • Set only the opening, and the panel is a teaser until then.
  • Set only the closing, and answers run from the moment the panel is posted until that moment.
  • Set neither, which is the default, and the panel takes answers for as long as the event is open.

Outside the window the panel's buttons are disabled and say why: "Sign-ups open in 3 days" before it, "Sign-ups closed" after it, as a countdown each reader sees in their own time. /event rsvp answers the same. Everything else carries on as usual — the panel and Who's coming stay readable, reminders are still sent, the start announcement still fires, and the members who already answered keep their answer.

Both moments are typed in the event's own timezone, like its start, and either can be cleared later. A manager is not bound by the window: Manage attendees on the dashboard can still add, remove or promote someone once sign-ups have closed.

The participant role

An event can hand out a role to the people coming to it: @Movie Night, so they can be pinged in one mention, let into a channel for the evening, or simply counted at a glance.

Pick it in the event form, under Participant role. From then on:

  • a member who says Going is given the role;
  • a member who withdraws, switches to Maybe or Can't make it, or is removed by a manager, loses it;
  • someone on the waitlist does not hold it, and gets it when a seat frees up and they are promoted;
  • when the event ends or is cancelled, it is taken back from everyone.

FlaviBot needs Manage Roles, and the role must sit below its own highest role — Discord refuses to hand out anything above it. When the grant fails, the RSVP still counts and the member is simply left without the role: an evening does not fall over because a role could not be moved.

Since the role is handed out to whoever presses a button, give it nothing you would not give to everyone who presses that button. A channel for the event, yes; moderator permissions, no.

Reminders and announcements

Reminders are direct messages sent before the start to the members who said Going and to the ones on the waitlist. The server sets a default list in the module's Settings, up to five offsets; the default is one day and one hour before.

Any event can have its own list. In the event form, under Reminders, switch Use the server defaults off and pick the offsets for this event, from the same presets or as a number of minutes, up to ten of them and up to four weeks before the start. An event with its own list keeps it when the server default changes later; the others follow the new default.

Each reminder reads "Title starts in 2 hours", as a Discord timestamp that every reader sees in their own local time. When the member has set a timezone in the Calendar preferences of their profile page, the DM adds that time in plain words next to it, "(20:00 your time)", so a member who reads it from a phone set to another zone is not caught out. Team invitations and waitlist promotions carry the same line.

A member who does not want reminders switches Event reminders by DM off in the Notifications card of their profile page. That stops the reminders from every server; invitations and waitlist promotions still arrive, since those are answers to something the member did.

Start announcements are for the channel rather than the inbox. When they are on, the bot posts "🎉 Title is starting now" at the start, with a link to the panel, in the server's Announcement channel or, when none is set, in the event's own panel channel. The announcement pings either the role you chose on the event or, without one, the members who said Going, up to forty of them and then "+N"; nobody else is mentioned.

The choice is made twice: Announce when events start in the module's Settings is the default for the server, off to begin with, and each event's Announce when it starts can follow that default, force it on or force it off. The bot needs Send Messages in the channel it announces in; without it, the announcement is skipped and the event runs as usual.

Your own reminders

The reminders above are the organiser's: one list, the same for everyone who signed up. A member can also set their own, the way a calendar app lets you nudge yourself. They are extra, not a replacement, and they arrive as a DM like the others.

There are two levels of them:

  • A default, on the profile page, under Calendar > Default event reminders: up to five offsets — "1 day" and "30 minutes", say — applied to every event the member says Going to, in every server. It starts empty, so nobody is signed up for more DMs than before.
  • A per-event override, for the one event the default does not suit: "this raid, wake me two hours before".

From Discord, the confirmation that follows a Going carries a Remind me button. It opens a list — 10 minutes, 30 minutes, 1 hour, 3 hours, 1 day, 2 days — where up to five can be picked at once, plus My default to go back to the default and None to keep this one event quiet. From the dashboard, the event's detail panel has the same Remind me block.

"Use my default" and "none for this event" are two different answers, and both are remembered: silencing one raid does not touch the default, and changing the default later does not wake that raid up.

The rest follows the organiser's reminders:

  • only a member who is Going or on the waitlist gets one;
  • Event reminders by DM, off in the profile's Notifications card, silences every reminder, the member's own included;
  • offsets are minutes before the start, up to four weeks ahead;
  • they stack. A member may hear about the same raid a day before from the organiser's reminder, thirty minutes before from their own, and again from their Google Calendar; each is switched off on its own.

Where you configure it

Everything is on the dashboard, under Members > Events. The page has four tabs:

  • Calendar: the events themselves, in day, week, month or agenda form. See the calendar.
  • Teams: named groups of members. See teams and finding a time.
  • Availability: when the members of a team are free, and a slot finder.
  • Settings: the module switches below, the public calendar and the channel boards. See the public calendar and boards.

Members also get a Calendar section on their own profile page, for their timezone, working hours, default event reminders, calendar subscription and Google account (see Google Calendar and ICS), and an Event reminders by DM switch in its Notifications card.

Who can create and manage events

From the dashboard, Manage Server, like every other dashboard page.

In Discord, /event create, /event edit and /event cancel accept anyone with Manage Server, Manage Events or Administrator, plus the holders of the manager role you can name in the settings. The command is registered with Manage Events as its default, so it is hidden from everyone else unless you widen it in Server Settings > Integrations.

/event list, /event info and /event rsvp are for anyone the command is visible to: rsvp answers for the person typing it, exactly like pressing a button on the panel, and info reads one event. Members never need a command, though: the panel's buttons are the whole member-side experience.

Commands

CommandWhat it does
/event create title:… starts_in:… (or date:…)Schedules an event and posts its panel. See recurring events for the repeat options
/event edit reference:…Changes the title, date, timezone, duration, location, capacity or description of one event; every option is optional, the panel is repainted. On an occurrence of a series it changes that occurrence alone, like This occurrence on the dashboard
/event rsvp reference:… status:…Your own answer, going, maybe or declined, with an optional slot: key on an event that has slots
/event info reference:…One event in full: when, where, host, capacity, the count per slot, and the link to its panel. For a native Discord event that FlaviBot did not create, use /info event instead
/event listThe upcoming events, each with its kind, a on occurrences of a series, the going count and the slot counts
/event cancel reference:… [series:True]Cancels one event, or the whole series

A reference is the event's ID, shown on the dashboard, or the ID of its panel message.

Settings

SettingWhat it does
Enable eventsOff: no panels are posted, no reminders are sent, and existing panels stop taking sign-ups
Primary botThe one bot that runs events here. A Discord scheduled event belongs to the application that created it, so two bots cannot share the job
Default channelPre-selected in the create form and used by /event create when no channel is given
Manager roleLets its holders run the commands without a Discord permission
RemindersMinutes before the start, up to five, for every event that does not set its own list. Default: 1 day and 1 hour
Announce when events startWhether an event that leaves the choice to the server posts a start announcement. Off by default
Announcement channelWhere those announcements go. Empty: each event's own panel channel
Create Discord eventsThe default of the per-event Discord sync switch
Occurrences posted aheadHow many future occurrences of a series have a panel at any time, 1 to 5
Week starts onThe first column of the week and month views for this server
Calendar subscriptionThe server's ICS feed link, and a button to rotate it
Public calendarWhether the server has a public page, listing the events marked public. Off by default
New events are publicWhether the create form starts on Public. Off: you publish event by event
Public descriptionThe line under the server name on that page, up to 300 characters
BoardsThe channel boards, added and edited here

Limits

How many events can be scheduled or live at the same time depends on the server's plan: 3 on a free server, 15 with Silver, 50 with Gold, and no limit with Platinum. A series does not take a slot for its rule, but each occurrence that has been posted does, so a series posting three occurrences ahead uses three on its own. Ended and cancelled events free their slot. The create form and /event create both name the limit you hit; the full table is in limits by tier.

Titles are limited to 100 characters, descriptions to 2000, locations to 200, and an event cannot run longer than 30 days. Up to ten named hosts and up to ten sign-up slots fit on a panel, each slot labelled with 32 characters at most. An event's own reminder list holds ten offsets; the server default holds five, and so does a member's own list, default or per event. A server can run five boards, one per channel, and its public description is limited to 300 characters.

What FlaviBot needs

In the panel channel: View Channel, Send Messages and Embed Links. Without them the event is created but the panel is not posted, and the form tells you so. A start announcement needs Send Messages in the channel it is posted to; without it the announcement is skipped.

To mirror an event into the server's Events tab, the bot also needs the Create Events permission; see Discord scheduled events. An event with a participant role needs Manage Roles, with that role below FlaviBot's own, and a board needs View Channel and Send Messages in the channel it is posted in. Reminders, waitlist promotions and team invitations are direct messages, so a member with DMs closed simply does not get one.

Next: the calendar.

Created on · Last updated on