The calendar

The Calendar tab of FlaviBot's Events page is where events are made and read. It works the way a calendar app does: four views of the same events, a toolbar that moves through time, a sidebar with a mini month and the filters, a click on an empty slot to create something there, a click on an event to open it, and events you can drag to another time.

The four views

ViewWhat it showsGood for
DayOne day as an hour grid, 00:00 to 24:00A busy day with overlapping things
WeekSeven days side by side, same gridPlanning the week, spotting gaps
MonthThe classic grid, up to three chips per day and a +N for the restThe overview
AgendaA list grouped by day, the next 60 days, Load more at the bottom, and a Show past toggleReading, on a phone

The day and week views share one grid: an all-day row on top, hour rows below, one column per day. Events that overlap are laid side by side rather than stacked, and a red now line crosses the grid at the current time in the timezone you are viewing in. The grid opens scrolled to 08:00.

The month view stretches all-day and multi-day events across the days they cover. The week starts on the day set in the module's Settings, or on the day you chose in your own profile preferences, which win for you.

The calendar fills the height of the window: the day header and the hour gutter stay put while the grid scrolls underneath them, the month and agenda views scroll inside their own frame, and the page itself never scrolls.

Moving around

The toolbar is one row: previous, Today and next, a label naming the range on screen, the four view buttons, and Create. Everything also answers the keyboard, as long as you are not typing in a field:

KeyDoes
TToday
D, W, M, ADay, week, month, agenda
, Previous, next
NNew event

The view, the date, the timezone and the team filter are kept in the page address, so a link you copy opens the same week, in the same zone, for the person you send it to.

The sidebar

On a wide screen a column on the left of the calendar holds everything that is not the grid itself. On a narrow one the same column sits behind a Filters button in the toolbar and slides in from the side.

  • The mini month browses on its own; days with events carry a dot, and clicking one jumps the current view to that day.
  • Filters: the timezone you read in (below), the Team filter with a chip to clear it, and the kind chips, which toggle kinds on and off so a calendar full of meetings can be reduced to the streams in one click.
  • The Add this server's events to my Google Calendar switch, when your Google account is connected; see Google Calendar and ICS.
  • Next up: the next five upcoming events, each with its kind, a on an occurrence of a series and a slot summary when it has sign-up slots. Click one to open it.

Past events are not in the sidebar: switch the Agenda view to Show past to read them.

The timezone you read in

Every event has its own timezone, the one its organiser typed the time in. The calendar, though, is displayed in one zone at a time, chosen in the sidebar's filters:

  • Server zone, the timezone set on your server's Configuration page. This is the default.
  • My zone, the timezone from your profile preferences, or your browser's when you set none.
  • Any other zone from the list, for when you are planning for members elsewhere.

Hovering an event shows its time in the zone on screen and, when they differ, in the event's own zone too. Members reading the panel in Discord never see any of this: Discord renders the start in each reader's own local time.

What a chip tells you

  • The colour is the event's kind, or the colour override set on it.
  • A struck-through, muted chip is cancelled; a plain muted one has ended; a chip with a pulsing dot is live now.
  • A dashed chip marked is a future occurrence of a series that has no panel yet. It is real, it will be posted when its turn comes, but it cannot be edited on its own until then. See recurring events.

The calendar loads the window on screen plus a margin. When a range holds more events than can be shown at once, a banner says the list was cut; narrow the range or filter by team to see the rest.

Moving an event by dragging

Rescheduling does not need the form. In the day and week views, drag a chip to another hour or another day to move it; the time snaps to a quarter of an hour, a ghost of the chip follows the pointer, and Escape drops it back where it was. Drag the bottom edge of a chip to change its duration. In the month view, drag a chip to another day: it keeps its time and changes its date. On a touch screen, press and hold the chip to pick it up.

The new time is read in the zone you are viewing in and saved on the event in its own timezone, so a raid dragged to 21:00 on a calendar shown in Paris time starts at 21:00 Paris time, whatever zone the event was created in. The calendar shows the move at once; if the save fails, the chip goes back and an error says why.

Three kinds of chip cannot be dragged, and say so when you try: a dashed occurrence that has no panel yet, a cancelled event, and an ended one. Dropping an occurrence of a series asks whether to move this occurrence only or the whole series, the same choice the form gives; see recurring events.

Creating an event

Press Create, hit N, click an empty slot in the day or week grid (that pre-fills the start and a 60-minute duration), or drag across a few hours to pre-fill the exact range. Clicking a day in the month view does the same for that day.

