# Built-in Commands

Updated on Sep.24 2023

This page covers all the commands of base YABOB. For extension commands, see the extension commands page.

Title: Command name.

  • Matches the exact command name in discord

Options: Possible arguments of this command.

  • Arguments with a question mark are optional

Access Level: The lowest required access level role to access the command.

  • The roles are ordered (From high to low): Bot Admin > Staff > Student > Everyone

  • Example: If the access level specifies Student , then bot admins and staff also has access to this command. But if the access level is Bot Admin , then staff and students do not have access.

  • If you have the administrator permission of a server, you are not required to have any access level roles.

Throws: Possible errors that YABOB can throw.

  • These errors are expected to happen, and YABOB will reply back to the user with the error. YABOB will not modify any internal states if it rejects the command.

# Command List

# /enqueue

Adds the user to the back of the queue.

queue_name? - specifies which queue to join. If not specified, the user will be enqueued to the queue where they used the command if a #queue channel exists in its parent category.

Student and above.

CommandParseError

  • If the specified queue_name argument is not a valid queue channel.
  • If the command is used without specifying queue_name, and it's used in a channel with no parent category or the category does not have a #queue channel.
  • If the user does not have the student role.

QueueError

  • If the student is already in the queue.
  • If the queue is not open (ie. if the queue is closed or paused)
/enqueue ECS32A
/enqueue # left blank, YABOB will check if the current category has a queue channel

# /leave

Removes the user from a queue. If the queue_name argument is not specified, the user will be removed from the queue where they used the command if a #queue channel exists in its parent category.

queue_name? - specifies which queue to leave from.

Student

CommandParseError

  • If the specified queue_name argument is not a valid queue channel.
  • If the command is used in a channel with no parent category or the category does not have a #queue channel.

QueueError

  • If the student is not in the queue.
/leave ECS32A
/leave # left blank, YABOB will check if the current category has a queue channel

# /list_helpers

Lists all the helpers that are currently helping

Student

Nothing.

/list_helpers

# /start

Opens all the queues that the user has a role for and start helping students.

mute_notif? - If true, opening the queue will NOT notify the students who have signed up for notifications and the notification group will not be cleared. Defaults to false.

Staff

CommandParseError

  • If the user does not have the Staff or Bot Admin role.

ServerError

  • If the helper is already helping.
  • If the helper does not have any class roles.
/start # notifies everyone in the notif group
/start mute_notif=True # none of the students will be notified

# /stop

Closes the office-hour queues and stop students from entering the queue.

  • Students that were in the queue before closing will remain in the queue for the next office hour session.

  • If Queue Auto Clear is enabled when the queue is closed, a timer will be started if there are students remaining in the queue.

Staff

CommandParseError

  • If the user does not have the Staff or Bot Admin role.

ServerError

  • If the helper is not currently helping.
/stop

# /next

Invites the student at the front of the queue to the helper's voice channel.

queue_name? - Specifies which queue to dequeue from. If not specified, dequeues the student that has been waiting the longest out of all the queues that the helper has a role for.

user? - Specifies which student to dequeue. If specified, YABOB will ignore queue order and search for this student. If queue_name is also specified, YABOB will search in that queue for this student.

Staff

CommandParseError

  • If the user does not have the Staff or Bot Admin role.
  • If the specified queue_name is not a valid queue category

ServerError

  • If there's no student to dequeue.
  • If the specified user is not found in any of the queues.
  • If the specified user is not found in the specified queue_name.
/next # dequeues globally
/next queue_name=ECS32A # dequeues from the queue named "ECS32A"
/next user=someStudent # searches for the user with the username "someStudent"
/next queue_name=ECS32A user=someStudent # searches for the user with the username "someStudent" in the queue named "ECS 32A"

# /announce

Sends a message to all of the students in all the queues that the helper is approved to help for.

message - Required. The announcement message content.

queue_name? - Which queue to send the announcement to. If not specified, YABOB will send the message to all the queues that the helper has a role of.

Staff

CommandParseError

  • If the user does not have the Staff or Bot Admin role.
  • If the specified queue category does not have a #queue channel.
  • If the announcement is longer than 4096 characters. This limit comes from discord's API.
  • If the specified queue_name is not a valid queue category.
/announce "We are having pizza tonight!"
/announce "We are having pizza tonight!" ECS32A

# /pause

Marks the user as a helper who has temporarily stopped accepting new students. When new students join the queue, this helper will not be notified.

Staff

CommandParseError

  • If the user does not have the Staff or Bot Admin role.

ServerError

  • If the user is not currently helping.
  • If the user is already a paused helper.

If all the helpers of the same queue have used /pause, this queue will enter the PAUSED state that will stop students from joining the queue. Helpers of a PAUSED queue can still dequeue students. As of v4.3, ALL helpers of the same queue must use /pause to make the queue PAUSED.

  • The queue embed of a PAUSED queue will have a yellow embed instead of an aqua embed.

# /resume

Lets a helper exit the paused state. They will become active if the command succeeds.

Staff

CommandParseError

  • If the user does not have the Staff or Bot Admin role.

ServerError

  • If the user is not currently helping
  • If the user is not a paused helper

