Enoch Bot
Enoch GitHubC4T WebsiteC4T GitHub
3.1.0
3.1.0
  • ðŸĪ–Welcome
  • 📜License
  • ✅Changelog
  • Commands Reference
    • â„đïļReading Command Usage Info
    • ðŸĪŠFun
    • ❓Help
    • 🔗Links
    • 📋Setup
    • ⚙ïļUtility
  • Developer Guide
    • 👋Getting Started
    • ðŸ’ŧDevelopment Process
    • 📚Miscellaneous and Resources
Powered by GitBook
On this page
  • v3.x.x
  • v3.1.0
  • v3.0.0
  • v2.x.x
  • v2.3.0
  • v2.2.1
  • v2.2.0
  • v2.1.0
  • v2.0.0
  • v1.0.x
  • v1.0.4
  • v1.0.3
  • v1.0.2
  • v1.0.1
  • v0.1.x
  • v0.1.5
  • v0.1.4
  • v0.1.3
  • v0.1.2
  • v0.1.1
  • v0.1.0
  • v0.0.x
  • v0.0.11-beta.1
  • v0.0.10-beta.1
  • v0.0.9-beta.1
  • v0.0.8
  • v0.0.8-beta.2
  • v0.0.8-beta.1
  • v0.0.7
  • v0.0.6
  • v0.0.5
  • v0.0.4
  • v0.0.3
  • v0.0.2
  • v0.0.1

Was this helpful?

Changelog

Updates to the bot as the versions progress

PreviousLicenseNextReading Command Usage Info

Last updated 2 years ago

Was this helpful?

|

v3.x.x

v3.1.0

Latest

New Commands

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

Command Updates & Fixes

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

  • Change the link command to send the updated links &

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

Under the Hood Changes

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

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

  • Remove AWS dependencies from requirements

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

Latest

New Commands

Command Updates & Fixes

Under the Hood Changes

    • 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

Notes

Documentation Changes

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

Command Updates & Fixes

Under the Hood Changes

Documentation Changes

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

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

Documentation Changes

New Commands

Command Updates & Fixes

  • classup

Under the Hood Changes

    • 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

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

Command Updates & Fixes

  • 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

    • 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

    • 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

  • 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

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

Under the Hood Changes

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

    • 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

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

  • 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

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

  • Bug fixes

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 administrator

    • directory - 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 role

    • setup addproj <project> - adds a project role to a user

Major Under the Hood Changes

  • Add GitBook docs under ./docs/

  • Hardcode class data

  • Rename references to "subteam" to "member" to accommodate new organizational model

Fixes

TODOs

  • Update GitBook docs for v0.1.0

v0.0.x

Pre-release: Setup Subcommands

Bot Updates

    • slap command was removed

    • 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

  • 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

  • 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

Update commands references of the cog to account for the new command

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

version - Sends the current version of Enoch bot

setup member can now be used in all C4T Discord servers

Develop a new sheet model for storing data of people

Have Enoch bot send emails for student acceptances and rejections

Have the class code level digit of 4 represent Games courses (ex. Python Games)

Have the class code time digits of 7, 8, and 9 represent 7-8, 8-9, and 9-10 PM Pacific Time, respectively &

Add emojis for the C and iOS App Development courses

Parents of C4T student applicants will now receive an email about whether or not their child was accepted into a certain class

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

All of the commands above are from pull requests and

gofundme - Sends the new Code 4 Tomorrow GoFundMe link

help - No longer sends hidden commands in the cog summary

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

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

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

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

Add database.db to the .gitignore

Organize imports in __init__.py

Delete the Courses class from cft.py

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

Add docstrings to syntax and cmd_help functions in help.py

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

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

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

edocs - Sends the new Enoch Bot documentation link (), which is now under the Code 4 Tomorrow GitBook team

All commands in the 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

All major changes in this version were done in , which fixes .

Update list to reflect Neha P. leaving C4T