The form:

FieldNotes
TitleUp to 100 characters. It is the title of the panel
KindSets the colour and a few defaults; see the overview
All-dayHides the time inputs and counts the duration in days
Starts at and TimezoneThe time is read in that zone. It defaults to your server's zone, and daylight saving is handled
DurationIn minutes, with an ends at readout next to it. Empty means no declared end
RepeatDoes not repeat, daily, weekly, monthly, yearly, or a custom rule
Post the RSVP panel inWhere members sign up. Not needed for an Off entry
Voice channelWhere it happens, if it is a voice or stage event
LocationFree text, for anything that is not a voice channel
CapacityOptional. Past it, sign-ups go to the waitlist
Sign-up slotsOptional. Named groups of seats, "Tank", "Healer", "DPS", each with an emoji, a label and its own capacity; up to ten. See sign-up slots
Required roleOptional. Only holders can sign up
Sign-ups open and closeOptional. The window the panel takes answers in; outside it the buttons are disabled and say why. See when sign-ups open and close
Participant roleOptional. Given to the members who say Going, taken back when they change their mind or the event ends. See the participant role
HostsUp to ten members shown as hosts. Empty means whoever created it
TeamInvites a team; its members are mentioned in the panel and DMed
RemindersUse the server defaults, or switch it off and pick this event's own offsets, up to ten. See reminders and announcements
Announce when it startsServer default, on, or off. With an optional role to ping instead of the members who said Going
Cover imageA direct image link, shown in the panel
ColourOverrides the kind colour, with a reset
VisibilityPublic puts the event on the server's public calendar and its public feed, Private keeps it off both. It starts on the server default and changes nothing else about the event
Create a Discord eventMirrors it into the server's Events tab. Greyed out until the event has a voice channel or a location

The panel preview at the bottom shows how the embed will read in Discord. The sign-up buttons are not part of the preview, but they are always there.

Opening an event

Click any chip and the event opens in a panel: when (in your zone and in the event's own), where, the capacity, the hosts, the team, the kind, the repeat rule if it is part of a series, the RSVP tally with the names behind it, grouped by slot when the event has slots, a link to the panel message in Discord, and the native Discord event link or, if the sync failed, why. A Public or Private badge sits next to the title, and the sign-up window and the participant role are listed when the event has them.

The panel is also where you set your own reminders for this event: the Remind me block offers the same presets the Discord button does, and saving there applies to you alone, not to the other attendees. See your own reminders.

Four things you can do from there:

  • Add to calendar offers a Google Calendar link, an Outlook link and a .ics download. None of them needs a connected account; see Google Calendar and ICS.
  • Edit reopens the form. On an occurrence of a series you choose between editing that occurrence and editing the whole series.
  • Duplicate opens the create form filled in from this event: title, description, kind, colour, duration, timezone, channel, place, capacity, slots, required role, hosts, team, image, reminders and announcement settings. Only the date is left for you, pre-set to the next same weekday. Nothing is copied from the original's sign-ups; the copy gets a fresh panel of its own.
  • Cancel asks for a confirmation, and on an occurrence asks the same question. Members keep their RSVP on a cancelled event; it simply does not run. Tick Also delete it permanently on that confirmation to erase the event instead of keeping it as cancelled; on an event already cancelled or over, the button reads Delete permanently (see the overview).

Managing attendees

The panel's buttons are the normal way in, but a manager sometimes has to answer for someone: a member who asked in a DM, a no-show to take off the list, a regular to pull off the waitlist. With Manage Server, the event's detail panel has a Manage attendees section:

  • Add a member as Going or Maybe, with a slot when the event has slots. The member must be in the server. A Going on a full event, or a full slot, lands on the waitlist exactly as if they had pressed the button, and the same DMs and calendar entries follow.
  • Remove any attendee with the button on their row. The seat frees up and the first person waiting is promoted, as usual.
  • Promote a member on the waitlist with the button on their row, or the first in line with the button above the list. A promotion by a manager goes through even when the event is full: the choice is yours, the capacity is only a default. The member is DMed like any promotion.
  • Export CSV downloads the whole list, one row per answer, with the member's ID, their status, their slot and when they answered.

Adding and promoting are offered only while the event still takes answers (scheduled or running). Once it is over or cancelled, those controls go away — the bot would refuse the write — while Remove and Export CSV stay, so a roster can still be tidied up or archived afterwards.

Every one of those repaints the panel in Discord at once.

Next: recurring events.

Created on · Last updated on