Teacher

Discord bot for my Book club

Teacher is a Discord bot and companion website I wrote for a book club my friend started. Teacher bot is capable of responding to several commands to maintain a reading list with ratings and organization by series and author which it will message to a discord channel when prompted. The website provides a more visual interface.

Commands

  • !add <book> [author] [series]: Adds a new book with optional author and series to the syllabus.

  • !assign <description> [yyyy-mm-dd]: Assigns a new assignment for the class. The second argument is an optional due date in yyyy-mm-dd format; if omitted or unparseable it defaults to 2 weeks from today (and any unparseable text is appended to the description).

  • !assignment: Prints the current assignment for the class.

  • !cmds: Displays available bot commands.

  • !columns: Lists all column names in the syllabus table.

  • !complete <identifier>: Marks a book as complete or incomplete by its name or unique ID.

  • !graveyard [minutes]: Lists all completed books; optionally auto-deletes after specified minutes.

  • !list_series <series_name>: Lists all books in a specific series, formatted with authors and order.

  • !remove <identifier>: Removes a book from the syllabus by name or unique ID.

  • !report_bug <description>: Reports a bug.

  • !syllabus [minutes]: Lists all books in the syllabus; optionally auto-deletes after specified minutes. Use 0 for infinite time.

  • !todo [minutes]: Lists all incomplete books; optionally auto-deletes after specified minutes.

  • !update <identifier> <column> <new_value>: Updates a specific column of a book in the syllabus.

  • !update_assignment <description>: Updates the description of the most recent assignment.

  • !url or !web: Prints the current URL for the web application.

Tech Stack:

Python, JavaScript, Bootstrap, Discord API, PostgreSQL, Flask, Jinja2, REST, PyTest, Docker, Cypress, Hosted on google cloud