Changelog

Updates to the bot as the versions progress

All Releases | All Tags

v2.x.x

Latest

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