Changelog
Updates to the bot as the versions progress
v2.x.x
Latest
New Commands
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. #38Sets 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)
setup student
andsetup 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
to1.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 rolesCan 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 botUpdate
setup name
commandUpdate docstring
Remind users not to use brackets if they use them in this command (but still remove them automatically)
Update
setup addproj
commandAdd "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
andsetup parent
commands from being used since student registration was still ongoingActivate the
setup teacher
commandSend
help
messages in paragraphs if the entire message is longer than 1024 characters (the limit for an embed field'svalue
attribute)Remove
is_member_server
check on thefolder
commandUpdate
server
command docstring to reflect the removal of theis_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 tosetup.py
to handle valid project names and valid project name abbreviations during setup commandse8162b8 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 linkThe
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 commentsImprove Google Sheet reading/writing performance
v1.0.x
New Commands
course
- Sends a link to one of C4T's courses on our websitecourses
- Sends the link to the Courses page on C4T's website
Removed Commands
repository
This command was merged with the
github
commandUsing
+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
command0c285e1 Update
setup
commandssetup 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 helpfulAdd 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 theirnick
attribute sincenick
defaults to the user's usernameUsing
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
commandChange setup so that COCO members no longer need to use
+setup addproj
since COCO doesn't have any projectsChange name of valid COCO project from "tbd coco project" to "coco project" in the
setup addproj
commandFix bug in
setup done
command in which the C4T role would be added twiceRemove "train" and "training" aliases of the
onboard
command since trainingarticles 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
commandAdd "community" and "ambassador" as valid server names
in the
server
commandMade
server
andfolder
command error messages more helpful by listing valid server and folder namesRemove
is_member_server
check on thedirectory
commandsince the directory is public on the C4T website now
Add "discord" as an alias for the
guide
commandAdd "laws", "protocols", and "policies" as aliases for the
bylaws
command
Under the Hood Changes
Catch
socket.timeout
exceptionsCatch
BadUnionArgument
errors when processing commandsAdd 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 usedGuild 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
andsetup parent
now work without needing to enter codesUnlike 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 peopleThe commands still support adding codes, e.g.
+setup teacher 1111
.
aa743ca Fix issue where
codes
is listed as a required argument forsetup student
,setup teacher
, andsetup parent
commands
Under the Hood Changes
#21 Fix issue where
\t
characters were found in spreadsheet cell values877e9b3 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 repositoriesUpdate
classinfo
command to work with Google Sheets functionality
Under the Hood Changes
Update meeting reminders to account for all team meetings and department meetings
Add
Series
class tocft.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 documentattendance
command sends the link to the attendance spreadsheet
Command Fixes & Updates
Fix
onboard
command so it sends the correct link to onboarding websiteAdd ML as a valid course name for user setup
Update
thinkific
commandAdd ML as a valid course name for the
thinkific
commandFix bug where only the first word in the
course
argument was parsed
help
commandsUsing
help
by itself now displays a list of cogs and their help commandsUsing
help <cog_name>
now displays a list of commands in that cogUsing
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 thename
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 nowis_classes_server()
)
Bump discord.py package version to
v1.6
and add all Intents to the botChange 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
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
classinfo <code>
- sends information about a class (e.g. course, times, days, meeting links) if the user has that class role or is an administratordirectory
- sends a link to the C4T directory
setup member <dept>
- sets up a C4T member on the Code 4 Tomorrow server by adding their primary department rolesetup 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
andkick_unverified
into single, generalizedhandle_unverified
functionRename references to "subteam" to "member" to accommodate new organizational model
Fixes
b45fea8 Fix error message when
setup teacher
used in the wrong servere197177 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
Google sheets verification (working on it - phrdang/enoch-bot:sheets)
Update GitBook docs for v0.1.0
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 functionalityNew
course
command for setting up teachers on C4T Teachers serverNew
setup name
command for changing nickname during server setuphelp
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/readdedsetup
command will now remove the Unverified role from the user if they completed 100% of the setupsetup
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 eachClass
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 easierStarted breaking up the
setup
function into helper functions to reduce complexityStarted using
.json
files for links and class info instead of.py
filesSeparated the
Default
cog into 2 cogs:Links
andUtility
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 cogAdded 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