Update to tell new developers to join the C4T GitBook team

Update with more external documentation links and explanation of branches vs. tags

classdown - Deletes class text and voice channels, deletes class roles, deletes all empty channel categories, and converts roles (Student -> Alumnus, Teacher -> Former Teacher)

Uses reactions to confirm the classdown operation

voicedown - Deletes class voice channels (partially fixes )

voiceup - Creates class voice channels, class cosmetic roles, and class channel categories (closes , )

The codes argument is now optional. Providing no codes now executes the classup operation for all valid class codes on the class roster spreadsheet.

Sets each class text channel's topic.

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

Handles duplicate and invalid class codes. ()

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

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

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

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

attendance - Sends the Notion attendance link

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

Add is_administrator check to manage sensitive class setup commands ()

Bump discord.py to 1.7.3 ()

Add name attribute to the bot ()

Update README.md ()

Update server command docstring to reflect the removal of the is_moderator check in

Update Google Sheets write system to not write students and parents to classes that are already full (15 students written in the roster already)

The directory command now uses the shortlink () instead of the long super.so link

Add more quotes to the enoch command

Update setup commands

Update Links cog

Fix by checking the user's display_name attribute rather than their nick attribute since nick defaults to the user's username

setup teacher and setup parent now work without needing to enter codes

Fix issue where codes is listed as a required argument for setup student , setup teacher, and setup parent commands

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

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)

, Add Google Sheets functionality for student setup

Fix onboard command so it sends the correct link to

Bump discord.py package version to v1.6 and add all to the bot

This is so that the C4T servers can take advantage of the new on Discord

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

Fix server command to access links properly

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

Fix bug affecting adding project roles

Fix bug where COCO role couldn't be added

Add Enoch Dev Bot functionality to let developers run experimental Enoch commands while the original Enoch bot works

Update name of the Enoch test server to Enoch Developers

Merge check_unverified and kick_unverified into single, generalized handle_unverified function

Fix error message when setup teacher used in the wrong server

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

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

Google sheets verification (working on it - )

Added checks to commands to restrict their access to trusted parties

Added setup subcommands

Stopped using JSON files because of flake8 warnings when using * import (see also: )

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

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

Fix multi-line string concatenation

Enoch bot is here! See features in .

✅
All Releases
All Tags
#134
#130
#143
#145
new instructions
#146
#111
#144
#124
#128
Links
Setup
v3.0.0
#74
#47
#47
#47
#83
#83
#89
#86
#47
Setup
Fun
v2.3.0
#24
#61
#65
#63
#61
#68
#71
#69
#24
#61
#67
#24
#63
#61
Getting Started
Setup
Utility
Development Process
v2.2.1
enoch.code4tomorrow.org
Setup
#58
#57
Contributors
Getting Started
Miscellaneous and Resources
v2.2.0
#37
#50
#51
#46
#53
#46
#55
#38
#38
#38
57bacf8
57bacf8
74519c5
#56
#55
5ca5fa3
#52
#41
e0b23ca
49af283
e27de8a
47bb49d
v2.1.0
e8162b8
v2.0.0
code4tomorrow.org/directory
v1.0.4
01ea2ca
0c285e1
34b908c
#22
v1.0.3
#21
aa743ca
#21
877e9b3
v1.0.2
#19
#20
v1.0.1
onboarding website
Intents
rules screening feature
v0.1.5
v0.1.4
d7ec3b2
402e6d4
6b2a43c
b62f426
872b478
v0.1.3
v0.1.2
v0.1.1
v0.1.0
#13
#15
123394e
8755df7
#14
b45fea8
e197177
2b0306b
phrdang/enoch-bot:sheets
v0.0.11-beta.1
#3
#5
#2
#4
#5
#5
v0.0.10-beta.1
v0.0.9-beta.1
v0.0.8
v0.0.8-beta.2
v0.0.8-beta.1
#1
v0.0.7
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
v1.0.4