Skip to content

v3.0.0

Compare
Choose a tag to compare
@MarcusOtter MarcusOtter released this 31 Aug 23:01
· 94 commits to main since this release
19959b3

Warning: This update probably introduces bugs. Please let me know if you think something seems wrong by submitting a bug report here on GitHub or writing to me in the Discord support server. I'd also be very happy to get any feedback/suggestions you may have.

v3.0.0 is a complete rewrite of the entire bot, and adds a bunch of requested features and bug fixes!
See full changelog: v2.2.0...v3.0.0

New features

Note: I've probably missed some new features, as the entire bot was rewritten. Expect these release notes to be updated in the coming weeks 😅

Configurable default titles (#29) ✨🥳✏️

This has been the most popular feature request for as long as I can remember! I'm sorry it took so long, I really wanted to get it right. Hopefully I did! Otherwise you can let me know in the Discord support server.

  • You can limit the thread title length
  • You can use message variables
  • You can use custom regexes to match certain parts of the message.
    • You can choose how to join the regex matches (for example with commas if you're matching some tags)

If you need help setting it up let me know and we'll take a look together!

Options Custom Result
image image image

Configurable buttons (#254, #31)

Previously, you were forced to use a green archive button and a grey help button. The help button has been replaced with a blurple edit title button. But more importantly, the button text & colors are now configurable. You can also hide them individually if you prefer to only have one or none of the buttons.

Before (default) After (default) Configurable! Result
image image image image

Remove reply message

You can now remove the reply message completely if you just want Needle to create threads and not reply 🔥 Simply remove everything in the custom reply-message when using /auto-thread.

You can now change one /auto-thread setting at a time (#114)

Previously you had to re-type the entire /configure auto-threading command every time you wanted to make even a tiny change in one of the parameters. With this update, you can simply change the setting you want, and the old settings will not be overriden. So if you suddenly realize that you want to include bots, simply do /auto-thread include-bots, and all your previous settings will remain the same.

New message variables

Message variables can be used in every configurable Needle text, for example in a custom title or reply message (or even the buttons!). The variable will be replaced with information that is relative to who, where, and when an action was performed. For example, if you close a thread, the $USER_TAG will be a reference to the user that closed the thread, and the $CHANNEL_NAME will be a reference to the thread being closed.

Note: If you were using any of the old message variables, they have been updated to the new ones automatically. For example, $USER has been translated to $USER_MENTION for you.

The "thread author" is the person that wrote a message and had Needle open a thread on it.
The "user" is the person that performed the action.
Examples in parentheses.

  • $CHANNEL_MENTION — The channel mention (#channel-name)
  • $CHANNEL_NAME — The channel name (channel-name)
  • $DATE_UTC — The current date in the UTC time zone (2022-08-31)
  • $THREAD_MENTION — The thread mention (#thread-name)
  • $THREAD_NAME — The thread name (thread-name)
  • $THREAD_AUTHOR_MENTION — The thread author mention (@user)
  • $THREAD_AUTHOR_NICKNAME — The thread author's nickname, or username as fallback (Marcus (LeMorrow))
  • $THREAD_AUTHOR_NAME — The thread author's username (LeMorrow)
  • $THREAD_AUTHOR_TAG — The thread author's Discord tag (LeMorrow#5490)
  • $TIME_AGO — An always up to date timestamp for how long ago the action was performed (3 minutes ago)
  • $USER_MENTION — The user mention (@user)
  • $USER_NICKNAME — The user's nickname, or username as fallback (Marcus (LeMorrow))
  • $USER_NAME — The user's username (LeMorrow)
  • $USER_TAG — The user's Discord tag ( LeMorrow#5490)

Improved help command

The /help command got many improvements.

  • It is now fully context aware by default, which means it will only show you which commands you can do in the channel you are in. It takes the channel type and your permissions into account. You can also choose to see all commands by setting the filter option.
  • It no longer takes a command as an option to get more info about a specific command, all the information is displayed on the first page.
  • It uses the new command mention feature which lets you simply click the commands to have them typed in your chat box.
Old New (filtered) New (all)
image image image

Fully configurable permissions

Previously, Needle decided that people without the Manage Threads permission was not allowed to use any /configure commands. This was a sensible default, but some servers wanted more control over this. Now, Needle is using Discord's new slash command permissions, which lets the servers set whatever permisisons they desire. Don't want anyone to close threads except for moderators? Change the permissions of the /close command! Like to live dangerously and want to let anyone factory reset Needle at any time? Change the permisisons of the /factory-reset command! Needle provides sensible defaults but lets you override them. The permissions also extend to the buttons for the /close and /title commands (I reverse engineered the permission system for this 😳)

To have better support for this, many commnads have been renamed. Before, you would have to set one permission on ALL commands starting with /configure ..., but now they are split up to their own commands so you can change the permissions individually.

  • /configure auto-threading/auto-thread
  • /configure messages/setting
  • /configure default/factory-reset
  • /configure emojis → removed

Status reactions (Removed 🆕 emoji in titles)

Note: This feature is turned off by default and can be enabled with the /auto-thread command

As I flagged for in the Discord server about 2 month ago, emojis in titles was very spammy and lead to us hitting rate limits. We removed this feature and replaced it with ✨ status reactions ✨

Enabling status reactions makes Needle add a reaction to the starting message of threads to indicate the status of the thread. This is better than in the title, because it does not cause spam inside the thread itself. Here it is in action:

Status reactions /settings Set the value
image image image

Other features

  • Channel and enabled arguments are optional for /auto-threading (#190)
  • Commands and their options now have some emojis to convey additional information (🔥 = popular, 🆕 = new, ❗ = dangerous)
  • Added a new /info command that shows some basic info & stats about Needle
  • Added a confirmation dialog to /factory-reset (#32)
  • Needle will now show a cooldown when you are renaming a thread too often (#72)
  • Needle will now archive threads (or delete them if they are empty) when the starting message is deleted Configurable with /auto-thread delete-behavior (#68)
  • Needle will try to catch up to messages it has missed to create threads on after downtime (for example, when updating the bot or if the internet dies). If you see Needle go offline and miss messages, you can leave up to 10 per channel and Needle should take care of it once it goes online again. (#261)
  • Added 5 second slowmode option
  • Modals are pre-filled with their current value. This isn't a new feature because we didn't have modals before, I just wanted to mention it because I think it's neat 😇

Bug fixes

  • Fixed SUCCESS_THREAD_CREATE (under the new name SuccessThreadCreated) (#251)
  • Needle will now provide better warnings when it's missing permissions (#252)
  • By default we won't ping users anymore. This was causing ghost pings on the mobile apps. (#188)
  • Needle now correctly limits thread titles to 100 characters and messages it sends to 2000 characters (#173)

Other

  • The logo and bot description has been updated in Discord (will take some time to update everywhere)
  • Repository now has CodeQL security scanning
  • We have a Code of Conduct
  • Needle now uses internal sharding in DJS
  • Dependencies have been upgraded
  • We simplified our privacy policy
  • The bot now compiles to ES modules instead of CJS modules