Skip to content

Releases: DreamExposure/DisCal-Discord-Bot

v4.2.7

31 Dec 05:01
4e9a333
Compare
Choose a tag to compare

📅 DisCal Release 4.2.7

This release is a major milestone for myself. It comes with the deletion of the last pieces of legacy database access code, allowing me to finally begin on major enhancements on the UI/UX on the user facing side of this bot. I'm hopeful that the only noticeable changes with this release are small, positive ones. Improved response times in commands like /events now that we can more readily take advantage of caching, better reliability, and hopefully less errors.

⭐️ New Features and Additions

  • Added /calendar list command, useful for servers with multiple calendars
  • Added /calendar view command, an alias for /linkcal for user convenience
  • Calendar and events implementation has been rewritten from the ground up, leveraging caching and other performance enhancements
  • New v3 API endpoints for events and calendars, several unused v2 endpoints either removed or deprecated if still required by legacy 1st party website

🪄 Improvements

  • Further improvements in caching
  • Improved support of multi-calendar setups
  • Start tracking OkHttp request performance metrics. Useful for identifying slow API calls to 3rd party services
  • Upgraded to Kotlin 2.0 + several other dependency upgrades
  • Improved event caching will now allow more event-related commands to complete more quickly a larger percentage of the time.
  • Removed a whole hell of a lot of deprecated code

🐞 Bug Fixes

  • Fix announcements not pinging subscribers
  • Fix /displaycal messages missing beginning date of upcoming events
  • Fix excessive slowness in /discal command

🔨 Work in Progress and Upcoming Changes

  • Finally able to start tackling getting the /addCal command functioning again for patrons
  • Lots of positive changes to the bot to improve the user experience and overall usability of DisCal

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

v4.2.6

24 Mar 00:03
55d803f
Compare
Choose a tag to compare

📅 DisCal Release 4.2.6

This update focused on refactoring a number of backend implementations to the new infrastructure that I've been working on. These changes allow me to improve the stability of the bot and the long-term maintainability of it. As I get more systems rewritten, I will finally be able to add many of the highly requested features with much greater ease. Noticeable to users, there are a few UX improvements across commands and messaging, such as a refresh button on displayCal overview messages.

⭐️ New Features and Additions

  • Calendar overview messages created with /displaycal now include a refresh button for increased usability
    • This replaces the /displaycal update subcommand as this is far more user-friendly than needing users to find the message ID

🪄 Improvements

  • Fully rewrote README
  • Time command now includes Discord timestamp for improved UX
  • RSVP backend has been refactored into using Kotlin coroutines
    • This will allow me to improve the UX of the feature-set so that its actually useful as I have observed surprisingly low usage likely due to the ill-planned design of it originally
  • Static message backend has been refactored into using Kotlin coroutines
    • This has led to the /displaycal update command being removed in favor of the interactions replacing this functionality
  • Announcement backend has been refactored into using Kotlin coroutines
    • This has led to the announcement processing being cleaned up and hopefully more performant and will allow me to quickly iterate and add new and improved interactions and UX for the announcement system
  • Announcement wizard is now per-member rather than global for the everyone in the guild
  • /announcement (un)subscribe UX has been improved
  • Improvements to metrics and observability tooling
  • Updated several dependencies

🐞 Bug Fixes

  • Fix some redis cache implementation bugs
  • Another fix attempt for rare bug

🔨 Work in Progress and Upcoming Changes

  • Refactor to Kotlin coroutines for actually maintainable code
  • Phasing out legacy data access patterns

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

v4.2.5

21 Jan 05:50
770f00d
Compare
Choose a tag to compare

📅 DisCal Release 4.2.5

