Skip to content

Releases: DreamExposure/DisCal-Discord-Bot

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

v4.1.2

01 Oct 20:27
e9b04f2
Compare
Choose a tag to compare

DisCal Release 4.1.2

Summary

A quality of life update that brings in some small but needed features and improvements. This update was meant to be small, but quickly ballooned in size and complexity. Due to that, some features are not fully complete (hence the transitional period).

This update features several bug fixes and begins the conversion to slash commands.

Most commands have been converted to slash commands, and the remaining will be converted soon. For command information, please visit our renewed commands page.

Please Note: Several features are currently being changed and rewritten in fairly massive ways behind the scenes. Due to this, DisCal is in a bit of a transitional period and some features may not be 100% implemented.

Milestone: 4.1.2 | Backlog

New Features and Additions

  • /discal slash command implemented
  • /linkcal slash command implemented
    • Optional number argument for future multi-cal support: /linkcal 1 for example, will link the guild's first calendar.
    • !linkCal has subsequently been removed
  • /time slash command implemented
    • Optional number argument for future mulit-cal support: /time 1 for example, will display the guild's first calendar's time.
    • !time has subsequently been removed
  • /events slash command implemented
    • Optional arguments for calendar number in prep for multi-cal support.
    • /events upcoming (amount) (calendar)
    • /events ongoing (calendar)
    • /events today (calendar)
    • /events range [start] [end] (calendar)
    • !events has subsequently been removed.
  • /rsvp slash command implemented
    • Optional arguments in prep for multi-cal support
    • /rsvp ontime [event-id] (calendar)
    • /rsvp late [event-id] (calendar)
    • /rsvp unsure [event-id] (calendar)
    • /rsvp not-going [event-id] (calendar)
    • /rsvp list [event-id] (calendar)
    • /rsvp limit [event-id] [limit] (calendar)
    • /rsvp role [event-id] [role] (calendar)
    • !rsvp has subsequently been removed
  • /settings slash command implemented
    • All of the settings commands that will be kept have been moved from !discal <subcommand> to being in the settings command
  • /help slash command implemented
    • This just links to the commands page until I have a chance to build a proper help command
    • !help has subsequently been removed
  • dev commands have been converted to slash commands.

Bug Fixes

  • Event images not displaying
  • Improper handling of deleting and deleted events due to google inconsistency
  • RSVPs not being displayed correctly due to internal error
  • errors slipping through from image validating
  • small memory leaks

Improvements

  • Lots of google-related code has been consolidated and abstracted.
    • This is further work on the systems to allow other 3rd party host support like Outlook or any read-only iCal link
  • Use logback properly and clean up how logging is handled
  • Rewrote the commands website page. It is not fully responsive and much clearer
  • Calendar embed page should now support other cal hosts and time format support

Translations

  • Started using new translations system for slash commands and other changed things.
    • This does mean these new sections are completely lacking language support aside from English. Sorry.
    • We welcome anyone that would like to help add new translations to DisCal! (we are working on writing docs to help assist with this)

Other Changes

  • Further work has been done for the eventual support of multiple calendars per guild
  • Converted from Maven to Gradle for dependency management and build scripts. This just makes my life easier.
  • Updated several dependencies

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