Skip to content

Releases: DreamExposure/DisCal-Discord-Bot

v4.1.1

23 Jul 18:54
1e162fd
Compare
Choose a tag to compare

DisCal Release 4.1.1

Summary

This is a hotfix version to fix a few stability issues with the latest 4.1.0 release

This update shouldn't actually change anything super significant, but should hopefully resolve the underlying issue of shard instability and related issues.

Bug Fixes

  • Fix database connection leaking
    • This is theorized to be the cause of shard instability
  • Fix thread safety issues in some places due to list of non-threadsafe list

Improvements

  • Some code has been cleaned up due to upgrading D4J

Updated Dependencies

  • Discord4J > 3.2.0-RC1
  • Discord4J Stores > 3.2.1

Work in Progress and Upcoming Changes

  • Continued work on the dashboard
    • The dashboard is not currently complete, but is in working order with the ability for us to easily add in new parts to the dashboard which we plan to do in several upcoming updates.
  • Announcement "modifiers" allowing during and after event announcements.
    • Right now this is a hidden property on all announcements, but will be presented to users once fully functioning.
  • Multi-Cal support
    • Nearly all of the backend now supports multiple calendars
  • Proper connection to Patreon to allow users to easily setup which guild they want patron features on dynamically without needing to contact the dev team.
  • Better translations system
    • We want to convert our existing translation system into something more friendly for translators as the current system is just clunky and confusing. Hopefully we can do this some time soon.

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

22 Jul 14:19
ee02800
Compare
Choose a tag to compare

DisCal Release 4.1.0

Summary

This update is an attempt at modernizing the aging bot, bringing dependencies up to date, remaking the web calendar, and utilizing new Discord features.

The next several updates will be building upon this with changes made to make the bot feel more modern and snappy, making it more user friendly, and adding in much needed quality of life features and improvements to bring DisCal to be more competitive with other bots again.

Our network size has also been expanded to 20 shards
Full milestone: https://github.com/DreamExposure/DisCal-Discord-Bot/milestone/1

DisCal's license has also been upgraded to GPL-v3 from LGPL-v3

New Features and Additions

  • New calendar display on the website!!!
    • Such a better display and performance
    • Actually respects timezones!!
      • So now everyone can see the calendar in their own timezone! (any any other timezones)
  • !events now/current/ongoing
    • Lists the currently ongoing events.
  • Announcement publishing/crossposting
    • Added ability for announcements posted in news channels to be published
    • !a publish in the creator/editor will toggle this
    • Patron only
  • Add twenty-four hour format support
    • Use !discal timeFormat to toggle between twenty four and twelve hour formats.
  • Add ability to limit RSVPs
    • !rsvp limit <event-id> <#limit> to set/change the limit, -1 being unlimited
    • Only going and late lists are included in the counted members, undecided/not going do not count toward the limit.
  • Add ability to assign a role when a member RSVPs to an event
    • !rsvp role <event-id> <role-name>
    • These will not be auto deleted when the event ends, this is a limitation we are working on.

Bug Fixes

  • Announcement copy not working
  • Dashboard not properly recognizing patron status
  • Bot not responding or posting announcements in news channels.
  • External calendar all day events now display correct date/time,
    • This bug has been elusive for over 2 years. Finally tracked it down.
  • External calendar all day event editing will now go through properly
  • Event deletion will no longer silently fail
    • If it fails, it will let you know as best it can why it failed, and will log the exact error for the developers

Improvements

  • Event related embeds have been restyled to show information more clearly.
  • Lots of code cleanup and unneeded dependencies removed
  • Converted data classes to Kotlin data classes as well as several other java to Kotlin conversions
  • More clearly document "colour" alias for color commands on command page
  • Added quotaUser field to requests to google to help handle per-guild rate limits
  • Upgrade to java 16 from java 8.
  • Use java.time instead of joda-time.

Updated Dependencies

Java

  • D4J > 3.2.0-M3
  • D4J Stores > 3.2.0
  • Google API client > 1.31.1
  • Google OAUTH Client Jetty > 1.31.2
  • Springboot > 2.5.2
  • Spring Security > 5.4.5
  • Spring Session > 2.5.1
  • Spring Maven Plugin > 2.4.0
  • Thymeleaf Layout Dialect > 2.5.1
  • org.json > 20201115
  • okhttp3 > 4.9.0
  • flyway-core > 7.3.1
  • mysql-connector-java > 8.0.22
  • reactor-bom > 2020.0.8

