All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add a new analytics command
- Add webhook announcements management
- Use a google sheet as a database for subjects
- Add a thank you message to eprofs when class finishes with some helpful tips
- Fix grouping of eclasses per day in upcoming classes message
- Rename tags to faq
- Improve faq editing by adding content in the edit input of the modal
- Improve date error messages by showing a different message if the date is invalid or in the past/too far in the future
- Remove graduation year from school year choice list when creating an eclass. This makes it more future proof in case the command isn't updated to Discord when a new graduation year comes.
- Remove the faq embed feature, as we can now integrate link in plain messages
- Simplify GitHub labels
- Reorganize TODOs and FIXMEs
- Move managers to container instead of client
- Improve caching mechanism
- Remove an invalid LaTeX component
- Upgrade dependencies
- Fix no reply being sent when cancelling an eclass
- Improve equation rendering by using MathJax (thanks @Niilyx)
- Improve relative time parsing for reminders and eclasses
- Add (anonymous) tracking of eclass participations
- Add automatic postponig of eclasses end date if people are still in the channel
- Fix crash when fetching removed announcement message
- Fix mention formatting in eclass announcement
- Fix logs not being sent when a permission overwrite is removed
- Fix fatal error in logs when removing a permission overwrite
- Improve "New Eclass" embed design
- Improve "Eclass Started" embed design
- Improve channel executor heuristics in logs
- Removed tip about date formatting in reminders
- Improve date parsing by adding natural date support
- Improved message update diff in logs
- Improved clarity about the date field requiring the hour too
- Improved date parsing by adding natural date support
- Fix
/reminders edit
with modal crashing in DMs - Fix newlines not being consistently removed in
/reminders list
- Fix cache not being updated when using
/reminders create/edit/delete
- Fixed past reminders being included in autocomplete
- Add a modal to edit reminders when no options are given
- Improve ghost-ping alert message wording
- Add an "embed" indicator to the MessageDeleteBulk log event message list
- Add avatar to GuildJoin/GuildLeave log events
- Add Nth member in GuildJoin log event
- Add MessageDeleteBulk logs (fixes #94)
- Add thumbnail images to reaction-roles (fixes #78)
- Add ability to snooze reminders (fixes #43)
- Fix inaccurate channel update change set for logs
- Fix incorrect invite link regex for invitation logs
- Fix inconsistent terminology for manage-contacts
- Fix non-required amount option for
/purge
(fixes #96) - Fix reminder not removed from cache once once finished
- Added a
/purge
command (fixes #44) - Added attachments to Message{Create,Update,Delete} logs
- Added Channel{Create,Update,Delete} logs
- Added Role{Create,Update,Delete} logs
- Added special thanks to David G.
- Fixed crash by ensuring command interactions don't timeout
- Fixed latex command when no arguments are given by showing a modal with text input
- Fixed logs display by queuing them so they are sent in order
- Fixed logs by sending ChangeUsername only in guilds where the member is (fixes #93)
- Improved eclasses by deleting the role after a week only (fixes #91)
- Improved
reacted
option of dump command by making it easier to use - Improved reminders list by ordering them by due date
- Removed unused GitHub labels
- Fix eclass subscription by using the correct field in the query
- Fix ConfigurationManager's caching logic by checking for all different types of channel types
- Remove nonsensical copy-pasted code when caching eclass messages
- Add before/after for message editing logs (fixes #74)
- Fix crash by defering confirmation reply in eclass creation
- Add
Intent.MessageContent
to subscribed's intents - Upgraded to Discord.js 14 and Sapphire 4, and removed discord-api-types
- Fix editing an eclass date not updating the end date
- Fix eclass subscribers not correctly added to the database
- Fix the contact/manage-contact commands by respecting the guildId field
- Fix the lxp command by correcting aggregation pipeline
- Fix
undefined
appearing in eclass notification messages
- Rename
pave
command tolxp
- Remove hint about slash commands when using a text command
- Fix crash when someone joins via the Student Hub discovery
- Fix false positive in delete messages' logs for the executor
- Show only relevant class IDs in
/eclass
autocomplete - Clarify eclass cancel confirmation message
- Clarify ghost-ping alert message
- Ignore managed roles (bots) for ghost-pings (fixes #84)
- Fix database queries using
guild
rather thanguildId
- Fix eclass creation answering to wrong interaction
- Fix typo in the "Bug Report" issue template
- Fix subjects' name in autocomplete
- Fix field names in ConfigurationManager
- Fix eclass' role mention
- Fix field names of eclass creation
- Fix logs by calling getContentValue correctly and adding a fallback
- Fix eclass overlaps check
- Fix crash on load when checking permissions
- Fix condition on reaction-role creation
- Added an anti ghost-ping
- Fixed autocomplete by using the new option names
- Make slash command options french
- Remove unused messages in configuration
- Cleanup useless types
- Fix timeout in /reaction-role create by defering modal reply
- Trim autocomplete item name for reaction-role
- Make all commands Chat Input Interactions
- Rename
PingRoleIntersection
toRoleIntersection
- Separate
manage-tags
(tag creation, edition, removal...) &tag
(list & see) commands - Separate
manage-contacts
(contact creation, edition, removal) &contact
(list) commands - Made
code
command a Context Menu Interaction - Made
eval
command a Context Menu Interaction
- Added ability to edit multiple properties of eclasses at once
- Added ability to add multiple record links to an eclass
- Added ability to remove a record link from an eclass
- Improved error handling of
MergePdf
command - Improved database's data homogeneity
- Enabled "strictNullChecks" in tsconfig.json
- Improved code quality
- Removed calendars as they were not used
- Removed flagged-messages as they were not used
- Removed the
subject
command as it was impractical - Removed the
help
command as it is now built-in thanks to Chat Input Interactions
- Add user-mention format to dump command
- Add small hints to prompts in eclass builder
- Add place metadata to eclasses (closes #70)
- Add silent record option to eclasses (closes #63)
- Add an overlap checker to eclasses (closes #55)
- Made reaction optional on "reacted" filter in dump command
- Bring back ability to choose what role to alert for eclasses
- Remove eprof flagging
- Lazily compute school years for eclass builder select menu
- Made last argument of
eclass edit
variadic - Show more than 25 pages in paginated embeds if necessary (closes #69)
- Improved examples on help command by adding two line breaks between them
- Fix reaction filter in dump command, by not relying on the cache
- Fix crash when using the dump command with a reaction filter
- Make lint test pass.
- Add a filter in
!dump
command to choose who reacted to a message, with what reaction.
- Fixed format in
!eclass edit
command's success message.
- Add new L3 roles (for those abroad or at the campus)
- Ability to chose which L3 role to ues when creating an eclass
- Improve output of
!eclass info
command by using POJOs.
- Improve eclass subscription logic, by subscribing them only if they are not subscribed yet
- Use new SharePoint URL for eclasses recording, and hide this URL from Git
- Fix crash caused by testing code when choosing subjects in dropdown menu (when creating an eclass)
- Fix crash when creating a class with more than 25 subjects
- Add a
PaginatedContentMessageEmbed
class to replacePaginatedFieldMessageEmbed
- Add a records command
- Add a userinfo command
- Improve reminders edit by now showing the date of the edited reminder
- Improve pagination errors by localizing the interaction error message
- Improve reminders's list by presenting multiline reminders better
- Fix crash due to a old misplaced
this.error()
- Fix date resolver by auto-pading years to be in 21th century
- Fix date resolver by disallowing dates in the past (unless
context.canBePast
is true) - Fix date resolver by making hours & minutes optional, defaulting to current date
- Add
--dm
flag indump
command to send content in dm
- Fixed crash in
dump
command if content is too long, send as file instead - Fix
pave
command by add missing new line at end of line
- Add
dump
command - Add
pave
command - Add reminder's date to reminder's creation message
- Add a dayFormat (DD/MM/YYYY) to internal settings
- Improve subcommand's inner workings
- Improve
vocalcount
by showing all channels every time - Improve invalid argument error in
code
's command
- Fix help command by showing command's descriptions in embed's description
- Add
contact
command - Add eclass record link to calendar when updated
- Add tags list to
help
command - Add message for the cooldown precondition
- Add a subcommand to edit reminders
- Make commands work in DMs
- Improve eclass DM reminders
- Improve permissions for commands with subcommands
- Attempt to make calendars safer length-wise
- Add
serverInfo
command - Add a
show
subcommand toeclass
- Add configurable school year roles in
setup
command - Add useful class links in calendars (such as original class notification, and record link)
- Add VoiceMove log
- Improve
mergepdf
's help metadata - Improve eclass announcements by using integrated timestamps
- Improve eclass calendars and upcoming announcements
- Improve eclass help page's readability by removing command lines options for the list subcommand
- Improve eclass notifications by using integrated timestamps
- Improve record link modification process
- Improve reminder's creation by adding the ability to bypass the 'create' subcommand (
!reminder 2h description
) - Make eclass' targetRole always be the school year role
- Make it impossible to flag our own messages
- Fix
--status=planned
option in eclass list - Fix alphabet for IDs, making some eclass uneditable because of Discord's escaping
- Fix crash in eclass creation if unable to delete a message
- Fix potential crash with role's name length
- Fix typos
- Fix more errors in eclasses
- Fix typo in help embed
- Add a check to prevent professors to subscribe to their own eclass
- Ensure the professor's reminder is sent first
- Add a top-board when no arguments to
vocalcount
- Update GitHub URL for new organization's name (
EFREI-Horizon
->horizon-teamdev
) - Remove automatic swear detection
- Fixed reminders sending twice if it took more than 2 minutes to send them all
- Fix some errors in EclassInteractiveBuilder, and catch unexpected errors more efficiently
- Fix various typos
- Update GitHub's CI secret's name
- Add a handler for channel and role deletions in ConfigManager
- Add a handler for emoji updates and role deletions for Reaction Roles
- Add a name option in merge-pdf command
- Add a new "Invite Post" log
- Add a new AdminOnly precondition
- Add an eval command (admin only)
- Add the list of possibilities in setup and logs
- Improve command resolution for the "command" argument
- Improve eclass role's name and ID format
- Improve hour parsing for the "hour" argument (allow spaces as hour-minutes separator)
- Improve messages when editing an eclass
- Improve some messages and fix some typos
- Remove the reaction when a condition failed for the Reaction Role
- Fix eclass announcement crossposting
- Fix incorrect handling of date/hour edits for eclasses
- Fix the "emoji" argument when a falsy value is passed
- Fix error handling in InteractiveBuilders
- Fix crash in
!reactionrrole list
- Added mergepdf command
- Added voice channel in the calendar's messages
- Added a check to prevent subscribing to an eclass once it is started/canceled
- Added crosspost eclass announcement message
- Added automatic-refreshing of the eclass announcements when they are updated
- Added the record-link in the corresponding class channel, when a link is added to an eclass
- Added preview to flagged messages
- Added role conditions to reaction-role
- Added a "unique role" mode to reaction-role
- Added a hook that deletes reaction-roles if their channel is removed
- Added possibility to use an embed in tags
- Improved prompts by making all timeouts 2 minutes rather than 1
- Improved
massSend
by waiting 5 seconds between throttles rather than 2 - Improved upcoming classes message by specifying whether it is today near the date
- Improved eclass ID generator
- Improved emoji argument by supporting composed emojis
- Code cleanup and reorganization
- Fixed crash by ignoring initial fetching (in ready event) if no channel was found
- Fixed typos in eclass' prompt message
- Fixed the display of the ID of an eclass in embed footer
- Fixed log-type checking once and for all
- Fixed
messageReactionRemove
event by fetching member if not found, rather than fail
- Added
set
as alias forcreate
in sub-commands
- Don't crash when setting not found in, when syncing log status with databases'
- Check if logType is int rather than truthy
- Added a logging system
- Logs those events:
ChangeNickname
,ChangeUsername
,GuildJoin
,GuildLeave
,MessageEdit
,MessagePost
,MessageRemove
,ReactionAdd
,ReactionRemove
,RoleAdd
,RoleRemove
,VoiceJoin
,VoiceLeave
. - Configurable via the
!log
command
- Logs those events:
- Updated message event's name
- Updated intents & add missing ones
- Used built-in User#tag rather than our own concatenation
- Unified subcommands name and improve underlying system
- Simplified some augments
- Updated dependencies, and updated @sapphire/pieces to v3
- Fixed project url in the "move-issues" CI
- Ignore error if failed to fetch the member in
FlaggedMessage.fromDocument
- Updated outdated message in the
tags
command
- Added event-listeners to process errors
- Created "Code" command
- Created "Eclass" command and system
- Created "Help" command
- Created "Latex" command
- Created "Limits" command
- Created "Ping" command
- Created "PingRoleIntersection" command
- Created "ReactionRole" command
- Created "Reminders" command
- Created "Setup" command
- Created "Statistics" command
- Created "Subject" command
- Created "Tags" command
- Created "VocalCount" command
- Created an anti-swear system
- Created an eprof-request system
- Created base client