# Changelog

[All Releases](https://github.com/phrdang/enoch-bot/releases) | [All Tags](https://github.com/phrdang/enoch-bot/tags)

## v3.x.x

### v3.1.0

{% hint style="success" %}
**Latest**
{% endhint %}

#### New Commands

* `enochbug` & `enochidea` - Sends the link for the bug report/idea suggestions form of Enoch bot [#134](https://github.com/phrdang/enoch-bot/pull/134)

**Command Updates & Fixes**

* Update the `help` command to include the select menu and button features to paginate contents of the command [#130](https://github.com/phrdang/enoch-bot/pull/130)
* Change the `link` command to send the updated links [#143](https://github.com/phrdang/enoch-bot/pull/143) & [#145](https://github.com/phrdang/enoch-bot/pull/145)
* Update the `setup` command to change the process required to set up parent, student, or teacher permissions on Discord. Read the [new instructions](https://discord.code4tomorrow.org/get-started/setup) to learn more [#146](https://github.com/phrdang/enoch-bot/pull/146)

#### Under the Hood Changes

* Use a queue for sending emails to parents and teachers [#111](https://github.com/phrdang/enoch-bot/pull/111) & [#144](https://github.com/phrdang/enoch-bot/pull/144)
* Switch from the Discord.py library to use Pycord instead [#124](https://github.com/phrdang/enoch-bot/pull/124)
* Remove AWS dependencies from requirements [#128](https://github.com/phrdang/enoch-bot/pull/128)

#### Notes

* C4T parents and students can report bugs or send in suggestions for Enoch Bot through the link sent after using the commands `enochbug` or `enochidea`

#### Documentation Changes

* Update commands references of the [Links](https://enoch.code4tomorrow.org/commands-reference/links) cog to account for the new command
* Update commands references of the [Setup](https://enoch.code4tomorrow.org/commands-reference/setup) cog to account for the updated setup commands

### [v3.0.0](https://github.com/phrdang/enoch-bot/tree/3.0.0)

{% hint style="success" %}
**Latest**
{% endhint %}

#### New Commands

* `version` - Sends the current version of Enoch bot [#74](https://github.com/phrdang/enoch-bot/pull/74)

#### Command Updates & Fixes

* `setup member` can now be used in all C4T Discord servers [#47](https://github.com/phrdang/enoch-bot/pull/47)

#### Under the Hood Changes

* Develop a new sheet model for storing data of people [#47](https://github.com/phrdang/enoch-bot/pull/47)
  * Create new spreadsheet models for storing class, teacher, and student information
  * Create new spreadsheet models for storing C4T member and ambassador information
  * Update `setup.py` to reflect these new models
* Have Enoch bot send emails for student acceptances and rejections [#47](https://github.com/phrdang/enoch-bot/pull/47)
* Have the class code level digit of 4 represent Games courses (ex. Python Games) [#83](https://github.com/phrdang/enoch-bot/pull/83)
* Have the class code time digits of 7, 8, and 9 represent 7-8, 8-9, and 9-10 PM Pacific Time, respectively [#83](https://github.com/phrdang/enoch-bot/pull/83) & [#89](https://github.com/phrdang/enoch-bot/pull/89/files)
* Add emojis for the C and iOS App Development courses [#86](https://github.com/phrdang/enoch-bot/pull/86)

#### Notes

* Parents of C4T student applicants will now receive an email about whether or not their child was accepted into a certain class [#47](https://github.com/phrdang/enoch-bot/pull/47)

#### Documentation Changes

* Update commands references of the [Setup](https://enoch.code4tomorrow.org/commands-reference/setup) and [Fun](https://enoch.code4tomorrow.org/commands-reference/fun) cogs to account for the new and updated commands

## v2.x.x

### [v2.3.0](https://github.com/phrdang/enoch-bot/tree/v2.3.0)

**New Commands**

* `verifiedmode` - Toggles the verified mode (and scheduled jobs) of the bot
* `getvmode` - Sends the current verified mode of the bot
* `printjobs` - Sends all of the scheduled and pending jobs
* `setscore` - Sets score of the desired user to the score provided
* `givepoints` - Adds the given number of points to a specified user
* `viewdb` - Sends the XP database as a string
* `myscore` - Sends the score page on which your score lies on
* `scoreboard` - Sends the full scoreboard
* `cleardb` - Clears the XP database
* `rmscore` - Removes the given user's score from the database
* All of the commands above are from pull requests [#24](https://github.com/phrdang/enoch-bot/pull/24) and [#61](https://github.com/phrdang/enoch-bot/pull/61)

**Command Updates & Fixes**

* `gofundme` - Sends the new Code 4 Tomorrow GoFundMe link [#65](https://github.com/phrdang/enoch-bot/pull/65)
* `help` - No longer sends hidden commands in the cog summary [#63](https://github.com/phrdang/enoch-bot/pull/63)
* Update the welcome DM sent upon a user joining the C4T discord server [#61](https://github.com/phrdang/enoch-bot/pull/61)
* Fix typos in the confirmation messages of `textdown`, `voicedown`, and `roledown` [#68](https://github.com/phrdang/enoch-bot/pull/68)
* Fix bug in `setup addproj ios app development` where the role is not found on the server, even though it's there [#71](https://github.com/phrdang/enoch-bot/pull/71)
* Fix bug in `textdown` and `voicedown` where categories are marked as "deleted", even though they weren't [#69](https://github.com/phrdang/enoch-bot/pull/69)

**Under the Hood Changes**

* Add `database.db` to the `.gitignore` [#24](https://github.com/phrdang/enoch-bot/pull/24)
* Organize imports in `__init__.py` [#61](https://github.com/phrdang/enoch-bot/pull/61)
* Delete the `Courses` class from `cft.py` [#67](https://github.com/phrdang/enoch-bot/pull/67)
* Edit `build.sql` to only include user ID and XP points for the scoreboard [#24](https://github.com/phrdang/enoch-bot/pull/24)
* Add docstrings to `syntax` and `cmd_help` functions in `help.py` [#63](https://github.com/phrdang/enoch-bot/pull/63)
* Replace the `is_administrator` check with the `has_permissions(administrator=True)` check, which is built-in to the discord.py API [#61](https://github.com/phrdang/enoch-bot/pull/61)

**Documentation Changes**

* Update [Getting Started](https://enoch.code4tomorrow.org/developer-guide/getting-started) to reflect on changes in the documentation and Enoch's verified mode and to clarify instructions with Git, bot tokens, and the contribution page
* Update commands references of the [Setup](https://enoch.code4tomorrow.org/commands-reference/setup) and [Utility](https://enoch.code4tomorrow.org/commands-reference/utility) cogs to account for the new commands
* Create [Development Process](https://enoch.code4tomorrow.org/developer-guide/development-process) to give tips and instructions on how to write code/documentation for Enoch

### [v2.2.1](https://github.com/phrdang/enoch-bot/tree/v2.2.1)

**New Commands**

* `roleup` - Creates class cosmetic roles
* `roledown` - Deletes class cosmetic roles
* `convertroles` - For all users with the Student role, converts it to the Alumnus role. For all users with the Teacher role, converts it to the Former Teacher role.
* `textup` - Creates class text channels
* `textdown` - Deletes class text channels and empty channel categories.

**Command Updates & Fixes**

* `voiceup` - Does not create or edit class cosmetic roles anymore. Includes created category names in the results embed.
* `voicedown` - Includes deleted category names in the results embed.
* `classup` - Alias for doing `roleup`, `textup`, and `voiceup` all together
* `classdown` - Alias for doing `roledown`, `textdown`, `voicedown`, and `convertroles` all together
* `edocs` - Sends the new Enoch Bot documentation link ([enoch.code4tomorrow.org](https://enoch.code4tomorrow.org)), which is now under the Code 4 Tomorrow GitBook team
* All commands in the [Setup](https://enoch.code4tomorrow.org/commands-reference/setup) cog will now send more detailed information in the event that an `HTTPException` is raised, specifically: the error text, the HTTP status code, and the Discord error code

**Under the Hood Changes**

* Condense class setup command error handlers into one function, `class_setup_error`

**Notes**

* Changes that apply to all of the class setup commands:
  * All commands that end in "down" (and also `convertroles`) now ask the user for a reaction confirmation before proceeding
  * All commands have adequate error handling/messages and output to tell the user what is happening/what happened after the command finishes
  * All commands require administrator permissions
* All major changes in this version were done in [#58](https://github.com/phrdang/enoch-bot/pull/58), which fixes [#57](https://github.com/phrdang/enoch-bot/issues/57).

**Documentation Changes**

* Update [Contributors](https://enoch.code4tomorrow.org/#contributing) list to reflect Neha P. leaving C4T
* Update [Getting Started](https://enoch.code4tomorrow.org/developer-guide/getting-started) to tell new developers to join the C4T GitBook team
* Update [Miscellaneous and Resources](https://enoch.code4tomorrow.org/developer-guide/miscellaneous-and-resources) with more external documentation links and explanation of branches vs. tags

### [v2.2.0](https://github.com/phrdang/enoch-bot/tree/v2.2.0)

**New Commands**

* `classdown` - Deletes class text and voice channels, deletes class roles, deletes all empty channel categories, and converts roles (Student -> Alumnus, Teacher -> Former Teacher) [#37](https://github.com/phrdang/enoch-bot/pull/37)
  * Uses reactions to confirm the classdown operation [#50](https://github.com/phrdang/enoch-bot/pull/50)
* `voicedown` - Deletes class voice channels [#51](https://github.com/phrdang/enoch-bot/pull/51) (partially fixes [#46](https://github.com/phrdang/enoch-bot/issues/46))
* `voiceup` - Creates class voice channels, class cosmetic roles, and class channel categories [#53](https://github.com/phrdang/enoch-bot/pull/53) (closes [#46](https://github.com/phrdang/enoch-bot/issues/46), [#55](https://github.com/phrdang/enoch-bot/issues/55))

**Command Updates & Fixes**

* `classup`
  * The `codes` argument is now optional. Providing no codes now executes the classup operation for all valid class codes on the class roster spreadsheet. [#38](https://github.com/phrdang/enoch-bot/pull/38)
  * Sets each class text channel's topic. [#38](https://github.com/phrdang/enoch-bot/pull/38)
  * Does not create duplicate class text channels/roles/categories if they already exist. [#38](https://github.com/phrdang/enoch-bot/pull/38)
  * Handles duplicate and invalid class codes. ([57bacf8](https://github.com/phrdang/enoch-bot/commit/57bacf8bbd2c83f272e063e64d8aa1d913e16f8f))
  * Sends its results and any runtime errors in embeds. ([57bacf8](https://github.com/phrdang/enoch-bot/pull/37/commits/57bacf8bbd2c83f272e063e64d8aa1d913e16f8f))
  * Fix issue where using this command too fast caused the bot to get rate limited by adding sleeps ([74519c5](https://github.com/phrdang/enoch-bot/pull/37/commits/74519c5c8266ca5628c4675236e9cdb97f284378))
  * Fix issue where C4T members don't have access to class text channels. [#56](https://github.com/phrdang/enoch-bot/pull/56) (partially fixes [#55](https://github.com/phrdang/enoch-bot/issues/55))
* `setup student` and `setup parent` - Activated for Summer 2021 classes ([5ca5fa3](https://github.com/phrdang/enoch-bot/commit/5ca5fa36cd063cb0c47d15398abd367d89520200))
* `attendance` - Sends the Notion attendance link [#52](https://github.com/phrdang/enoch-bot/pull/52)

**Under the Hood Changes**

* Stop writing to the class roster spreadsheet (this is a temporary "fix") due to issue [#41](https://github.com/phrdang/enoch-bot/issues/41)
* Add `is_administrator` check to manage sensitive class setup commands ([e0b23ca](https://github.com/phrdang/enoch-bot/commit/e0b23ca868148d442a43ad14cd8e734904256555))
* Bump `discord.py` to `1.7.3` ([49af283](https://github.com/phrdang/enoch-bot/commit/49af283458747568ef7c8c9e42ea3b574f660163))
* Add `name` attribute to the bot ([e27de8a](https://github.com/phrdang/enoch-bot/commit/e27de8a0328a25fc6da08183cc8311a73247096c))
* Update `README.md` ([47bb49d](https://github.com/phrdang/enoch-bot/commit/47bb49daf265768c67bf5067413bb1a4093a838f))
  * Specify that Enoch is deployed with AWS
  * Add Documentation and Installation sections
  * Update Contributing section with C4T Member application, developer qualifications, and updated contributor list

### [v2.1.0](https://github.com/phrdang/enoch-bot/tree/v2.1.0)

**New Commands**

* `setup ambassador` - Verifies a C4T ambassador, gives them the Ambassador role on the C4T Community server, and gives them pronoun roles (if any)
* `classup` - Creates private class text channels, course/level categories, and class roles
  * Can only be used by a user with administrator permissions

**Command Updates & Fixes**

* Update `setup` commands to notify users about how long it takes for the Google Sheets data to update on the bot
* Update `setup name` command
  * Update docstring
  * Remind users not to use brackets if they use them in this command (but still remove them automatically)
* Update `setup addproj` command
  * Add "ios app development", "ios app dev", "javascript", and "js" as valid project names
  * Add support for various shortened project names
  * Add "project" as a command alias
* Prevent `setup student` and `setup parent` commands from being used since student registration was still ongoing
* Activate the `setup teacher` command
* Send `help` messages in paragraphs if the entire message is longer than 1024 characters (the limit for an embed field's `value` attribute)
* Remove `is_member_server` check on the `folder` command
* Update `server` command docstring to reflect the removal of the `is_moderator` check in [v1.0.4](#v-1-0-4)

**Under the Hood Changes**

* Add support for C4T ambassador Google Sheet verification
* Update references to C4T Classes to C4T Community
* Check the guild ID instead of the guild name in the `on_member_join` function in `__init__.py`
* Add `PROJECT_ABBREVIATIONS` dictionary to `setup.py` to handle valid project names and valid project name abbreviations during setup commands
* [e8162b8](https://github.com/phrdang/enoch-bot/commit/e8162b886f97797fd3418695f1697609c0c384fb) Update Google Sheets write system to not write students and parents to classes that are already full (15 students written in the roster already)

### [v2.0.0](https://github.com/phrdang/enoch-bot/tree/v2.0.0)

**Command Updates & Fixes**

* The `directory` command now uses the shortlink ([code4tomorrow.org/directory](https://code4tomorrow.org/directory)) instead of the long super.so link
* The `classinfo` command can now be used by anyone with the C4T role (any C4T member), not just server administrators and those with the class role

**Under the Hood Changes**

* Use the new class sheet template to read/write class roster data
* Make `sheets.py` code more readable with docstrings and comments
* Improve Google Sheet reading/writing performance

## v1.0.x

### [v1.0.4](https://github.com/phrdang/enoch-bot/tree/v1.0.4)

**New Commands**

* `course` - Sends a link to one of C4T's courses on our website
* `courses` - Sends the link to the Courses page on C4T's website

**Removed Commands**

* `repository`
  * This command was merged with the `github` command
  * Using `+github` will send the C4T GitHub organization link, while using `+github [repo_name]` will send the link to that specific repository
* `thinkific`
  * Since C4T is no longer using Thinkific, the replacement command is `course`&#x20;
* `meet` was removed because C4T members no longer use Google Meet for team meetings

**Command Updates & Fixes**

* [01ea2ca](https://github.com/phrdang/enoch-bot/commit/01ea2ca6419560df764dcfd9b01a073efa23b8a7) Add more quotes to the `enoch` command
* [0c285e1](https://github.com/phrdang/enoch-bot/commit/0c285e1480edab0a5009c53128dc3a6e6f03d7d8) Update `setup` commands
  * `setup name`
    * Add examples of correct and incorrect cmd usage to docstring
    * Automatically remove <> and \[] characters from given display name
  * `setup student`
    * Specify that a `KeyError` occurs if the student can't be found
  * `setup teacher`
    * Update error message to make more sense for teachers
  * `setup parent`
    * Update error message to make more sense for parents
* [34b908c](https://github.com/phrdang/enoch-bot/commit/34b908c05917ddb25dfbd1c6bfa6d69277dc1b58) Update Links cog
  * Remove user mentions for link commands
  * Update `classinfo` error messages to be more specific and helpful
  * Add aliases to `bylaws` command
* Add user mentions for general error messages and setup command error messages
* Fix [#22](https://github.com/phrdang/enoch-bot/issues/22) by checking the user's `display_name` attribute rather than their `nick` attribute since `nick` defaults to the user's username
* Using `classinfo` and completing setup will now send the GitHub repository link and the course link (instead of just the Thinkific link)
* Command names are now case insensitive (e.g. `+github` and `+GITHUB` are equivalent)
* "contacts" was removed as a valid GitHub repository name for the `github` command
* Change setup so that COCO members no longer need to use `+setup addproj` since COCO doesn't have any projects
* Change name of valid COCO project from "tbd coco project" to "coco project" in the `setup addproj` command
* Fix bug in `setup done` command in which the C4T role would be added twice
* Remove "train" and "training" aliases of the `onboard` command since training

  articles are now located in the Team Wiki section of the C4T Notion, not on the onboarding site
* Add "onboarding" as an alias for the `onboard` command
* Add "community" and "ambassador" as valid server names

  in the `server` command
* Made `server` and `folder` command error messages more helpful by listing valid server and folder names
* Remove `is_member_server` check on the `directory` command

  since the directory is public on the C4T website now
* Add "discord" as an alias for the `guide` command
* Add "laws", "protocols", and "policies" as aliases for the `bylaws` command

**Under the Hood Changes**

* Catch `socket.timeout` exceptions
* Catch `BadUnionArgument` errors when processing commands
* Add misfire grace times to scheduled jobs (allows jobs to run slightly late rather than being missed completely)
* Refactor all references to the "C4T Classes" server to the "C4T Community" server
* Remove `is_moderator` check because it wasn't being used
* Guild checks now check if the current guild ID matches with another guild ID, rather than checking if the guild name matches
  * This is to avoid issues if a C4T server gets renamed

### [v1.0.3](https://github.com/phrdang/enoch-bot/tree/v1.0.3)

#### Command Updates & Fixes

* [#21](https://github.com/phrdang/enoch-bot/pull/21) `setup teacher` and `setup parent` now work without needing to enter codes&#x20;
  * Unlike the `setup student` command, the teacher and parent commands do not have the duplicate safety feature since there's no way currently to check if teachers/parents with the same name are actually different people
  * The commands still support adding codes, e.g. `+setup teacher 1111`.
* [aa743ca](https://github.com/phrdang/enoch-bot/commit/aa743cafcaecd7e9fd136fdc20d3f3c0592db703) Fix issue where `codes` is listed as a required argument for `setup student` , `setup teacher`, and `setup parent` commands

#### Under the Hood Changes

* [#21](https://github.com/phrdang/enoch-bot/pull/21) Fix issue where `\t` characters were found in spreadsheet cell values
* [877e9b3](https://github.com/phrdang/enoch-bot/commit/877e9b34b0d039130beffc6ea43014eb2196b1a8) Fix OAuth issue on AWS ec2 instance by copying `token.pickle` (this is probably not very secure, but it'll have to do for now)

### [v1.0.2](https://github.com/phrdang/enoch-bot/releases/tag/v1.0.2)

{% hint style="info" %}
Release: **Spring Classes 2021 Bot**
{% endhint %}

#### Removed Commands

* `course`

#### Command Updates & Fixes

* Update setup DM messages
* `repo` command now supports sending the ML and Tier Projects GitHub repositories
* Update `classinfo` command to work with Google Sheets functionality

#### Under the Hood Changes

* [#19](https://github.com/phrdang/enoch-bot/pull/19) , [#20](https://github.com/phrdang/enoch-bot/pull/20) Add Google Sheets functionality for student setup&#x20;
  * Add `StudTeachSheet` class to `cft.py` which represents data about the student-teacher matching Google Sheet
* Update meeting reminders to account for all team meetings and department meetings
* Add `Series` class to `cft.py` which represents data about the current class series (e.g. the Spring 2021 series)

### [v1.0.1](https://github.com/phrdang/enoch-bot/tree/v1.0.1)

#### New Commands

* `passwords` command sends the link to the passwords document
* `attendance` command sends the link to the attendance spreadsheet

#### Command Fixes & Updates

* Fix `onboard` command so it sends the correct link to [onboarding website](https://onboard.code4tomorrow.org)
* Add ML as a valid course name for user setup
* Update `thinkific` command
  * Add ML as a valid course name for the `thinkific` command
  * Fix bug where only the first word in the `course` argument was parsed
* `help` commands
  * Using `help` by itself now displays a list of cogs and their help commands
  * Using `help <cog_name>` now displays a list of commands in that cog
  * Using `help <cmd_name>` now displays a notice at the top explaining `< >` and `[ ]` should not be included when using the command
* `setup name` command no longer autocapitalizes and will change the nickname of the user to exactly what is passed as the `name` argument

#### Under the Hood Changes

* Add docstrings to cog classes (this is because by default the cog's description attribute is its docstring; the cog's description attribute is then used in the `help` command)
* Update Bot to work with C4T Classes Discord server (refactor references to C4T Teachers or C4T Students servers)
  * Refactor names of checks (e.g. `is_students_server()` is now `is_classes_server()`)
* Bump discord.py package version to `v1.6` and add all [Intents](https://discordpy.readthedocs.io/en/latest/api.html#discord.Intents) to the bot
* Change how Enoch handles unverified users
  * Instead of giving the Unverified role to all users upon joining the server, Enoch will not do anything
  * At 12 PM PST, Enoch will warn all users with only the @everyone role
  * At 12 AM PST, Enoch will kick all users with only the @everyone role
  * This is so that the C4T servers can take advantage of the new [rules screening feature](https://support.discord.com/hc/en-us/articles/1500000466882-Rules-Screening-FAQ) on Discord

## v0.1.x

### [v0.1.5](https://github.com/phrdang/enoch-bot/tree/v0.1.5)

#### Under the Hood Changes

* Update links, emails for Google Workspace

#### Command Changes

* folder
  * Add more aliases: shared\_drive, shareddrive, sdrive, google\_\_\_drive, googledrive, gdrive
  * Add "administrative" as a valid folder name
* setup addproj
  * HTML/CSS/JS is no longer a valid project name (renamed to Web Development)
  * Web Development now is called Website Design
  * This is to clarify the difference between the Web Dev curriculum development team and the C4T website team

#### New Commands

* emails - sends various C4T email addresses

### [v0.1.4](https://github.com/phrdang/enoch-bot/releases/tag/v0.1.4)

#### **Under the Hood Changes**

* [d7ec3b2](https://github.com/phrdang/enoch-bot/commit/d7ec3b23a86aad188b2a8efde08bfe6db784a196) Change server command to not send the deprecated C4T Teachers Discord invite link
* Bug fixes
  * [402e6d4](https://github.com/phrdang/enoch-bot/commit/402e6d43eea7ed8b3f7a3433cba82b65a3bec782) Fix server command to access links properly
  * [6b2a43c](https://github.com/phrdang/enoch-bot/commit/6b2a43ce92b1cccdf2545cabdb36b09014677102) Fix bug in setup done command where C4T role was not given upon setup completion
  * [b62f426](https://github.com/phrdang/enoch-bot/commit/b62f426aadf417059a2042704479df8fc0ca4563) Fix bug affecting adding project roles
  * [872b478](https://github.com/phrdang/enoch-bot/commit/872b478bad0ddd2c2b9c4c6119a851f2a46ceb48) Fix bug where COCO role couldn't be added

### [v0.1.3](https://github.com/phrdang/enoch-bot/releases/tag/v0.1.3)

#### Under the Hood Changes

* Update C4T knowledge base links

#### New Commands

* linkedin - sends the C4T LinkedIn link
* docs - sends the C4T Knowledge Base
* onboard - sends the C4T Onboarding site
* bylaws - sends the C4T Bylaws link
* edocs - sends the Enoch Bot documentation link

### [v0.1.2](https://github.com/phrdang/enoch-bot/releases/tag/v0.1.2)

* Add all team meeting reminders
* Fix setup for Volunteer Management

### [v0.1.1](https://github.com/phrdang/enoch-bot/releases/tag/v0.1.1)

* Add setup done command

### [v0.1.0 ](https://github.com/phrdang/enoch-bot/releases/tag/v0.1.0)

{% hint style="info" %}
Release: **Fall Classes 2020 Bot**
{% endhint %}

Enoch Bot is now being used live on C4T servers! 🎉

#### New Commands

* [#13](https://github.com/phrdang/enoch-bot/pull/13)
  * `classinfo <code>` - sends information about a class (e.g. course, times, days, meeting links) if the user has that class role or is an administrator
  * `directory` - sends a link to the C4T directory
* [#15](https://github.com/phrdang/enoch-bot/pull/15)
  * `setup member <dept>` - sets up a C4T member on the Code 4 Tomorrow server by adding their primary department role
  * `setup addproj <project>` - adds a project role to a user

#### Major Under the Hood Changes

* Add GitBook docs under `./docs/`
* Hardcode class data
* [123394e](https://github.com/phrdang/enoch-bot/commit/123394e9a5254d206452e0a8b938758eaf547547) Add Enoch Dev Bot functionality to let developers run experimental Enoch commands while the original Enoch bot works
* [8755df7](https://github.com/phrdang/enoch-bot/commit/8755df750cd45f325adfdb7d2058c05dc4191f53) Update name of the Enoch test server to Enoch Developers
* [#14](https://github.com/phrdang/enoch-bot/pull/14) Merge `check_unverified` and `kick_unverified` into single, generalized `handle_unverified` function
* Rename references to "subteam" to "member" to accommodate new organizational model

#### Fixes

* [b45fea8](https://github.com/phrdang/enoch-bot/commit/b45fea88ffda7d68854f761f862cbe99cfb47eae) Fix error message when `setup teacher` used in the wrong server
* [e197177](https://github.com/phrdang/enoch-bot/commit/e19717729d72eb64de351b7c92730b7e4c17ba99) Fix unverified job times (accidentally switched 12 AM and 12 PM PT)
* [2b0306b](https://github.com/phrdang/enoch-bot/commit/2b0306b8d44fc9f7aa1ace97c231ec878366fb7a) Fix `setup name` capitalization bug where hyphenated names weren't capitalized properly

#### TODOs

* Google sheets verification (working on it - [phrdang/enoch-bot:sheets](https://github.com/phrdang/enoch-bot/tree/sheets))
* Update GitBook docs for v0.1.0

## v0.0.x

### [v0.0.11-beta.1](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.11-beta.1)

{% hint style="warning" %}
Pre-release: **Setup Subcommands**
{% endhint %}

#### Bot Updates

* Added checks to commands to restrict their access to trusted parties [#3](https://github.com/phrdang/enoch-bot/pull/3)
  * `slap` command was removed
* Added setup subcommands [#5](https://github.com/phrdang/enoch-bot/pull/5)
  * `diagnose` command works now and has expanded functionality
  * New `course` command for setting up teachers on C4T Teachers server
  * New `setup name` command for changing nickname during server setup
  * `help` command now shows subcommands

#### Under the Hood

* Update function/command docstrings
* Stopped using JSON files because of flake8 warnings when using \* import (see also: [#2](https://github.com/phrdang/enoch-bot/pull/2) )
* Hardcoded class/student/teacher/parent data because there wasn't enough time to learn the Google Sheets API before classes began [#4](https://github.com/phrdang/enoch-bot/pull/4)
* GitHub workflows now only trigger on pull requests because having PRs and push triggers is redundant [#5](https://github.com/phrdang/enoch-bot/pull/5)
* Fix multi-line string concatenation [#5](https://github.com/phrdang/enoch-bot/pull/5)

### [v0.0.10-beta.1](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.10-beta.1)

* Fix style
* Use black and flake8 workflows
* Add welcome instructions scheduler jobs
* Refactor C4T info variables
* Organize directory structure

### [v0.0.9-beta.1](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.9-beta.1)

{% hint style="warning" %}
Pre-release: **Enoch is \*actually\* (hopefully) working now**
{% endhint %}

#### Major feature changes

* Fixed `setup` command so that the bot doesn't need to be restarted/readded
  * `setup` command will now remove the **Unverified** role from the user if they completed 100% of the setup
  * `setup` command will now also send a user a "Setup Complete!" DM if they completed 100% of the setup (no errors)
  * `setup` command will now send a user a DM for each class they specified in the command, which contains class info (basically the attributes of each `Class` object)
* Added `on_member_join` event so that custom C4T welcome DM is sent to a user who just joined the server

#### Major under the hood changes

* Added `Class` class to make retrieving class info easier
* Started breaking up the `setup` function into helper functions to reduce complexity
* Started using `.json` files for links and class info instead of `.py` files
* Separated the `Default` cog into 2 cogs: `Links` and `Utility`

### [v0.0.8](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.8)

* Finish tutorial part 14 - custom help command, add basic C4T setup functionality

### [v0.0.8-beta.2](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.8-beta.2)

{% hint style="warning" %}
Pre-release: **Enoch bot is actually working now**
{% endhint %}

* Added an `enoch` (hidden) command to the Fun cog
* Added a "Playing Game" status for the bot to display the `help` command

### [v0.0.8-beta.1](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.8-beta.1)

{% hint style="warning" %}
Pre-release: **Enoch Bot Beta**
{% endhint %}

* Enoch bot is here! See features in [#1](https://github.com/phrdang/enoch-bot/pull/1).

### [v0.0.7](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.7)

* Finish tutorial Part 11 - command specific error handling

### [v0.0.6](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.6)

* Finish tutorial Part 10 - introduction to commands

### [v0.0.5](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.5)

* Finish tutorial Part 9 - introduction to cogs

### [v0.0.4](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.4)

* Finish tutorial Part 8 - scheduling tasks

### [v0.0.3](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.3)

* Finish tutorial Part 7 - handling errors

### [v0.0.2](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.2)

* Finish tutorial Part 6 - sending messages, embeds

### [v0.0.1](https://github.com/phrdang/enoch-bot/releases/tag/v0.0.1)

* Finish tutorial Part 5 - making the bot run
