# Built-in Extension Commands

Updated Sept.24, 2023

# What are YABOB Extensions?

Since the beginning of YABOB v4.0, we switched over to a new implementation that separates base YABOB and YABOB extensions. This has enabled YABOB to have significantly better performance and allows us to develop new features more quickly.

YABOB extension commands do NOT affect base YABOB's behavior but rather listens for events happening in base YABOB and then shows different information in the #queue channel or in external resources.

# Format

The format in all of the following sections will be the same as the Built in Commands page with a new tab, Side Effects,what will happen outside of discord.

# 📅 Session Calendar Extension

This extension reads from a google calendar you provide and manages the Upcoming Sessions embed inside queue channels to display upcoming office hours sessions. All of the following commands will affect what's being displayed in that embed.

# /when_next

Fetches from the calendar and displays upcoming office hour sessions.

Student

Nothing.

/when_next

# /make_calendar_string_all

Generates a parsable calendar summary string for ALL the queues this user is approved for. This string needs to be put inside the calendar event's description section for the Upcoming Session embed in each #queue channel to recognize it.

calendar_name Specifies the user's name on the calendar. When this command is run, YABOB remembers the discord id of the user and maps it to calendar_name.

Staff

Nothing.

/make_calendar_string_all calendar_name=John

This will return YABOB_START John - class1, class2 YABOB_END if John has the roles class 1 and class 2.

Suppose John's discord handle is @cooljohn123. If John made a google calendar event titled "Remote office hours for class 1 and class 2" and put "Remote" in the location field, the upcoming session embed will show:

The timeStamp fields are dynamic time strings in discord where you can hover over it and see the literal date and time.

# /make_calendar_string

Generates a calendar summary string that is guaranteed to be recognized by this extension. This string needs to be put inside the calendar event's description section for the Upcoming Session embed to recognize it.

  • This command is meant to handle special cases when the staff member doesn't want to include all of their approved queues (Example: They want to host a final review session for only 1 class)
  • For other use cases, we recommend using /make_calendar_string_all

Staff

calendar_name Specifies the user's name on the calendar. When this command is run, YABOB remembers the discord id of the user and maps it to calendar_name

queue_name_1 queue_name_2 \dots queue_name_20 Specifies which queues to be included in this calendar string. The specified queues will then display the calendar event upon refresh.

CommandParseError

  • If the user does not have the Staff role or the Bot Admin role
  • If any of the given queues is not a valid queue category
/make_calendar_string John class1 class2 ...

will return YABOB_START John - class1, class2 YABOB_END

After putting this string inside the calendar events, you can press Refresh Upcoming Sessions to refresh the embed. Your name and the calendar title should now appear.

A backup is triggered.

# 🔘 Refresh Upcoming Sessions

Screenshot 2023-01-09 at 10 10 15 PM

Allows the user to manually refresh the calendar embed for 1 queue.

Everyone

CalendarConnectionError

  • If the calendar refresh request timed out
  • If the calendar is not accessible

# 📊 Google Sheet Logging

This extension logs attendance hours and help session history to a google sheet you provide. For each server, this extension will create 2 google sheet worksheets:

# <Your Server Name> Attendance Logs

Tracks attendance of each staff member.

Helper Username
The discord username of the helper
Discord ID
The discord id of the helper
Time In
When the helper started helping by using /start
Time Out
When the helper started helping by using /stop
Helped Students
The names of the students that received help
Session Time (ms)
How much time elapsed between /start and /stop in milliseconds.
Active Time (ms)
How much time was the helper actually helping students in a voice channel. This is tracked by recording the time a student stayed in a voice channel.
Number of Students Helped

The total number of students helped, synced with Helped Students.

# <Your Server Name> Help Session Logs

Tracks how many students were being helped on your server.

Student Username
The student's discord username
Student Discord ID
The student's discord id
Helper Username
The helper's discord username
Helper Discord ID
The helper's discord id
Session Start
Time when the student joined the voice channel
Session End
Time when the student left the voice channel
Wait Start
Time when the student joined the queue and started waiting.
Queue Name
The queue that the student received help from
Wait Time (ms)
How long the student waited before getting dequeued
Session Time (ms)

How long were the student in the voice channel getting help


# /stats

This command has 2 subcommands:

/stats helper

Returns an embed showing the statistic of a helper. The stats include:

  • Help sessions
  • Total available time
  • Total helping time
  • Number of student sessions
  • Unique students helped
  • Returning students
  • Average session time
  • Average wait time

/stats server

Returns an embed showing the statistic of the entire server. The stats are the same as /stats helper.

time_frame Required Parameter. Specifies which time period should the stats come from: All Time, Past Month, or Past Week.

Everyone

Error (This will be updated with a different error)

  • If there's no Help Session Logs worksheet of your server.