I'm excited to announce the release of DiSky v4.20.0! This update brings several new features, performance improvements, and bug fixes.
🚀 Performance Improvements
- Bot initialization is now performed in an asynchronous task for improved responsiveness
- Many elements are now asynchronously changeable, including guild/bot avatars, member nicknames, and scheduled event properties
- Enhanced bot shutdown system for smoother termination
✨ New Features
- Added
retrieve webhook
effect - New
forward message
effect with ability to store the forwarded message - Added
is forwarded
condition for messages - Introduced ability to specify the desired bot in the
post message
effect - Added support for changing guild verification levels
- Ban effect now accepts plain user IDs
🐛 Bug Fixes
- Fixed exception when changing permissions of an entity with empty actions
- Resolved issue where DiSky interfered with the "is text" condition (#223)
- Corrected pattern for the second
move member
effect
⚡ Enhancements
- Deprecated error handler now supports node information
- DiSky exceptions will show the full stack trace when debug mode is active
- Improved scheduled event location return types
- Embed and role colors can now be reset (and are async changeable)
I encourage all users to update to this latest version to take advantage of these improvements and new features. As always, please report any issues you encounter on the GitHub repository.
Thank you for your continued support and happy coding :P
Hi there! I'm finally back from vacation, with this wonderful update :)
✨ New Features
- You can now listen one time to a specific event, right from any code. More information on the wiki
- Added user-friendly error messages a bit everywhere. A lot are still missing tho, but it's better than nothing!
🐛 Bugfixes
- Fixed null checking in the CommandFactory class (when the args won't parse correctly)
- "Fixed" (more likely enhanced) the
on shutdown
section in a bot definition structure. The code running inside of it can now communicate with Discord's API right before the bot instance is actually shut down. - Fixed parsing exception when creating a post in a thread without specifying a storing variable.
- Fixed incompatible cast in every channel action expression (when passing a channel action)
Thank you for your support and happy coding!
Full Changelog: https://github.com/DiSkyOrg/DiSky/compare/4.18.0...4.19.0
DiSky v4.18.0
We're excited to announce the release of DiSky v4.18, which includes an update to JDA v5.0.1 and introduces several new features, improvements, and bug fixes.
🚀 New Features
- Runtime Error Handler: Added a new runtime error handler with try/catch functionality. (see here)
- Bot Leave Guild Effect: You can now programmatically make a bot leave a guild.
- Thread Creation Enhancement: Made the storing part of the create thread effect optional.
- Bot Name Customization: Added a way to change the name of the logged-in bot.
- Bot Banner Editing: Introduced the ability to edit the banner of the logged-in bot.
⚡ Improvements
- Enhanced Configuration System: Implemented a better and more efficient configuration system.
- Snowflake Validation: Added improved snowflake validation with more user-friendly messages and references.
- Message Editing and Destroying: These actions now check if they originate from a webhooks.
- Discord Name Expression: Moved the bot name expression into 'discord name' for better organization. (see here)
🐛 Bug Fixes
- Fixed usage of poll in rich messages.
- Corrected the order of arguments in slash command structures.
- Resolved issues with event-bots in DiSky-related events.
- Fixed slash command execution on Minecraft 1.21+.
🔥 Removals
- Removed the avatar decoration expression as it's not yet officially released.
📝 Notes
- Post effect exceptions are now handled by the runtime error handler.
- This release includes all changes from the previous (unreleased) v4.17.3 update.
📦 New Wiki Pages
- Added Error Handling
- Added Asynchronous Operations (you should really read this one :P)
We encourage all users to update to this latest version to take advantage of these new features and improvements. As always, please report any issues you encounter on our GitHub repository.
Thank you for your continued support and happy coding!
Hi there! This release mainly "converts previous stuff to new systems (you'll see what I mean below). It also comes with some additions and many bug fixes around the new slash command structure system!
🗝️ "Rework"
- More expressions now supports async gettable via the
await
effect. Some still need their migration, see the list here: #207 - The member ban, kick, and timeout (new) events are now using a new event system and thus provide more event-values (and they are more accurate)
- Enhanced the slash command system when updating a command (it may only update the Skript code, not the whole command over Discord, only if no changes to the name/description/args happened)
✨ New Features
- Added
on member timeout
event - Added
logged reason
property for alogentry
(works for bans, kicks, ...) - Added
retrieve start message
effect to retrieve the start message of a thread - Added a user-friendly warning when using a non-message channel with the
retrieve message
effect
🐛 Fixes
- Fixed a lot of conflicts, and non-registering bugs about the new slash structure system (I'm too lazy to list them all lmao)
- Fixed property
poll
of message builder (it used the wrong type)
Thanks for reading!
Hi there! This minimal release fixes several bugs with the new slash command system and the on shutdown
entry of the define bot structure.
It also introduces a new async system for expressions and changer, although it's only available for the member with id
expression (keep information of it over #207), planned to release for DiSky v4.18.0 (*a smalle xample can be found here)
Hello there! This new release introduces many new features (mainly QoL) and bug fixes. It also adds a new slash command structure system, that's still in beta.
🐛 Bug Fixes
- Fixed/enhanced
create invite
effect as it doesn't support a Guild anymore - Fixed the
emoji url
property's pattern to[the] emo(te|ji) image [url]
(#196) - Fixed arguments type parsed in the slash command event
✨ New Features
- Added
event-channel
in theuser typing
event - Added
on poll vote add
andon poll vote remove
events (#192) - Added
on member kick
andon member ban
events (read the docs for more info!) - Added
author
retrieve value of theon guild log entry create
event
🚀 Slash Command Structure!
⚠️ This feature is still in beta, I don't recommend using it in production yet!
You can now create, register, and handle slash commands directly via a single structure! Here's a quick example:
slash command ban <user="target"> [<string="reason">]:
description: Ban a user
arguments:
target: The user to ban
reason: The reason of the ban lmao
cooldown: 30 seconds
on cooldown:
if arg-2 is "cheatcode":
cancel event
stop
reply with "You still have to wait %remaining time% before using this command again!"
bot: disky
guilds: 937001799896956988
enabled for: manage server
trigger:
reply with "Banning %mention tag of arg-1% for `%arg-2%`"
Learn more over the wiki page!
Hi there! This new release introduces a ton of internal cleanup, with some bug fixes and additions.
✨ New Features
- Added
edit component by id
effect, to edit any component from a message by its ID (instead of the whole message) #183 - Added
guild boost tier
property - Added
guild bot role
property - Added
event-member
andevent-user
in themember boost time update event
🐛 Fixes
- Fixed and enhanced
channel position
property for channels & roles #187 - 🔥 Removed
on member boost
event, replaced byon member boost time update
. For details, please check the docs - Fixed
thread parent
unable to return a forum or a voice channel - Fixed the
reply
effect when storing the message in an interaction - Fixed position calculation for channel/role positions
Have a nice evening all! :)
Hi there! This very small release only changes two things:
🤖 Core
- You can use
member
as slash command option. Although it's not directly supported by Discord, DiSky handles the hard work by converting it to a member. Feel free to open a new suggestion if you find anything else like this that can be improved! - Hotfix & enhancements for the
download attachment
effect. It now uses JDA's rest action system, and DiSky checks by itself it the folder/parent folder needs to be created.
📝 Documentation
- Reworked the welcome/home page to includes cards. It leads newcomers in the right direction!
- Added slash command options table to show all possible options
- Added an example usage for the attachment option
- Added a new header to show newest wiki pages!
That's all for tonight. Have fun guys!
Hi there! Doesn't a new DiSky update herald a good day?
🤖 Webhooks are coming native!
The Webhooks module is now outdated, as JDA implemented support for webhooks into the core library. Thus, it integrates smoothly with DiSky's existing features! For instance, simply use the syntax to create your rich message, you can then send it to a webhook!
➡️ More information can be found on the Wiki Page!
📝 Documentation Update!
As some of you may have noticed, I've made a few changes to the documentation/wiki:
- All emojis have been replaced by icons to clean up the site visually.
- Many examples have been added to the wiki (complete example codes, 99% of the time supplied with a command)
- many new effects and expressions have been updated with documentation and missing examples
- All the wiki has been reorganized under more logical categories than just "basic/advanced stuff".
Feedback is appreciated, and don't forget you can contribute to the wiki right here!
✨ Small Enhancements
- The
edit
effect handles errors much better, and you can modify the direct message without going through the interaction (more information just here) - The
retrieve invites
effect's pattern has been enhanced to me "more English" - 🆕 Added
avatar decoration
expression for a member. It's not even in JDA yet, but DiSky has it :>
Whoa, I guess I'm in a rush now? Anyway, this update brings tons of new features and tweaks. Here's a recap:
🚀 Find Members!
Discord recently added a way to bulk-find members, thus even with thousands of members, you'll still be able to retrieve the one you want. There are two "simple" find
effects available already (find members with roles %roles%
and find members with nickname %string% in guild %guild%
), but a brand new one is also added ... Find member filter! It's a section that lets you filter by yourself the members you want to retrieve. Wants only members with a role, or specific nickname, that are not connected to a channel? You've got it!
⚠️ It's an experimental feature, and feedback is appreciated, while I don't recommend using this in production yet!
find members in event-guild and store them in {_members::*} with filter var {_m}:
# {_m} now contains the member to apply the filter to. For instance:
{_m} has discord role with id "XXX"
{_m} is muted
return true
reply with "I have found %size of {_members::*}% that has the role and is muted!"
💻 Bot Application Info
You can now retrieve your bot's application info! This includes, but is not limited to, its avatar/id/name/owner, the Term Of Service/Privacy Policy URLs, and more! If you are interested in how it works, take a look at the wiki page!
✨ New Features!
- Added
pin/unpin %message%
effect - Added
is muted
andis deafened
conditions - Added way to reference message in the post effect
- Added way to create disabled entity/string dropdown (by adding
disabled
when creating the component)
I'm sure I'll get blamed if I continue to make updates that fast 😂 Anyway, here's yet another update for DiSky! Here's what changed:
📊 Polls Hotfix
JDA has an internal bug with their latest release (beta23), thus I fixed it on my side for DiSky. Although polls were created, they were not attached to the desired message and thus, not sent. You can also now send polls alone, without any other message value (content, components, etc..) using the reply with
and post
effect.
✏️ New edit components
effect!
For button & dropdown clicks, you can now directly edit the clicked component with one line of code, instead of re-editing the whole message like before. You can find more information about how it works for buttons here and dropdown here!
🐛 Bugfixes
- Fixed SelectMenu couldn't be added to the inline message's builder
edit
andreply
effects now impact the interaction (if in an interaction event of course) instead of the message.- Fixed polls being not set correctly using the rich message builder
- Fixed
interaction
type for button/dropdown click event
✨ New Features
- Added a way to disconnect a connecter member from its voice channel (reference)
- Update some old WaiterEffect to the new AsyncEffect system
- This small release introduces a lot of new polls-related stuff, such as ending existing polls and getting votes for finished polls (more information can be read here.
- In addition, the
define bot
scope was converted to Skript's new Structure system, meaning it's faster, more efficient, and less laggy (e.g. you can now use function/custom expressions inside ready/guild ready events). - You can also set default selected values for entities dropdown, supporting roles, channels, and users. The added values will be selected once the component is sent!
Full Changelog: https://github.com/DiSkyOrg/DiSky/compare/4.14.0...4.14.1
Hello there! Long time no see since the last update ;) This one brings a lot of content here and there, so please read the whole message below to be sure to miss nothing.
Async Rework
Most DiSky effects, because of HTTP requests, require asynchronous execution to avoid lag spikes (especially when retrieving a value for instance). Although I made my own "waiter effect" to handle those timings, it was not built-in Skript and thus weird synchronization bugs appeared, especially when dealing with local variables.
All retrieve effects, and most asynchronous effects are now using a completely new method, where the code is completed in another thread (thus it'll make that other thread lag, but since Minecraft is mainly single-threaded, it does not matter at all).
:bookmark_tabs: To put it simply, most effects in DiSky are now faster and can be handled much easier by Skript, e.g. when using those effects in loops or functions
Embed section optimization (#155)
Previously, to create an embed, you had to go through
make new embed
and use the expressionlast embed
, which sometimes caused conflicts when creating several embeds simultaneously. Moreover, the solelast embed
expression slowed down the Skript's parser as it was overcomplicated with too many patterns.
:bookmark_tabs: While the previous embed section is still available, it has been reworked so you can provide a variable at the end of the section that'll handle your embed at the end (basically like the message builder & components row builder).
For instance:
make new embed and store it in {_embed}:
set title of embed to "Hello there"
set embed color of embed to red
reply with {_embed} # 'embed' is not accessible outside the section anymore, releasing a lot of work for Skript's parsing
:bar_chart: Polls!
While they are waiting to be approved on Discord's docs, poll syntaxes are already in DiSky!
:bookmark_tabs: __You can already use the syntax, but no polls will be sent over Discord yet. Take a look at the wiki page about polls for more information: https://disky.me/docs/basic-stuff/polls/__
Syntax Changes
As I reworked some parts of DiSky, I ended up optimizing/adding existing syntax, so here they are:
- You can now use both strings and tags when adding/removing them from forum channels
- Added
retrieve start/original message from %threadchannel%
effect - Added type checking for the
updating commands
effect (e.g. giving guild when updating globally, and vice-versa) - Added
event-long
inreaction add
event to get the message author's ID - Fixed
mention tag
with emotes, for custom and animated emojis
:warning: JAR & Version Support
- Only Skript 2.8+ is supported, going forward.
- shadowJar minimizer is now used on DiSky's final JAR, reducing its size from ~20MB to ~15MB
- The minimal required version of Java will soon (v4.15 or v4.16, no ETA yet) become Java 11
Whoa, I've never had an update this big, apart from the reworks! I hope you have fun, and I'll be on the lookout if you have any new ideas or optimizations to suggest
First update of the year :D
Skript 2.8-beta Support
DiSKy v4.12.2-beta1 has been released on Modrinth, with several new features and bug fixes. In addition, this new version should only support Skript 2.8+, meaning :warning: Skript 2.7 won't work! Check added features/bug fixes at the GitHub History
SkEditor Addon Release
SkEditor is an IDE made for Skript developers. It brings syntax highlighting, auto-completion, code analyzer, GUI/Command generation, and many other features to make your life easier. I made a small addon, adding two (and soon more!) generators related to DiSky: bot's loading & buttons!
:information_source: How to download? Once SkEditor is installed, head over Other
-> Marketplace
, then look up DiSky Support
and click Install
.
The attached image is a preview of the bot's loading & buttons generator!
Thanks for reading, and have a nice day :D
Hello there! This small release introduces a new feature alongside bugfixes and code cleanup:
✨ • You can now serialize embeds into JSON, and vice-versa! Check here for more info! ⚡ • I'm trying to clean up annoying user-side errors little by little, and today it's hierarchy nickname! A proper and more user-friendly error message will be sent if the bot cannot modify a user's nickname! 🚀 • We bumped to JDA v5-beta13, which brings some optimizations and bugfixes on the WebSocket server!
Hello there! DiSky v4.12.0 is here, and fix/add things here and there, without a main idea to follow. Here are the main changes:
🚀 Changes
⚡ •
We added null
checks for emojis, roles, and permissions expressions. DiSky will not throw an ugly exception anymore!
⚡ •
It has been requested for a pretty long time now, but you can now use options inside entries! (such as the bot's token)
✨ •
Deferred and waited interactions can now be replied to correctly using the reply with
effect!
🐛 •
A lot of conflicts came from the permissions of
property from DiSky and Skript. Now, DiSky will try to unregister the Skript's property to make its own, while keeping normal Skript's behaviors!
🐛 •
Fixed some uncatched exceptions around the project.
🚀 •
Skript v2.7-beta3 is now supported! Any 2.7.X version should be tho, while keeping 2.6.X supported too!
Hey there! Another update of DiSky that brings some interesting new features :)
Voice messages
- Added
attachment is audio
condition (https://disky.me/wiki/docs/conditions/#is-attachment-audio) - Added
attachment duration
expression (https://disky.me/wiki/docs/expressions/#attachment-duration)
You can also directly download *voice message as an audio file!
Member Flags
- Added
member flags
expression (https://disky.me/wiki/docs/expressions/#attachment-duration) - Added
memberflag
type (📜 https://disky.me/wiki/docs/types/#memberflag)
Misc
- Added
embed url
expression (https://disky.me/wiki/docs/expressions/#embed-url) - Increased max file upload size to 25 MiB
- Added more developer-debug message
Have a lovely afternoon everyone ^^
Hey there! Here's a small update from DiSky containing bug fixes and enhancements!
- ✨ Added
on bot leave
event - ✨ Added supports for the new Structure API coming in Skript 2.7
- ✨ Added deafen-related & voice mute-related events (thanks to @Mushkrem & @Kapilarny)
- 🐛 Fixed DiSky project not building on Skript 2.7
- 🐛 Fixed I/O exception about the configuration file