JS

  • what-input > 5.2.10
  • jquery > 3.5.1
  • datatables.net-bs4 > 1.10.22
  • chart.js > 2.9.4
  • typescript > 4.1.2
  • bootstrap > 4.5.3
  • @fortawesome/fontawesome-free > 5.15.1
  • ts-loader > 8.0.11
  • webpack-cli > 4.2.0
  • webpack > 5.10.0
  • gulp-sass > 4.1.0
  • gulp-rename > 2.0.0
  • gulp-header > 2.0.9
  • gulp-clean-css > 4.3.0
  • gulp-autoprefixer > 7.0.1
  • del > 6.0.0
  • browser-sync > 2.26.13
  • @types/jquery > 3.5.5

Other Changes

  • Properly updating stats on bot list sites again
  • Invite link has been updated to include the new slash commands permission for when these are added in the future.
  • Removed trello messaging from website as we use GitHub issues now instead

Work in Progress and Upcoming Changes

  • Entity abstraction to make maintaining the project easier, and with the end goal of super easily adding more calendar hosts/services.
    • Right now, focusing on the core entities and implementations with Google and our database to make the bot touch this "raw" API much less
  • Continued work on the dashboard
    • The dashboard is not currently complete, but is in working order with the ability for us to easily add in new parts to the dashboard which we plan to do in several upcoming updates.
  • Announcement "modifiers" allowing during and after event announcements.
    • Right now this is a hidden property on all announcements, but will be presented to users once fully functioning.
  • Multi-Cal support
    • Nearly all of the backend now supports multiple calendars
  • Proper connection to Patreon to allow users to easily setup which guild they want patron features on dynamically without needing to contact the dev team.
  • Better translations system
    • We want to convert our existing translation system into something more friendly for translators as the current system is just clunky and confusing. Hopefully we can do this some time soon.

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

DisCal Release 4.0.2

04 Sep 23:07
Compare
Choose a tag to compare

DisCal Release 4.0.2

Summary

This update features several major bug fixes among minor code changes to help optimize some operations. We also updated several maven dependencies.

Bug Fixes

  • Event recurrence settings not being accurately reflected and saved.
  • SPECIFIC type announcements not working
  • Event edit/update not working
  • Uncaught error traveling upstream if announcement id in command is not a valid UUID.

Improvements

  • Added build number to version info to help with user issue reporting so I know exactly what version their shard is on.

Updated Dependencies

  • org.jetbrains.annotations 19.0.0 > 20.0.0
  • okhttp 4.7.2 > 4.8.1
  • Flyway 6.4.4 > 6.5.5
  • mysql-connector-java 8.0.20 > 8.0.21
  • google-api-client 1.30.9 > 1.30.10
  • thymeleaf-layout-dialect 2.3.0 > 2.4.1
  • spring security 5.3.3.RELEASE > 5.3.4.RELEASE

Work in Progress and Upcoming Changes

  • Continued work on the dashboard
    • The dashboard is not currently complete, but is in working order with the ability for us to easily add in new parts to the dashboard which we plan to do in several upcoming updates.
  • Announcement "modifiers" allowing during and after event announcements.
    • Right now this is a hidden property on all announcements, but will be presented to users once fully functioning.
  • Multi-Cal support
    • Nearly all of the backend now supports multiple calendars
  • Proper connection to Patreon to allow users to easily setup which guild they want patron features on dynamically without needing to contact the dev team.
  • Better translations system
    • We want to convert our existing translation system into something more friendly for translators as the current system is just clunky and confusing. Hopefully we can do this some time soon.

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

DisCal Release 4.0.1

23 Aug 00:39
Compare
Choose a tag to compare

DisCal Release 4.0.1

Summary

This update brings several bug fixes across the network as a whole, as well as brings parts of the project more inline with the way other parts handle things, essentially standardizing several practices for how data is retrieved and processed.

New Features & Additions

  • Added !events day alias to the !events today command

