✅Changelog

Updates to the bot as the versions progress

All Releases | All Tags

v3.x.x

v3.1.0

Latest

New Commands

  • enochbug & enochidea - Sends the link for the bug report/idea suggestions form of Enoch bot #134

Command Updates & Fixes

  • Update the help command to include the select menu and button features to paginate contents of the command #130

  • Change the link command to send the updated links #143 & #145

  • Update the setup command to change the process required to set up parent, student, or teacher permissions on Discord. Read the new instructions to learn more #146

Under the Hood Changes

  • Use a queue for sending emails to parents and teachers #111 & #144

  • Switch from the Discord.py library to use Pycord instead #124

  • Remove AWS dependencies from requirements #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 cog to account for the new command

  • Update commands references of the Setup cog to account for the updated setup commands

Latest

New Commands

  • version - Sends the current version of Enoch bot #74

Command Updates & Fixes

  • setup member can now be used in all C4T Discord servers #47

Under the Hood Changes

  • Develop a new sheet model for storing data of people #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

  • Have the class code level digit of 4 represent Games courses (ex. Python Games) #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 & #89

  • Add emojis for the C and iOS App Development courses #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

Documentation Changes

  • Update commands references of the Setup and Fun cogs to account for the new and updated commands

v2.x.x

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 and #61

Command Updates & Fixes

  • gofundme - Sends the new Code 4 Tomorrow GoFundMe link #65

  • help - No longer sends hidden commands in the cog summary #63

  • Update the welcome DM sent upon a user joining the C4T discord server #61

  • Fix typos in the confirmation messages of textdown, voicedown, and roledown #68

  • Fix bug in setup addproj ios app development where the role is not found on the server, even though it's there #71

  • Fix bug in textdown and voicedown where categories are marked as "deleted", even though they weren't #69

Under the Hood Changes

  • Add database.db to the .gitignore #24

  • Organize imports in __init__.py #61

  • Delete the Courses class from cft.py #67

  • Edit build.sql to only include user ID and XP points for the scoreboard #24

  • Add docstrings to syntax and cmd_help functions in help.py #63

  • Replace the is_administrator check with the has_permissions(administrator=True) check, which is built-in to the discord.py API #61

Documentation Changes

  • Update 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 and Utility cogs to account for the new commands

  • Create Development Process to give tips and instructions on how to write code/documentation for Enoch

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), which is now under the Code 4 Tomorrow GitBook team

  • All commands in the 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, which fixes #57.

Documentation Changes

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

    • Uses reactions to confirm the classdown operation #50

  • voicedown - Deletes class voice channels #51 (partially fixes #46)

  • voiceup - Creates class voice channels, class cosmetic roles, and class channel categories #53 (closes #46, #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

    • Sets each class text channel's topic. #38

    • Does not create duplicate class text channels/roles/categories if they already exist. #38

    • Handles duplicate and invalid class codes. (57bacf8)

    • Sends its results and any runtime errors in embeds. (57bacf8)

    • Fix issue where using this command too fast caused the bot to get rate limited by adding sleeps (74519c5)

    • Fix issue where C4T members don't have access to class text channels. #56 (partially fixes #55)

  • setup student and setup parent - Activated for Summer 2021 classes (5ca5fa3)

  • attendance - Sends the Notion attendance link #52

Under the Hood Changes

  • Stop writing to the class roster spreadsheet (this is a temporary "fix") due to issue #41

  • Add is_administrator check to manage sensitive class setup commands (e0b23ca)

  • Bump discord.py to 1.7.3 (49af283)

  • Add name attribute to the bot (e27de8a)

  • Update README.md (47bb49d)

    • 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

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

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 Update Google Sheets write system to not write students and parents to classes that are already full (15 students written in the roster already)

Command Updates & Fixes

  • The directory command now uses the shortlink (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

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

  • meet was removed because C4T members no longer use Google Meet for team meetings

Command Updates & Fixes

  • 01ea2ca Add more quotes to the enoch command

  • 0c285e1 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 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 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

Command Updates & Fixes

  • #21 setup teacher and setup parent now work without needing to enter codes

    • 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 Fix issue where codes is listed as a required argument for setup student , setup teacher, and setup parent commands

Under the Hood Changes

  • #21 Fix issue where \t characters were found in spreadsheet cell values

  • 877e9b3 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)

Release: Spring Classes 2021 Bot

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 , #20 Add Google Sheets functionality for student setup

    • 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)

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

  • 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 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 on Discord

v0.1.x

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

Under the Hood Changes

  • d7ec3b2 Change server command to not send the deprecated C4T Teachers Discord invite link

  • Bug fixes

    • 402e6d4 Fix server command to access links properly

    • 6b2a43c Fix bug in setup done command where C4T role was not given upon setup completion

    • b62f426 Fix bug affecting adding project roles

    • 872b478 Fix bug where COCO role couldn't be added

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

  • Add all team meeting reminders

  • Fix setup for Volunteer Management

  • Add setup done command

Release: Fall Classes 2020 Bot

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

New Commands

  • #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

    • 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 Add Enoch Dev Bot functionality to let developers run experimental Enoch commands while the original Enoch bot works

  • 8755df7 Update name of the Enoch test server to Enoch Developers

  • #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 Fix error message when setup teacher used in the wrong server

  • e197177 Fix unverified job times (accidentally switched 12 AM and 12 PM PT)

  • 2b0306b Fix setup name capitalization bug where hyphenated names weren't capitalized properly

TODOs

v0.0.x

Pre-release: Setup Subcommands

Bot Updates

  • Added checks to commands to restrict their access to trusted parties #3

    • slap command was removed

  • Added setup subcommands #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 )

  • Hardcoded class/student/teacher/parent data because there wasn't enough time to learn the Google Sheets API before classes began #4

  • GitHub workflows now only trigger on pull requests because having PRs and push triggers is redundant #5

  • Fix multi-line string concatenation #5

  • Fix style

  • Use black and flake8 workflows

  • Add welcome instructions scheduler jobs

  • Refactor C4T info variables

  • Organize directory structure

Pre-release: Enoch is *actually* (hopefully) working now

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

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

Pre-release: Enoch bot is actually working now

  • Added an enoch (hidden) command to the Fun cog

  • Added a "Playing Game" status for the bot to display the help command

Pre-release: Enoch Bot Beta

  • Enoch bot is here! See features in #1.

  • Finish tutorial Part 11 - command specific error handling

  • Finish tutorial Part 10 - introduction to commands

  • Finish tutorial Part 9 - introduction to cogs

  • Finish tutorial Part 8 - scheduling tasks

  • Finish tutorial Part 7 - handling errors

  • Finish tutorial Part 6 - sending messages, embeds

  • Finish tutorial Part 5 - making the bot run

Last updated