Skip to content

Releases: zkxs/jinx

1.0.0

19 Dec 23:39

Choose a tag to compare

Added

  • Added support for multiple Jinxxy stores in a single Discord server

Changed

  • /init command renamed to /add_store to 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_links output 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

17 Dec 08:10

Choose a tag to compare

Changed

  • The message created by /create_post now includes a link to your Jinxxy profile. If you really want this you can delete the old post and run /create_post again.
  • 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_roles no 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_links output 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

07 Jul 21:47

Choose a tag to compare

Added

  • /license_info improvements:
    • 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_roles command, 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_links output is more than 4096 characters it will fail. This should be very hard to do. (#3)

0.8.0

30 Jan 07:41

Choose a tag to compare

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_product and /unlink_product
    • Version-specific links can be created with /link_product_version and removed with /unlink_product_version
    • /link_product_version lets 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.
  • 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_role and unset it with /unset_wildcard_role.

Changed

  • /list_links output has been changed to improve readability if you have long, complicated product names

Removed

  • An old feature where /init could 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

  • If you have products with identical names then /link_product and /unlink_product will be unable to handle them properly. (#4)
  • If /list_links output is more than 4096 characters it will fail. This should be very hard to do. (#3)

0.7.0

28 Jan 23:18

Choose a tag to compare

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

  • If you have products with identical names then /link_product and /unlink_product will be unable to handle them properly. (#4)
  • If /list_links output is more than 4096 characters it will fail. (#3)

0.6.0

04 Dec 05:36

Choose a tag to compare

Added

  • /init command now shows a warning if it thinks your API key is missing any of the required scopes.

Changed

  • /init command 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_links fetches 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_product and /unlink_product will be unable to handle them properly.
  • If /list_links output 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

11 Oct 13:56

Choose a tag to compare

Added

  • Add a /stats command. This gives some basic aggregated stats on how many licenses have been activated in your server.
  • Add a /unlink_product command.
  • Adds warnings for roles that can't be granted to /list_links

Changed

  • The message created by /create_post is 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_product to use slash command args and autocompletion. This was done to remove the 25 product/role limit in the old selection dropdowns. /link_product no longer unlinks products: that is now handled by the new /unlink_product command. 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_product edge 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_product and /unlink_product will be unable to handle them properly.
  • If /list_links output is more than 4096 characters it will fail

0.4.0

01 Oct 00:42

Choose a tag to compare

Added

  • Jinx will now update guild-local slash commands when starting up, meaning server owners no longer need to manually use /init to get new commands.
  • Add a /help command.
  • 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 /init command 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_post or /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.

0.3.0

20 Sep 11:12

Choose a tag to compare

Added

  • Add /set_log_channel command, allowing server owners to set/unset a bot log channel. When set, this channel is used to log events such as license activations and important bot announcements.

0.2.0

16 Sep 06:31

Choose a tag to compare

Added

  • Add owner-only /restart command that restarts the bot if it was invoked via the included run.sh script.

Fixed

  • Fix /deactivate_license documentation