Releases: zkxs/jinx
Releases · zkxs/jinx
1.0.0
Added
- Added support for multiple Jinxxy stores in a single Discord server
Changed
/initcommand renamed to/add_storeto better convey that multiple stores can be added- Some commands now require you to provide the store name
- Removing Jinx from your server will now cause it to immediately and permanently delete all of Jinx's saved configuration data and cache data for your server. Previously, there was no way for you to have Jinx delete your data. Note that license activation records are still stored in the Jinxxy API! This means you can migrate to a different license activation tool without losing record of activated discord users.
Fixed
- Many unusual cases if the same Jinxxy store was linked to multiple different Discord servers have now been explicitly handled. Previously it was an accident that this sort of worked.
Known Issues
From this update on, please check our GitHub issues for known issues.
- If
/list_linksoutput is more than 4096 characters it will fail. (#3) This should be very hard to do. If you manage, do let me know so I can think about a fix.
0.10.0
Changed
- The message created by
/create_postnow includes a link to your Jinxxy profile. If you really want this you can delete the old post and run/create_postagain. - The license registration modal now specifically says "Jinxxy license" instead of "license", in an attempt to reduce the number of people plugging Gumroad license keys into Jinx.
/grant_missing_rolesno longer requires you to pass a role in. If you leave it blank, it'll run against all roles.
Fixed
- Added missing error handling for license registration: it shows an error message now if something goes wrong. Before, it would just say "thinking" forever.
- Fixed license activation being broken. The root cause was an undocumented Jinxxy API update reduced the max result page size from 2147483647 to 100. Users were not impacted by this bug, as the Jinxxy API was broken during this event.
- Fixed an issue where autocompletion would not work if it tried to suggest more than Discords limit of 25 autocompletions.
- Fixed an issue where API keys with missing scopes could cause the retry logic to retry indefinitely
- Fixed an issue where deleted roles would get stuck in Jinx forever
Removed
- License key strings that do not look like Jinxxy keys are no longer sent to the Jinxxy API for double-checking. Users should not notice any differences in behavior.
Known Issues
- If
/list_linksoutput is more than 4096 characters it will fail. (#3) This should be very hard to do. If you manage, do let me know so I can think about a fix.
0.9.0
Added
/license_infoimprovements:- it gives more detail than before
- it can now detect unusual cases where Jinx's local data doesn't match the data in the Jinxxy API
- The bot now responds to DMs (it just says that you're not supposed to DM it and provides help links)
- Added a
/grant_missing_rolescommand, which can retroactively give users roles you linked after they redeemed their license.
Changed
- Performance improvements for
/user_info,/list_links, and all the link/unlink commands. These commands should feel much more responsive now. - Huge performance improvements in product name autocompletion. Previously, it was so slow it appeared broken.
- Improve messaging in the case where a license grants zero roles to a user
Fixed
- Handle an edge case where multiple products (or product versions) have the same name (#4)
- Handle Jinxxy API timeouts
- Fixed pagination problems that occurred when the Jinxxy API returned more than one page of results
- Handle case where server owner breaks Jinx's permissions to write to the bot log channel
Known Issues
- If
/list_linksoutput is more than 4096 characters it will fail. This should be very hard to do. (#3)
0.8.0
Added
- Support for linking roles to specific versions of products (#2). Jinxxy lets you create multiple versions within a product with access to different subsets of files, and now Jinx can differentiate between these versions.
- The classic style of linking where products are linked to roles still works exactly the same with
/link_productand/unlink_product - Version-specific links can be created with
/link_product_versionand removed with/unlink_product_version /link_product_versionlets you link a "null version". This is to handle a very specific edge-case where a customer purchased a product before you added versions. As long as your product has always had versions you should not need to worry about this.
- The classic style of linking where products are linked to roles still works exactly the same with
- Added support for a global wildcard role which is granted for any of your products. This is suitable for people with simple stores, but unsuitable for people who have a mixture of free and paid products who only want to grant roles for the paid products. Set it with
/set_wildcard_roleand unset it with/unset_wildcard_role.
Changed
/list_linksoutput has been changed to improve readability if you have long, complicated product names
Removed
- An old feature where
/initcould be used to forcibly reinstall slash command has been removed. Jinx has handled this automatically for some time, so it was redundant and caused confusion as to why the api key was optional.
Known Issues
0.7.0
Added
- Count failed Gumroad activation attempts and notify guild owners if they have a Jinx/Gumcord confusion issue (#10)
- Add a invalid license heuristic for Payhip keys. This means the bot will now tell users exactly what they're doing wrong if they give it a Payhip key by mistake. (It already did this for Gumroad keys).
- Add a check for db downgrades. This prevents unusual edge cases that can occur if Jinx is downgraded to a very old version with a different db schema.
- Added a bot status message that counts how many distinct users have used the bot successfully. This message updates once every 60s.
Changed
- Improved error text (#7). This should help users understand how to proceed if a command fails.
- Improved license registration failure message. This should help users understand why registration failed and how to proceed.
Fixed
- Fixed some cases where unhandled errors during license registration would cause log to fail to send to your log channel.
- Fix an issue (#9) where product auto-completion would fail for products with names >100 characters long
- Fix an issue (#5) where the in-memory cache was able to deadlock the bot, causing a permanent hang:
Known Issues
0.6.0
Added
/initcommand now shows a warning if it thinks your API key is missing any of the required scopes.
Changed
/initcommand now properly verifies API keys instead of blindly accepting what the user provides (and subsequently breaking other commands later when you actually try to use a bad API key)
Fixed
- internal optimizations to how
/list_linksfetches products from Jinxxy. You should notice the command being slightly faster on average now. - Fix #1 by handling an edge case where unset log channels caused unexpected behavior
- Fix a problem where many bot actions would fail intermittently. This was caused by high Jinxxy API latency cascading and causing Jinx to miss Discord deadlines. Jinx will no longer fail unexpectedly when the Jinxxy API is running slow.
Known Issues
- If you have products with identical names then
/link_productand/unlink_productwill be unable to handle them properly. - If
/list_linksoutput is more than 4096 characters it will fail
Caution
Jinx 0.6.0 is affected by #5: It will randomly deadlock when the product cache is used.
You should not use this version!
0.5.0
Added
- Add a
/statscommand. This gives some basic aggregated stats on how many licenses have been activated in your server. - Add a
/unlink_productcommand. - Adds warnings for roles that can't be granted to
/list_links
Changed
- The message created by
/create_postis now slightly more verbose and explains where license keys can be located. If you want to update an existing post you'll need to delete the original post re-run the slash command to get a new one. - Some commands have had their response text formatting slightly changed to improve readability, including
/license_info,/list_links, and/link_product - Completely reworked
/link_productto use slash command args and autocompletion. This was done to remove the 25 product/role limit in the old selection dropdowns./link_productno longer unlinks products: that is now handled by the new/unlink_productcommand. Unfortunately, as Discord does not support variadic arguments links must be created one at a time now. - All command output has been converted from messages to embeds. This was done partially to make things look cleaner and partially to get the higher 4096 character limit of embeds (normal messages have a 2000 character limit).
Fixed
- Fixed a bug where in certain
/link_productedge cases Jinx would incorrectly warn that it might lack needed permissions. - Fixed a bug where a few redundant API requests would be sent to Discord every time the bot was added to a new guild.
- Fixed a bug preventing creation of new sqlite db
Known Issues
- If you have products with identical names then
/link_productand/unlink_productwill be unable to handle them properly. - If
/list_linksoutput is more than 4096 characters it will fail
0.4.0
Added
- Jinx will now update guild-local slash commands when starting up, meaning server owners no longer need to manually use
/initto get new commands. - Add a
/helpcommand. - Jinx will now log certain license registration failure cases to the bot log channel. For example, if the license has already been activated by a different user.
- Added some validation on the
/initcommand to make sure the user-provided API key at least looks valid before Jinx blindly accepts it.
Changed
- Heuristic used to guess if a user-provided key is a Jinxxy long key is now slightly more strict. Previously it would accept anything that looked like a UUID: now it verifies the UUID is a valid UUIDv4. This change has no effect on the short key registration flow.
- Small improvements to the sqlite connection to follow best practices, such as periodically optimizing the DB.
- Improve error handling when Jinx is unable to send a message to a channel. This can happen in
/create_postor/set_log_channel.
Removed
- Buyers can no longer provide a Jinxxy license ID directly and must instead provide a Jinxxy short or long key. This shouldn't affect users, as those IDs are not normally exposed: they are only used internally in the Jinxxy API. Sellers can still use these internal IDs in the seller-only slash commands, such as
/license_info.