
DiSky
The best Skript add-on for Discord management! Slash commands, interaction, components, modal, and much more are available!
Hi there! Back with a pretty packed update 🚀
Huge thanks to @P0wders who handled a bunch of the PRs in this release (slash command id, activity & primary guild events, and more)!
✨ New Features Scheduled Events Full support for Discord's scheduled events!
11 new events: create, delete, user subscribe/unsubscribe, plus name/description/location/start & end time/status/cover image updates. The status update is how you catch an event starting or ending. New scheduled event description and scheduled event jump url properties. ⚠️ Needs the SCHEDULED_EVENTS intent + cache flag (both off by default)!
🎮 Activities & Rich Presence Member Activities (activities of %member%): every current activity of a member (game, stream, custom status...). 10 new activity properties: details, state, large/small image url & hover text, party size/max size, start/end timestamp. New user activity start / user activity end events. ⚠️ Needs the GUILD_PRESENCES intent + the ACTIVITY cache flag!
🎨 More properties & conditions Member Colors (colors of %member%): the RoleColors of the member's highest non-default role. Invite Creation Date (expanded invites only!). User is Showing Server Tag condition. New user primary guild update event (past/new primary guild id & user tag). Added a slash command id expression in slash command events. 🗳️ Retrieve Poll Voters New retrieve poll voters effect: get who voted for a given poll answer (by position or pollanswer). Just pass the poll's message, the bot rebind is handled like retrieve message. 🎧 Audio: important DAVE update Discord enforces DAVE (E2EE for audio/video) since March 1st, 2026; without it, audio connections stop working. DiSky now wires it automatically.
⚠️ macOS isn't supported by DAVE (Linux & Windows only). If your bots use voice, updating is strongly recommended!
Improvements has role and the bot-in-thread condition now accept lists and proper negation (isn't, doesn't have...). discord id now works on pollanswer objects. Big documentation pass + cleaner generated docs (thread states now included). Full Changelog: 4.28.0...4.29.0
Hi there! I'm finally back :rocket: It's been a while since the last update (February 1st, oof), and I'm slowly coming back to DiSky, which I still try to maintain in my (shrinking) free time. This release brings Skript 2.15 support, a major JDA v6 upgrade, brand new modal components, and a few quality-of-life improvements!
Thanks to @sovdeeth for the async optimizations and format fixes!
:sparkles: New Features
- Checkbox & Radio components for Modals: You can now use
new checkbox groupandnew radio groupinside your modals, along with their associatednew component optionfor dropdowns, checkboxes and radios. - Attachment Upload in Modals: Added the
new attachment upload buildercomponent and thereceived attachmentsexpression to grab files uploaded through modals. - Role Color Properties: Added
primary role color,secondary role colorandtertiary role colorproperties, along with conditions to check a role's colors. - Retrieve Role Member Count: New
retrieve role member counteffect to fetch and store, in a list variable, the members assigned to a role. Members with rolesexpression: Introduced a cleaner expression to retrieve members by roles — combining sync & async versions — that replaces the now-deprecatedfind members with roles.
:information_source: You can browse all the new syntax, along with patterns and examples, using the
tag:newquery on DiSky Syntax!:hammer_pick: Improvements
- Skript 2.15 support — DiSky is now compatible with the latest Skript release.
- JDA updated to v6.4.1 — major dependency bump for better Discord API compatibility and access to newer features.
- Enhanced the
find membersection with nativereturnsupport. - Improved patterns and documentation for the modal
component valueexpression andnew component optionbuilders. - Refactored
DocBuilderto support modern SkriptSyntaxInfo, improving documentation generation. - Switched to DiSky's internal registration system over Skript's default one for better consistency.
- Minor performance optimizations on permission checks and array creation.
:bug: Bug Fixes
- Fixed multi-threading and variable de-sync issues inside the
find membersection. - Prevented duplicated event values in the event system, with some cleanup around guild events.
- Simplified and fixed boolean checks for the
bot member is in threadcondition and several property conditions.
:warning: Breaking Changes
- Skript 2.15+ is now required — following the dependency update, DiSky v4.28 no longer supports Skript 2.14.
find members with rolesis deprecated in favor of the newmembers with rolesexpression. Please update your scripts :slight_smile:
That's all for this one! The next update will likely bring soundboard sounds support, voice channel effects, and more bug fixes if anything pops up. Thanks a lot for your patience and continued support :blue_heart:
Full Changelog: https://github.com/DiSkyOrg/DiSky/compare/4.27.0...4.28.0
- Checkbox & Radio components for Modals: You can now use
This new version of DiSky mainly brings support for Skript 2.14 and upward, making any previous version of Skript NOT usable! From now on, DiSky will only support Skript 2.14+.
Thanks to @Fusezion & @EquipableMC as always for their help on a few things for this release!
✨ New Features
- Added
Member Can Interact With Member(s)/Role(s)condition - Added
Thread OwnerandThread Message Countproperties - Added
User Tag Icon/Badge URLandUser Tagproperties
ℹ️ You can take a look at their syntax, along with examples and description using the new
tag:newquery in DiSky Syntax!⚒️ Improvements
- Upgraded to Skript 2.14+ compatibility - Complete refactoring to support the latest Skript API changes
- JDA dependency updates - Updated to the latest JDA version for better Discord API compatibility and performance
- Optimized expression parsing - Improved performance when handling complex Discord object expressions
- Enhanced error handling - More descriptive error messages when syntax fails or Discord API calls encounter issues
- Code cleanup and refactoring - Removed deprecated code and improved overall codebase maintainability
- Better null safety checks - Added additional validation to prevent null pointer exceptions in edge cases
- Improved documentation generation - Enhanced syntax documentation system for better searchability
🐛 Bug Fixes
- Fixed issues with thread-related properties not being accessible in certain contexts
- Resolved crashes when accessing member properties with invalid or missing permissions
- Fixed embed field manipulation causing unexpected behavior in some scenarios
- Corrected inconsistent behavior with permission checks across different guild contexts
⚠️ Breaking Changes
- Skript 2.13 and below are no longer supported
- Every modules MUST be updated! Please refer to this page to check which version of each module you need.
What's Changed
- Add event-user to member leave event by @Fusezion in https://github.com/DiSkyOrg/DiSky/pull/277
- Add support for checking boost tier messages by @EquipableMC in https://github.com/DiSkyOrg/DiSky/pull/282
- Add thread owner and message count expressions by @Copilot in https://github.com/DiSkyOrg/DiSky/pull/283
- Fixed duplicate [the] in multiple expressions by @CrebsTheCoder in https://github.com/DiSkyOrg/DiSky/pull/284
- Translate DiSk handwritten documentation by @ItsTheSky in https://github.com/DiSkyOrg/DiSky/pull/288
- 📚 Complete documentation with @SeeAlso annotations for all elements by @ItsTheSky in https://github.com/DiSkyOrg/DiSky/pull/289
- ⚡Allow Resetting or Clearing of a Nickname by @EquipableMC in https://github.com/DiSkyOrg/DiSky/pull/292
- enhance
FindMembersection with nativeEffReturnsupport by @ItsTheSky in https://github.com/DiSkyOrg/DiSky/pull/298
New Contributors
- @Fusezion made their first contribution in https://github.com/DiSkyOrg/DiSky/pull/277
- @Copilot made their first contribution in https://github.com/DiSkyOrg/DiSky/pull/283
- @CrebsTheCoder made their first contribution in https://github.com/DiSkyOrg/DiSky/pull/284
Full Changelog: https://github.com/DiSkyOrg/DiSky/compare/4.26.0...4.27.0
- Added
Hello there! Here comes DiSky v4.26.0 with some nice quality of life improvements and bug fixes! Thanks to @EquipableMC and @Fusezion for their help on some stuff!
:sparkles: New Features
- Embed Fields as Expressions: Embed fields are now accessible and manipulable as expressions, giving you more flexibility when working with embeds. See here
- Embed Templates: Brought back the embed template system from DiSky v3! You can now register and reuse embed templates for more efficient embed creation. You may also use them in data structures!
- Member Boost Time Support: Added support for
Member's boost time, allowing you to retrieve how long a member has been boosting the guild. See here - Better Variable String Support: This enables more intuitive variable storage for Discord objects (channels, messages, members, etc.). You can now use
{blah::%{_member}%}instead of{blah::%discord id of {_member}%}.
:tools: Improvements
- Enhanced Message Editing: The
edit messageeffect now supports full or transient replacement modes, giving you better control over whether previously unedited content (like embeds) should be replaced or preserved. See here
:bug: Bug Fixes
- Fixed global and guild slash commands creation/updating system that was broken due to command ID changes on server restart.
What's Changed
- Spelling correction in
RetrieveMember.javaby @Mushkrem in https://github.com/DiSkyOrg/DiSky/pull/269 - Adds support for getting the boosted time of a member, and fixes invalid docs url in feature template by @EquipableMC in https://github.com/DiSkyOrg/DiSky/pull/270
Full Changelog: https://github.com/DiSkyOrg/DiSky/compare/4.25.0...4.26.0
Hi there! This is a rather small, yet useful update, that brings text display, labels, and select menus into modals! You may now mix those new components when opening modals, and gather the input easily!
[!CAUTION] Breaking Changes: DiSky v4.25.0 requires an update to the way you previously created text inputs for your modals. Refer to the new documentation page about modals for examples and more information.
I've also launched Projects! This will help me (and you!) keep track of what should/must be done until the next release. You may add your review anytime to any idea already inside the [DiSky v4 Project)(https://github.com/orgs/DiSkyOrg/projects/1)!
Hi there! I'm back from vacation :P Here's another small update that brings some bugfixes, QoL things, but mainly fixes attachments issue with file uploads!
- Added
retrieve pinned messageseffect, with its newpinnedmessageclass; it can be used as a normal message, but has one more property:pin date of %pinnedmessage%. - Enhanced
new separatorsyntax:large/smallis now optional; it'll default tolargeif none is specified. posteffect may now be givenfile uploadsdirectly (so you may upload only files this way)- The
inline message builderexpression has been reworked to work with the new file upload system; you cannot give strings for its files anymore.
Every effect/expression that previously used attachments (= accepted strings or images, DiSky had to hint its source anyway) will now require a file upload instead, you'll have to create according to this doc page!
⚠️ You can find more info about it in the Migration page, from v4.23 (or older) to v4.24
- Added
This is a late night release, I know. This comes with a much needed release, and much needed features.
🎉 Message/User Commands now finally work!
Thanks to Sovde on the SkriptLang team, he has helped me fix the issue with message commands/user commands, so they should properly enable and register now! Check the docs for more information!
🤫 Suppress Link Embeds!
You can now suppress (or hide) link embeds from either a bot or a certain user! If its in dms, you can only suppress link embeds from the bot in the dms, not the user. Documentation for this will come tomorrow as I need much needed sleep. Right now, the syntax is the following:
(suppress|hide) [the] [discord] [link] embed[s] [message] (of|from) [the] [discord] [message] %message%()means its required, and[]means its optional, and%message%is obviously required to specify the exact message.❓ Why beta?
Now I know you all are going to be asking this, so I am going to explain while taking snippets from JDA's (Java Discord API's) message. We are in beta considering this a huge new update with a heck ton new features for you all to mess around with and also find anymore bugs/issues that may arise. Now for the 2nd part. JDA (Java Discord API) is what we use to make DiSky work, and with that comes it's own issues. As from JDA, "For now, this [6.0.0-rc.1] is just a release candidate, since we might want to do some more breaking changes before the stable release of 6.0.0." This is obviously a beta build of JDA which can lead to even more issues. the next release candidate might include more breaking changes, potentially with components or other parts of JDA." This is why this is a beta.
⚠️ Known Issues
We are aware attachments aren't in the best of shape right now, I am waiting on Sky to get back to investigate further. Resources site is down. We are aware. Sky is not home so there is not much we can do. Sorry.
It's been awhile since the last update! This is finally announcing the release of DiSky 4.24.0-beta1. I will try to keep this short and sweet and explain why this is in beta, so please take some time to read this as this is extremely important.
🎉 Components V2/Containers Update!
Yes, you heard it here, DiSky now supports the new Components v2/Containers. Discord has introduced a completely new component system (which is not compatible with the old one!) meant to replace embeds and components within messages. It allows you to create customizable layouts with sections, galleries, files, and much more, all within one component called a "Container". You can find the documentation for containers here, although this is a beta and you should expect bugs. We have actively tested with our @👑 - Platinum members and have hopefully ironed out most bugs/problems!
🛠 File Upload enhancements
We have made some changes as to how File Uploading is now handled, so this should hopefully be better now!
❓ Why beta?
Now I know you all are going to be asking this, so I am going to explain while taking snippets from JDA's (Java Discord API's) message. We are in beta considering this a huge new update with a heck ton new features for you all to mess around with and also find anymore bugs/issues that may arise. Now for the 2nd part. JDA (Java Discord API) is what we use to make DiSky work, and with that comes it's own issues. As from JDA, "For now, this [6.0.0-rc.1] is just a release candidate, since we might want to do some more breaking changes before the stable release of 6.0.0." This is obviously a beta build of JDA which can lead to even more issues. the next release candidate might include more breaking changes, potentially with components or other parts of JDA." This is why this is a beta.
We hope you enjoy this update, and thank you for using DiSky! ❤
Hello there! It's been a while, right :)
This update reworks the whole event system DiSky was originally using (inspired by Vixio back then, but it's not scalable at all, and a real mess to maintain and add new events). Now, not only do all events support better custom event-expression (e.g.,
the target userin a user command event), but also support for better timed event expressions (pattern would be likenew channel regionin a channel region update event).🎫 You may find the new event documentation here!
DiSky v4.23 brings tons of new missing events, related to updates (channel, guild, role, ... updates) and every event related to the guild's emojis and stickers! We'll also be able to add new events very easily, while keeping the syntax for you, very intuitive :)
And that's pretty much all! DiSky starts to include almost everything from JDA/Discord, so it's hard to make a "big" release; not to mention my personal time is beginning to limit my time working on DiSky :<
What's Changed
- Fix Modrinth publish workflow by @zefir-git in https://github.com/DiSkyOrg/DiSky/pull/243
New Contributors
- @zefir-git made their first contribution in https://github.com/DiSkyOrg/DiSky/pull/243
Full Changelog: https://github.com/DiSkyOrg/DiSky/compare/4.22.1...4.23.0
DiSky v4.23.0 is still in alpha; this third (and, I hope, final) version general bugfixes, as well as enhancement on existing new events. Some QoL changes are also included.
- All events now uses an expression-based time value. For insta,ce instead of
past/future event-value, a user-friendly expression exists, such asthe new voice channelin a channel move event! - Slash command permissions were fixed, when specifying
enabled forentry in groups or subcommands. - The usage of cache flags has been greatly enhanced! Take a look at the revamped wiki page about that :)
:warning: Again, this is an ALPHA! Don't use in a production server as it may break things :P
Thanks for your support & feedback, and have a nice day :love_✨:
:modrinth~1: Download: </plugins/disky/version/4.23.0-alpha3> :gift: Donations: (if you like my hard work): #🎁・donations (you can also star the GitHub repo!)
- All events now uses an expression-based time value. For insta,ce instead of
DiSky v4.23.0 is still in alpha; this second version brings bugfixes on event-value usage, and also introduces a lot of new events!
- The new events include, but are not limited to, guild voice events, self events, scheduled events, ... (in total, there's ~40 new events!)
- The documentation page for events has been reworked into categories! Take a look yourself here!
Again, this is an ALPHA! Don't use in a production server as it may break things :P
Thanks for your support & feedback, and have a nice weekend
DiSky v4.23.0 is finally out, in early alpha, as it contains tons of internal breaking changes; scripts themselves should not be affected (that's my goal at least), and I'll do everything to not introduce breaking changes on your end! :P
:sparkles: Event Rework
The whole event system has been reworked! All events have description, better event values, and it'll be much, much easier for me to add new events with tons of quality of life features (for instance, every update-related event like
on channel name updatewill now useold [channel] name/[new|current] [channel] nameexpressions instead of the weirdpast/future event-string!)First, I want to make sure my changes are not breaking any scripts, but once that's done, I'll be able to quickly add literally every remaining events from JDA!
:paper: You can find the new documentation for the event rework here!
:zap: Custom Slash Structure Args
I've added a sort of testing version for the custom argument system for the slash structures: it'll let you put non-discord argument type (e.g.
offlineplayer), and DiSky will then take care of the rest! Not only it'll parse the input correctly, but DiSky will also provide the most UI-efficient way for this type: in case ofplayer, it'll display a choice with the currently connected players!Available custom types are:
- Any Skript enumeration (enums smaller than 25 constants will use a choice argument, enums with more will use auto autocompletion)
playerandofflineplayermember(argument will be none if the command is not within a Guild)color(accepts Skript's constants, RGB and hexadecimal colors)
If you have an idea for a custom argument type, let me know in #💬・chatting!
That's all for now! As said above,
:warning: This is an ALPHA build! It is NOT recommended to use within a production server! Any feedback is appreciated as always :slight_smile:
Hello everyone! Here's a small but useful update for DiSky:
✨ New Features & Enhancements
- Fixed command registration by enhancing
BotReadyWaiterto register commands immediately if the bot is already connected - Added guild readiness handling in
SlashManagerandContextCommandManagerfor better command registration - Improved
ChannelOfto properly handle messages in guild text channels - Enhanced
CreateMessageto support creating messages based on existing ones
🐛 Bugfixes
- Added error handling for invalid channels
- Fixed issues with command registration timing
Full Changelog: https://github.com/DiSkyOrg/DiSky/compare/4.22.0...4.22.1
- Fixed command registration by enhancing
Hello there! It's been a while :P Here's DiSky v4.22.0 update: relatively small, yet useful and comes with bugfixes! Thanks to @Equip for making the auto-mod support!
🚀 New Features
-
AutoMod Support!
- Added bunch of properties & expressions around automod
- Added events to listen to automod triggering & update
-
Added support for Face Holding Back Tears emoji
-
Added support for voice message
-
Added better support for modules! A new OAuth2 module will soon come out (docs can be found here) as I have to finish another secret project before :>
🛠️ Improvements
- Updated UnbanMember effect to support user ID as string format with validation
- Implemented proper shutdown method for DiSkyModule
- Added module shutdown handling in onDisable
- Updated JDA dependency to version 5.2.3
🐛 Bug Fixes
- Fixed issue where Skript code inside slash commands wouldn't update correctly
- Resolved 'enabled for' entry problems in slash commands
- Documentation fixes in README.md
- Fixed the
move roleeffect that threw an exception when moving a role above/under another - Enhanced the
has permissioncondition: it now takes the place of Skript's condition to avoid the direct conflict
-
Well ... it's been some hours since 4.21.0 xD Anyway, this very small update fixes the usage of underscore in slash commands (+ gorups and sub-commands). If you do not use any
_in your commands, then you don't really need to update for now.New Infrastructure
- We're excited to announce that DiSky now has its own Maven repository (although only DiSky is available for now).
- The project has been updated to fully support Skript 2.10, including comprehensive updates to the module system
:warning: From now on, DiSky will only support Skript 2.10 and above!
- Introduced DiSkyMetrics with bStats integration for better usage tracking and analytics (https://bstats.org/plugin/bukkit/DiSky/)
:rocket: Major Feature Additions
:control_knobs: Command Structures Overhaul
- Implemented a new system for User & Message Command Structures
- Added support for slash command groups and sub commands
- Fixed building issues related to slash commands with integer/double arguments that have choices
- Enhanced the slash command un-registration system
:construction: Data Structures!
Launched a new comprehensive data structures system! This is meant to be a more easy-to-use and powerful way to create discord objects, similar to YAML. It's a more user-friendly way to create and manage Discord objects, such as embeds, buttons (and soon, more!). Here's a quick example:
set {_e} to a new embed: title: "Hello, World!" description: "This is a test embed!" color: red field: name: "Also support complex expressions!" value: "%event-user%" reply with {_e}:gear: Module System Improvements
- Introduced a new module API
- Added validation to prevent loading of outdated modules
- Removed the feature to enable/disable/reload modules as it was broken asf
:warning: See this page to update your modules accordingly! All of them are now BROKEN with v4.21.0 if you DON'T UPDATE THEM!
:zap: Quality of Life Improvements
- Enhanced the private channel effect with better error logging
- Added the ability to move roles for a specified duration
- Implemented pre-filled values for text inputs
- Added a new section system to the debug file with listener debugging (
/disky debug listener) - (Finally) Made every expressions asynchronously changeable & gettable
:bug: Bug Fixes
- Fixed unban effect functionality
- Resolved issues with the ban effect not completing rest actions
- Updated all deprecated Skript methods to their modern equivalents
- Various performance optimizations and code refactoring
Hi there! This release mainly fixes some previously reported issues in DiSky. This is not a major release, but with Sky being busy with his personal life, I have decided to release this version for him.
✨ New Features
- Added
is timed outcondition for checking if a member is or isn't timed out.
🐛 Bug Fixes
- Fixed an issue with stuff being duplicated (hopefully).
- Fixed an issue where Transkript module would crash your server due to pink heart emoji if generating a transcript.
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.
- Added
Hi there! This version is a hotfix for using the bot's name while it has not loaded yet.
As of 4.20.0, the bot's definition structure is being loaded async, thus Skript loading other structures may be parsed before the bot is fully loaded.
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 webhookeffect - New
forward messageeffect with ability to store the forwarded message - Added
is forwardedcondition for messages - Introduced ability to specify the desired bot in the
post messageeffect - 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 membereffect
⚡ 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 shutdownsection 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