This release focuses on a handful of bug fixes affecting the front-end, improvements towards a better backend API, and additional metrics to get insight on feature usage statistics. (I'm hoping this data can help me improve the experience by making better UX for hard to use features)

🪄 Improvements

  • Added metrics for interactions, announcements, and some other features to track usage and performance
  • Refactored some auth related code for stability and maintainability

🐞 Bug Fixes

  • Fixed issue resulting in multi-day events not being displayed on calendar overviews properly
  • Fixed an issue fetching incorrect locale string
  • Fixed issue causing static messages not to update as Discord API began enforcing the 25-field limit for embeds
    • Previously embed fields exceeding this limit were hidden, now the API returns an error.

🔨 Work in Progress and Upcoming Changes

  • Refactor to Kotlin coroutines for actually maintainable code
  • Phasing out legacy data access patterns

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

v4.2.4

07 Oct 20:49
bd8cda5
Compare
Choose a tag to compare

📅 DisCal Release 4.2.4

This smaller update is focused on a number of bug fixes, dependency updates, and making observability a priority throughout the improvements to get more insights into various bugs and performance.

🪄 Improvements

  • Updated Discord4J, Spring, and several other notable dependencies
  • Added and improved observability tooling using Spring Actuator
    • Logs are now in JSON for easy parsing and graphing
    • Enable Prometheus metrics and other production-ready features
    • Added additional logging in places lacking visibility
  • Improvements in how certain encrypted data is accessed to reduce the amount of CPU time

🐞 Bug Fixes

  • Partial fix for 403 errors with Google Calendar
  • Fixed a few of localization bugs
  • Fixed in-memory cache implementation
  • Fixed Gradle configuration to enable Spring Dependency Management

🔨 Work in Progress and Upcoming Changes

  • Refactor to Kotlin coroutines for actually maintainable code
  • Phasing out legacy data access patterns

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

V4.2.3

08 Sep 20:31
0994b5a
Compare
Choose a tag to compare

📅 DisCal Release 4.2.3

This release cleans up some minor UX issues observed, and begins substantial work on refactoring DisCal's legacy code to support modern best practices in a healthy piece-meal application, allowing me to continue to fix bugs and add new features while progressing through the code cleanup.

Milestone: 4.2.3

⭐️ New Features and Additions

  • When changing an event's start/end in the event wizard, there is now the option to keep the overall length of the event by automatically adjusting its start/end.
    • This can be done with the new optional command argument keep-duration:true/false in the /event start and /event end commands.
    • Or can be set globally with /settings keep-event-duration command. This can always be overridden when use the start/end commands.

🪄 Improvements

  • Cleaned up Gradle build files. #142
    • This will allow me to more easily manage dependencies and reduce how many deps DisCal needs.
    • Makes builds more repeatable and less fragile
  • Upgraded Spring Boot framework & began work on moving to Spring Data (data access refactor) #142
  • Setup Docker compose allowing me to iterate much faster and test locally with a clean env every time. #142
  • Removed guild members intent.
    • This intent is no longer needed now that all commands have been moved to slash commands, so this intent can finally be removed.
  • Began work on refactoring to using Kotlin Coroutines and Spring DI properly #146

🐞 Bug Fixes

  • Fixed some arrant Kotlinx serialization errors

🔨 Work in Progress and Upcoming Changes

  • Refactor to kotlin coroutines for actually maintainable code
  • Phasing out legacy data access patterns

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

v4.2.2

14 Aug 18:42
Compare
Choose a tag to compare

📅 DisCal Release 4.2.2

This is a rather small released focused on minor changes

Milestone: 4.2.2

🪄 Improvements

  • Event name, description, and location can now be easily cleared. #136
    • Not providing the now optional argument in the name/desc/location commands
    • Setting it to N/a
    • Setting it to None
  • Calendar overview (/displaycal, /linkCal overview:true) now gives each event its own block to make reading easier.
  • Guild Ids are now properly stored in db, making database calls faster.
  • Additional under-the-hood changes

🐞 Bug Fixes

  • Calendar overview (/displaycal, /linkCal overview:true) now properly handles multi-day events
    • New behavior: Always show start and end of multi-day event. If another event takes place in "in-between" days, the event is also shown.
  • Fix announcements not respecting multi-cal setups #137
  • Fix bug preventing graceful logout on website

🔨 Work in Progress and Upcoming Changes

  • Working on converting everything to slash commands: #111
    • All slash commands natively support multi-calendar for easier drop-in of the multi-cal feature set coming soon!
  • Converting to new translation system
    • Due to this, old translations are slowly being removed and support for current languages is unfortunately dropping until I can get translators

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

Thank you to all our patrons who have helped support DisCal, our other projects, and DreamExposure Studios!!!

v4.2.1

07 May 19:37
77d6f9c
Compare
Choose a tag to compare

📅 DisCal Release 4.2.1

This is a small update, addressing numerous small bugs and UX improvements. In addition, API v3 is starting to take form as the new website progresses development slowly.

🐞 Bug Fixes

  • Fix regex incorrectly turning any nn into new lines
  • Fix bug causing bot to ratelimit ban itself
  • Fix incorrect handling of specific error case
  • Fix several empty returns
  • Fix /rsvp role not detecting patron status correctly

🪄 Improvements

  • Upgraded to Discord4J 3.2.2
  • Hide recur field when editing child event in a recurring set
  • Add optional description and location arguments to event create command
  • Add optional description and timezone arguments to calendar create command
    • Now you can create a calendar in as few as 2 commands (create and confirm)
  • Use bulkOverwrite for global command registration to reduce request count on startup.

🔨 Work in Progress and Upcoming Changes

  • Working on converting everything to slash commands: #111
    • All slash commands natively support multi-calendar for easier drop-in of the multi-cal feature set coming soon!
  • Converting to new translation system
    • Due to this, old translations are slowly being removed and support for current languages is unfortunately dropping until I can get translators

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

Thank you to all our patrons who have helped support DisCal, our other projects, and DreamExposure Studios!!!

An extra special thank you to these patrons:

  • Brenda Maday
  • Foxfrek_64

v4.2.0

24 Jan 03:06
339d954
Compare
Choose a tag to compare

📅 DisCal Release 4.2.0

This update brings the last of the slash command goodness by converting the announcement command to a slash command, introduces the RSVP waitlist, and improves UX in several places.

Milestone: 4.2.0

✨ New Features and Additions

  • /announcement slash command implemented
    • Retains full abilities from !announcement commands, and multi-cal ready
    • !announcement has subsequently been removed
  • RSVP waitlist
    • When you RSVP as attending to a full event, you will now be added to a waitlist, when a slot is made available, the first person in the waitlist is automatically moved to attending and DMed.
  • Warnings now display in wizards letting you know if something may not be correct. Confirming with warnings is still possible. The current warnings:
    • Event Wizard:
      • when no name is given to an event
      • when an event is scheduled for the past
      • When an event is longer than 30 days
    • Announcement Wizard:
      • If no event ID is set when announcement type is recur or specific
      • If no color is set when announcement type is color
      • If the time before an event is less than 5 minutes, as we cannot assure it will be posted
      • If the calendar number is set to a calendar that may not exist
  • user input (eg event description or announcement info) now supports line breaks with \n #92
    • Actually using shift+enter is not currently possible with slash commands, this is a discord limitation that will be resolved in time.

⭐ Improvements

  • /displaycal will now properly display all day and multi-day events #122 #128
  • Event create/edit confirmations now display a proper message rather than being ephemeral #121
  • /displaycal now displays the event's location, if one is set. #125
  • More clearly marking required fields with a red diamond emoji
  • Day-of-Week is now displayed in calendar overview #124
  • IDs for new announcements are now much shorter (only 10 characters!)
  • Announcement service now uses more optimized DB queries and better backpressure handling
  • Announcement channel is now resolved in the embed rather than just a name displayed.

🐞 Bug Fixes

  • Fix not handling 403 on static message update
  • Fix certain lists duplicating themselves
  • FAM CAM returning an empty response when the refresh token has been revoked (should be a 1001 error)

🔨 Work in Progress and Upcoming Changes

  • Brand new website (now moved out of the mono repo): DreamExposure/discal-web
  • Working on converting everything to slash commands: #111
    • All slash commands natively support multi-calendar for easier drop-in of the multi-cal feature set coming soon!
  • Converting to new translation system
    • Due to this, old translations are slowly being removed and support for current languages is unfortunately dropping until I can get translators

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

Thank you to all our patrons who have helped support DisCal, our other projects, and DreamExposure Studios!!!

An extra special thank you to these patrons:

  • Brenda Maday
  • LuzFaltex
  • Sky (skylarr#6666)

v4.1.4

01 Dec 21:09
05a9bc2
Compare
Choose a tag to compare

📅 DisCal Release 4.1.4

This update packs in a shiny new feature with several bug fixes and improvements aimed at better user experience and overall functionality

Milestone: 4.1.4

Auto updating calendar overview

The calendar overview provides a convenient way to display your guild's calendar in Discord. It will auto update every 24 hours and whenever there is a calendar change such as creating or editing an event.

DiscordCanary_VqIs9RZrwT

⭐️ New Features and Additions

  • Add new "calendar overview" #90
    • Available on /linkcal with optional overview:true|false (enabled by default now)
    • Available as a static, auto updating message with /displaycal new
    • Static overview message will auto-update every 24 hours and update anytime a change is made through the bot (changes made outside the bot will be supported soon)

🐞 Bug Fixes

  • Fix formatting mistakes and typos in the old-command migration message.
  • Fix wizards (event and calendar wizard) not closing automatically after a successful confirmation or timeout. #120
  • Fix API uptime tracking not updating properly
  • Fix including time in a date-only format location.
  • Fix event edit/copy commands improperly setting event to recur when it was not previously
  • Fix editing event to stop recurring throwing an error
  • Fix bot stalling due to requesting guild members on startup
  • Fix formatting in recurrence section appending rouge $s on values
  • Fix various auth issues from the last version
    • These fixes were deployed as a hotfix after the last version without being added to a change log, hence being here.

⭐ Improvements

  • Upgrade to Discord4J 3.2.1
  • Upgrade to Kotlin 1.6
  • Optimized several database queries
  • Add min/max values to number inputs on commands where applicable for improved UX.

🔨 Work in Progress and Upcoming Changes

  • Working on converting everything to slash commands: #111
    • All slash commands natively support multi-calendar for easier drop-in of the multi-cal feature set coming soon!
  • Converting to new translation system
    • Due to this, old translations are slowly being removed and support for current languages is unfortunately dropping until I can get translators

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

Thank you to all our patrons who have helped support DisCal, our other projects, and DreamExposure Studios!!!

An extra special thank you to these patrons:

  • Brenda Maday
  • LuzFaltex

v4.1.3

14 Nov 21:04
fd4c0c2
Compare
Choose a tag to compare

📅 DisCal Release 4.1.3

A "small" update focused on a handful of small improvements and bug fixes with internal systems and UI.

It is one of many updates with the goal being improving UI and UX.

Milestone: 4.1.3

⭐️ New Features and Additions

  • /calendar slash command implemented #115
    • Retains full abilities from !calendar commands, and multi-cal ready
    • !calendar has subsequently been removed
  • /event slash command implemented #117
    • Retains full abilities from !event commands, and multi-cal ready
    • !event has subsequently been removed
  • New announcement styles added from last release are fully supported #114
    • EVENT will show the full event details rather than the old styles
      • Default for new servers or servers that have not customized settings
    • FULL the old-school announcement embed but with better formatting
    • SIMPLE just like the full, but some optional (less user facing) details removed
  • Announcement system is now multi-cal ready. Getting so close now!! #114
  • Text input (eg event description) now supports markdown
  • Now able to create events in the past #103
  • New internal central auth API. #118
    • This should hopefully reduce a lot of the pains of managing auth over a large network

🐞 Bug Fixes

  • Fix events not listing in order
  • Fix emojis not saving correctly in announcements + other areas where they get input into the database #42 #105
  • Fix RSVPs occasionally not saving correctly
  • Fix edge cases resulting in certain database updates not happening
  • Fix `Subscribers:' text appearing on announcements in which no one is subscribed
  • Fix link calendar command failing when calendar does not have a description
  • Fix user-input not always trimmed for embed safety
  • Fix not mentioning @everyone when the everyone role is a subscriber to an announcement
  • Fix html code not being escaped and removed from user input in embeds #76
  • Fix race condition when encrypting/decrypting strings #119
  • Fix various auth issues #119

⭐ Improvements

  • Better messaging when attempting to use a migrated command
    • Even includes automatic detection if slash commands are not enabled
  • HTML is now converted to markdown and rendered in embeds in discord #76
  • New discord timestamps are supported where appropriate #109
  • Improved event and announcement embed layouts
  • Renamed some arguments for more consistency
  • Bumped to latest Kotlin version
  • Removed lazy discal download due to now no longer supporting the current version.
    • I will be working on rewriting that project and/or reducing the need for it.
  • Rewrote, cleaned up, and deleted more legacy code

🔨 Work in Progress and Upcoming Changes

  • Working on converting everything to slash commands: #111
    • All slash commands natively support multi-calendar for easier drop-in of the multi-cal feature set coming soon!
  • Converting to new translation system
    • Due to this, old translations are slowly being removed and support for current languages is unfortunately dropping until I can get translators

💜 Thanks

Thank you to everyone who has helped contribute to DisCal! This project would not be possible without you.

Thank you to all our patrons who have helped support DisCal, our other projects, and DreamExposure Studios!!!

An extra special thank you to these patrons:

  • Brenda Maday
  • LuzFaltex