â Changelog
Updates to the bot as the versions progress
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 #130Update 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
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
orenochidea
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
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
v2.x.x
New Commands
verifiedmode
- Toggles the verified mode (and scheduled jobs) of the botgetvmode
- Sends the current verified mode of the botprintjobs
- Sends all of the scheduled and pending jobssetscore
- Sets score of the desired user to the score providedgivepoints
- Adds the given number of points to a specified userviewdb
- Sends the XP database as a stringmyscore
- Sends the score page on which your score lies onscoreboard
- Sends the full scoreboardcleardb
- Clears the XP databasermscore
- Removes the given user's score from the database
Command Updates & Fixes
gofundme
- Sends the new Code 4 Tomorrow GoFundMe link #65help
- No longer sends hidden commands in the cog summary #63Update the welcome DM sent upon a user joining the C4T discord server #61
Fix typos in the confirmation messages of
textdown
,voicedown
, androledown
#68Fix bug in
setup addproj ios app development
where the role is not found on the server, even though it's there #71Fix bug in
textdown
andvoicedown
where categories are marked as "deleted", even though they weren't #69
Under the Hood Changes
Add
database.db
to the.gitignore
#24Organize imports in
__init__.py
#61Delete the
Courses
class fromcft.py
#67Edit
build.sql
to only include user ID and XP points for the scoreboard #24Add docstrings to
syntax
andcmd_help
functions inhelp.py
#63Replace the
is_administrator
check with thehas_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
Create Development Process to give tips and instructions on how to write code/documentation for Enoch
New Commands
roleup
- Creates class cosmetic rolesroledown
- Deletes class cosmetic rolesconvertroles
- 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 channelstextdown
- 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 doingroleup
,textup
, andvoiceup
all togetherclassdown
- Alias for doingroledown
,textdown
,voicedown
, andconvertroles
all togetheredocs
- Sends the new Enoch Bot documentation link (enoch.code4tomorrow.org), which is now under the Code 4 Tomorrow GitBook teamAll 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 proceedingAll 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
Documentation Changes
Update Contributors list to reflect Neha P. leaving C4T
Update Getting Started to tell new developers to join the C4T GitBook team
Update Miscellaneous and Resources with more external documentation links and explanation of branches vs. tags
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