Bug Fixes

  • Event creation failing + auth issues + announcement inconsistencies
    • This was due to mishandled data being stored in the wrong data class and me expecting users to do things in a certain, specific order. This issue has since been resolved and anyone that created a calendar while this issue was ongoing will have the fix automatically applied, so don't worry about data loss.
  • Shards are no longer zombified due to uncaught errors in command handling
  • Calendar embed pages now work properly as google related errors have been resolved by bringing the API more inline with how the rest of the program handles data
  • Fixed trying to retrieve event data from the wrong table.
  • Dashboard login is now working
    • For those curious as to why it broke, I was sending API requests to https://www.discord.com/api/v6/ and apparently, they redirect requests to drop the www from the URL. And the library I am using for HTTP requests drops all authorization headers on a redirect to maintain security. Took 2 days and a ton of testing to find out that's what was causing it.
    • Dashboard data loading is now functioning as it should
    • Added a workaround to the strangest IllegalStateException error I've seen related to database reads.
      • The workaround is to just retry the read from the database since it only happens occasionally with no clear pattern or cause aside from knowing it only happens when reading from the database, not writing (perhaps because there's nearly 10x more reads than writes)
    • Fix NPE and dashboard data loading when guild doesn't yet have a calendar created.
    • Spamming logs with permissions related errors.

Improvements

  • Clients are listed in shard index order on status page now.
    • This is to fix possible occurrences of shards being listed out of order due to interrupts in service or one shard booting before the other.

Work in Progress and Upcoming Changes

  • Continued work on the dashboard
    • The dashboard is not currently complete, but is in working order with the ability for us to easily add in new parts to the dashboard which we plan to do in several upcoming updates.
  • Announcement "modifiers" allowing during and after event announcements.
    • Right now this is a hidden property on all announcements, but will be presented to users once fully functioning.
  • Multi-Cal support
    • Nearly all of the backend now supports multiple calendars
  • Proper connection to Patreon to allow users to easily setup which guild they want patron features on dynamically without needing to contact the dev team.
  • Better translations system
    • We want to convert our existing translation system into something more friendly for translators as the current system is just clunky and confusing. Hopefully we can do this some time soon.

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

DisCal Release 4.0.0

07 Aug 01:58
Compare
Choose a tag to compare

DisCal Release 4.0.0

The "its finally out after over a year of development, I am so so sorry it took so long and I kept promising it would be out sooner even tho I couldn't keep those promises, but hey its out now and I should stop rambling, so here's the change log" update.

Summary

This update completely overhauls the backend API to bring the v2 version, deprecating the v1 API. We have made massive changes to the website, backend, and have brought the bot to be nearly fully reactive and reactor compliant.

While the changelog may seem rather small in content, a good 60-80% of the project was completely rewritten from the ground up.

New Features & Additions

  • Brand new website! Completely redesigned from the ground up!
  • Added proper login page to make it more clear you will be redirected to discord for login.
  • !events day
    • Allows listing all events in the next 24 hours.
  • (Internal) Added self restarting controlled by API in the event a shard crashes unexpectedly but does not exit its instance.
  • "Expected Client Count" on status page for clearer status tracking.
  • Version info on status page
    • Its possible we will run multiple versions across the network, and this allows better clarity for users.
  • API v2
    • Completely new api/v2/ endpoints.
    • More secure and powerful than the v1 API endpoints. Including support for several features that are currently in development right now. Meaning you won't need to upgrade to a v3 (whenever that may be) when we roll out changes such as multi-cal support.
    • With this addition, v1 API is being deprecated, and will be removed in the future. We suggest migrating to v2 as soon as reasonably can if you are a developer.
    • Main dashboard page for guild will display what shard the server is connected to for better status tracking in the event of API/bot issues.

Bug Fixes

  • Dashboard is now working again!!!
    • While we have not brought in full functionality of the original dashboard, this brings enough for us to be happy with it in this release, with the rest of the functionality coming in the next few releases. Due to how much we had to rewrite from scratch, we just couldn't afford to keep this update back in order to bring the full functionality of the old dashboard.
  • Duplicate announcements
  • Calendar creation not working (refer to the improvements for how it was done)
  • Incorrect date/time display on event creation/editing
    • This was due to internally how we handled the timezone of the server and the timezone of the user's calendar. It used to work at one point, but completely broke down over time. So we redid a lot of that code and fixed it. Now times are always displayed correctly!
  • RSVP command did not always return correct information.
  • Fixed several occurrences of "link rot" throughout the website and bot

Improvements

  • Switch to using internal REST APIs for communication between bot shards, api, and website (instead of using redis) for stability.
  • Bring Discal bot to being fully reactive (bot, does not include website or APIs) for better performance and responsiveness.
  • Use multiple google accounts for calendars.
    • This bypasses the daily limit on how many calendars can be created on a single account without bypassing or abusing the google API quotas as we have had a lot of unexpected growth and therefore need to spread out the calendar creation load to multiple accounts.
  • Completely overhauled custom logger to be more performant.
  • Made a lot of code thread safe as it wasn't before (this never caused issues before due to not being fully reactive until now)
  • Calendar Embed page overhauled and link format changed slightly in order to support future multiple calendar support
  • Separate Web and API into individual modules for better stability
  • Website's dynamic content code is now written in TypeScript for better maintainability.
  • Change several datatypes in the database to more correctly align with what data they actually store, with the benefit of those datatypes being more performant.
  • Temporary read-only API keys are used for the calendar embed page in order to be a more secure way to access the API.
  • Cleaned up the code and structure of the project in order to allow better maintainability and hope the help resolve some of the feature creep that has started to develop due to the size of the project.

Translations

Other Changes

  • Completely rewrote README to be much clearer and informative.
  • Update several dependencies throughout the project.
  • Update to Discord4J 3.1.0
  • Dropped tracking of API key usage count
    • We were previously tracking how often API keys were being used, however our implementation of it caused too many write requests to our database. We may eventually re-implement usage tracking, as it gives us vital information on how developers use our API, but if we do so, it will be done in a better manner.
  • Several data classes are now Immutable where possible.
  • Several other small changes here and there (tbh, forgot a lot of them so just putting this bullet here to say that, sorry.)
  • Now using a global DreamExposure parent pom to allow maven deployments of modules as well as managing several common dependency and plugin versions.

Work in Progress and Upcoming Changes

  • Continued work on the dashboard
    • The dashboard is not currently complete, but is in working order with the ability for us to easily add in new parts to the dashboard which we plan to do in several upcoming updates.
  • Announcement "modifiers" allowing during and after event announcements.
    • Right now this is a hidden property on all announcements, but will be presented to users once fully functioning.
  • Multi-Cal support
    • Nearly all of the backend now supports multiple calendars
  • Proper connection to Patreon to allow users to easily setup which guild they want patron features on dynamically without needing to contact the dev team.
  • Better translations system
    • We want to convert our existing translation system into something more friendly for translators as the current system is just clunky and confusing. Hopefully we can do this some time soon.

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 Schweda

DisCal Release 3.0.0 (The Big Rewrite Update)

19 Mar 18:44
03c7386
Compare
Choose a tag to compare

DisCal Release 3.0.0 has been completely rolled out today.

This update, while massive under the hood, doesn't change a lot for users. Sorry about that, but this is a step toward implementing a lot of new features and fixes.

New additions include:

  • Patrons can now add gifs as event images.
  • Images can be added/changed on dashboard

Improvements:

  • Update to use Discord4J (d4j) version 3.0.0
  • Completely rewrite a ton of code inline with d4j v3
  • Start progress toward becoming reactive.
  • Lots of code cleanup

Fixes:

  • Announcement view will no longer ping users
  • Announcement sub/unsub should be more accurate

Removals:

  • Temporarily removed Server Branding (will be added back in next patch)

Upcoming or Work In Progress:

  • External calendar (still some bugs, ugh)
  • More announcement types for even more customization
  • Advanced event lookup
  • Advanced announcement lookup
  • Multiple calendar support
  • DM Announcements
  • And more!

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

Thank you to our patrons who have helped support DisCal and DreamExposure!!!

And thank you to these very special patrons:

  • Brenda Schweda
  • Foxtrek_64#3858
  • Jameswine#0271

DisCal Release 2.1.0 (The Optimizing optimizations Update)

10 Jul 19:36
Compare
Choose a tag to compare

DisCal Release 2.1.0 has been completely rolled out today.

New additions include:

  • Integrated calendar view on discal site (public beta for all users)
    -Default event length when creating events (1 hour)

Improvements:

  • Rewrite announcement system yet again
  • Using JSON instead of GSON for json handling
  • Using OkHTTP instead of Unirest for HTTP requests
  • Improve google cal authorization
  • Event color lists look better.
  • dashboard announcement page should be cleaner
  • Auto log out users on dashboard after 1 hour of inactivity
  • Tons of styling improvements

Fixes:

  • Announcement view should no longer ping users.
  • Fix event create failure when adding image
  • No longer respond to commands when sent by another bot.
  • Fix link rot
  • Dashboard permissions fix
  • Event date/time now required in event edit modals
  • Tons of styling fixes.

Upcoming or Work In Progress:

  • External calendar (99% complete, beta testing)
  • More announcement types for even more customization
  • Advanced event lookup
  • Advanced announcement lookup
  • Multiple calendar support
  • DM Announcements
  • And more!

DisCal Release 2.0.0 (The Dashing Dashboard Update)

20 Mar 17:47
Compare
Choose a tag to compare

DisCal Release 2.0.0 has been completely rolled out today.

New additions include:

  • Dashboard!!! (patron only testing for 1 month to fix all bugs)
  • Patron/server branding (i think)
  • RESTful API for other developers

Improvements:

  • Website now running via Java instance
  • Website styling cleanup
  • Relax whitespace requirements (matthewwithanm#0257)
  • Now using proper SQL table name conventions

Fixes:

  • 404 errors on site now redirect to home page
  • revert back to D4J 2.9.2 for stability
  • "America/Detroit" now invalid timezone (f*ck google)

Upcoming or Work In Progress:

  • External calendar (99% complete, beta testing)
  • More announcement types for even more customization
  • Advanced event lookup
  • Advanced announcement lookup
  • Multiple calendar support
  • DM Announcements
  • And more!

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

Thank you to our patrons who have helped support DisCal!!

And thank you to these very special patrons:

  • Brenda Schweda
  • @Foxtrek_64
  • TheHuntress#2856

DisCal Release 1.2.0 (The New Years Update)

05 Jan 21:00
Compare
Choose a tag to compare

DisCal Release 1.2.0 has been completely rolled out today.

New additions include:

  • "!event restart" (restart event Creator/Editor)
  • Start work on Web Dashboard!!!!!!
  • "e" alias for event command.
  • "!a enable " ability to enable/disable announcements selectively.
  • "HOURLY" recurrence setting for events.

Improvements:

  • Event IDs shortened to 10 characters!!
  • Announcement system is now accurate to +/- 5 minutes.
  • Updated to latest D4J (2.9.3)
  • Improved file management.
  • Creator/RAM improvements

Fixes:

  • Completely fixed announcements! aayyy they work!
  • Database queries are now all using PreparedStatements
  • Fixed blocking statement issues.
  • Image link for recurring events being deleted.

Upcoming or Work In Progress:

  • External calendar (99% complete, beta testing)
  • Web Dashboard (25% complete)
  • More announcement types for even more customization
  • Advanced event lookup
  • Advanced announcement lookup
  • Multiple calendar support
  • DM Announcements
  • And more!

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

Thank you to our patrons who have helped support DisCal!!

And thank you to these very special patrons:

  • Brenda Schweda
  • @Foxtrek_64

DisCal Release 1.1.0

05 Oct 13:15
Compare
Choose a tag to compare

DisCal Release 1.1.0 has been completely rolled out today.

New additions include:

  • RSVP!!!!
  • Set event location with "!event location "
  • Remove image with "!event image clear"
  • More info for help commands ("!help (sub command)")
  • Several backend additions.

Improvements:

  • Require "MANAGE SERVER" to create calendar.
  • "!events" without number now returns 1st event found
  • Cleaned up all embeds
  • Images are checked when embed
  • Update to latest D4J Wrapper
  • Remove "Subscribers: " on announcements without subscribers
  • Tons of backend improvements

Fixes:

  • Timezone checking not working correctly
  • Double announcements
  • Errors on calendar delete
  • Missing prompts in creators.
  • Mentioning DisCal not respecting control channel
  • Date/Time displays being broken
  • Date/Time not being correct in event editor

Upcoming or Work In Progress:

  • External calendar (99% complete, beta testing)
  • More announcement types for even more customization
  • Advanced event lookup
  • Advanced announcement lookup
  • Multiple calendar support
  • DM Announcements
  • And more!

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

Thank you to our patrons who have helped support DisCal!!

And thank you to these very special patrons:

  • Brenda Maday