# /clear

Clears the specified queue.

<queue_name> - Required parameter. Specifies which queue to clear.

Staff

CommandParseError

  • If the user does not have the Staff or Bot Admin role.
  • If the specified queue category does not have a #queue channel.

ServerError

  • If there is no student in the specified queues
/clear ECS32A # Clears the queue named "ECS32A"

# /clear_all

Clears all the queues on this server.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
  • If the specified queue category does not have a #queue channel.

ServerError

  • If there is no student in any of the queues
/clear_all

# /cleanup_queue

Debug feature. If the embeds in a queue were accidentally deleted, this command will ask the queue to perform a clean render.

<queue_name> - Required Parameter. Which queue to clean up.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
  • If the specified queue category does not have a #queue channel.
/cleanup_queue ECS32A # sends new embeds in the #queue channel in category "ECS32A"

# /cleanup_all

Same as /cleanup_queue but affects all the queues.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
  • If the specified queue category does not have a #queue channel.

# /cleanup_help_channels

Debug feature. If the embeds in a the help channels were accidentally deleted, this command will re-send all the help channel embeds.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
/cleanup_help_channels

# /queue

This command has 2 sub-commands.

/queue add <queue_name>

  • Creates a new category with the name entered in queue_name and creates the #queue and #chat text channels within it.

/queue remove <queue_name>

  • Deletes an existing category with the name entered in queue_name and all the channels within it.

queue_name - Required Parameter

  • For /queue add, this is a string of the name of the new queue
  • For /queue remove, this is the name of the existing queue

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
  • If a queue with the same name already exists when using /queue add
  • If /queue remove was invoked in the queue category that the user wants to delete. YABOB will prompt the user to use the command in another text channel.
/queue add ECS32A
/queue remove ECS32B

# /set_logging_channel

Sets the logging channel on this server. YABOB will start sending log messages to this text channel.

channel - Required Parameter. Which text channel to send logs to.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
  • If the specified channel is being used as a queue channel.
  • If the specified channel is not a text channel.

# /stop_logging

Stops YABOB from sending log messages to this server.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.

# /set_roles

Sets the access level roles on this server. Namely, controls which roles should be interpreted as Bot Admin , Staff , and Student .

role_name - Which access level role you want to change. Bot Admin , Staff , or Student .

role - The role to change to.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
  • If the specified role is a bot integration role. These roles can bon
/set_role "Bot Admin" @Administrator # now YABOB will treat @Administrator as the Bot Admin role

# /prompt_help_topic

This command has 2 subcommands.

/prompt_help_topic on

  • YABOB will start showing students a modal that asks them what topic do they need help with. Students are not required to submit the modal, and they will still be queued if they don't submit.

  • This modal is shown when the student uses /enqueue or [Join]

Once the student submits this modal, all helpers of this queue will see:

/prompt_help_topic off

  • YABOB will not show students the Help Topic modal. Students will be directly enqueued when they use /enqueue or the [Join] button.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.

# /settings

Brings up the settings menu. See more details in the Configuration Guide.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.

# /create_offices

Batch creates voice channels with pre-configured permissions. As of 4.3, voice channels created with this command only allows Bot Admin and Staff to have direct access to the channels. Students can see and join the channels within 15 minutes after they are dequeued.

All 3 options are required.

category_name: The name of the category that holds all the voice channels.

office_name: The prefix of each voice channel.

number_of_offices: How many channels to create

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.
  • If the inputs of category_name or office_name are not valid discord channel names.
  • If the input of number_of_offices is not a valid integer
/create_offices "Offices Hour Voice Channels" "office" 5

Running this command creates the following:

# /help

Get help with a command.

command - Required Parameter. The name of the command to get help with. Currently, we are hitting the upper limit of this option so some of the commands are not listed. v4.3.1 will add auto complete to /help to display all the commands.

Student and above.

Nothing.

# /auto_give_student_role

This command has 2 sub commands.

/auto_give_student_role on

  • YABOB will automatically give new members the Student access level role. The role will be given as soon as new members join the server.
  • If the @everyone role is the students role, this setting is ignored.

/auto_give_student_role off

  • YABOB will not automatically give new members the Student access level role. Students need to be manually assigned this role.

Bot Admin

CommandParseError

  • If the user does not have the Bot Admin role.

# Button List

This section covers these buttons:

# 🔘 Join

Adds the user to the end of the queue on button click.

Everyone

CommandParseError

  • If the #queue channel does not have a parent category.

QueueError

  • If the student is already in the queue.

# 🔘 Leave

Removes the user from the queue on button click.

Everyone

CommandParseError

  • If the #queue channel does not have a parent category.

QueueError

  • If the student not in the queue.

# 🔘 Notify When Open

Adds the user to the notification group for that queue. The user will be automatically removed from the notification group once the queue is open.

Everyone

CommandParseError

  • If the #queue channel does not have a parent category.

QueueError

  • If the user is already in the notification group.

# 🔘 Remove Notifications

Removes the user from the notification group for that queue.

Everyone

CommandParseError

  • If the #queue channel does not have a parent category.

QueueError

  • If the user is not in the notification group.