Discord Needle Versions Save

Needle is a Discord bot that creates Discord threads automatically.

v3.4.0

1 month ago

v3.4.0 mainly focuses on stability primarily by limiting the RAM usage, hopefully significantly. I also had some time to add two small features.

Full Changelog: https://github.com/MarcusOtter/discord-needle/compare/v3.3.0...v3.4.0

New features

Package upgrades

  • ⬆️ typescript 4.9.4 -> 5.4.3
  • ⬆️ prettier 2.8.1 -> 3.2.5
  • ⬆️ @typescript-eslint/eslint-plugin 5.47.1 -> 5.62.0
  • ⬆️ discord.js 14.8.0 -> 14.14.1
  • ⬆️ @discordjs/rest 1.6.0 -> 2.2.0

Other

v3.3.0

1 year ago

v3.3.0, just like v3.1.0 is mainly a hotfix to get Needle working again after a breaking Discord API change (by upgrading the DJS version). However, I took the time to fix some other bugs while I was at it.

Full Changelog: https://github.com/MarcusOtter/discord-needle/compare/v3.2.0...v3.3.0

New features

Bug fixes

Package upgrades

  • ⬆️ eslint 8.29.0 ->8.37.0
  • ⬆️ @typescript-eslint/parser 5.46.1 -> 5.57.0
  • ⬆️ @typescript-eslint/eslint-plugin 5.46.1 -> 5.47.1
  • ⬆️ discord.js 14.6.0 -> 14.8.0
  • ⬆️ eslint-config-prettier 8.5.0 -> 8.8.0

Other

New Contributors

v3.2.0

1 year ago

This release barely changes anything from the user side, except that Needle should not be crashing at all anymore because we're going to run it in https://github.com/Unitech/pm2. The only thing that changes is that the version number will go away from the /info command because of https://github.com/Unitech/pm2/issues/4960.

Package upgrades

  • ⬆️ eslint 8.25.0 -> 8.29.0
  • ⬆️ @typescript-eslint/parser 5.40.1 -> 5.46.1
  • ⬆️ @typescript-eslint/eslint-plugin 5.40.1 -> 5.46.1
  • ⬆️ @types/safe-regex 1.1.3 -> 1.1.4
  • ⬆️ typescript 4.8.4 -> 4.9.4
  • ⬆️ prettier 2.7.1 -> 2.8.0

v3.1.0

1 year ago

v3.1.0 is mainly a hotfix to get Needle working again after a Discord API bug: https://github.com/discord/discord-api-docs/issues/5573, but also has some more fixes/features.

Full Changelog: https://github.com/MarcusOtter/discord-needle/compare/v3.0.0...v3.1.0

New features

Bug fixes

Package upgrades

  • ⬆️ @typescript-eslint/parser 5.36.1 -> 5.40.1
  • ⬆️ @typescript-eslint/eslint-plugin 5.36.1 -> 5.40.1
  • ⬆️ eslint 8.23.0 -> 8.25.0
  • ⬆️ typescript 4.8.2 -> 4.8.4
  • ⬆️ dotenv 16.0.2 -> 16.0.3
  • ⬆️ discord.js 14.3.0 -> 14.6.0

Other

New Contributors

v3.0.0

1 year ago

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: https://github.com/MarcusOtter/discord-needle/compare/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 (https://github.com/MarcusOtter/discord-needle/issues/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 (https://github.com/MarcusOtter/discord-needle/issues/254, https://github.com/MarcusOtter/discord-needle/issues/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 (https://github.com/MarcusOtter/discord-needle/issues/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

Bug fixes

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

v2.2.0

1 year ago

v2.2.0 introduces some minor feature additions and bug fixes. See full changelog: https://github.com/MarcusOtter/discord-needle/compare/v2.1.0...v2.2.0

New features

  • Discord no longer requires a boost level to set 3 day or 7 day auto-archive durations. Needle was still preventing users from doing this, which is no longer the case (#158)

Bug fixes

  • Needle has been crashing every 2-3 weeks because of an infinitely growing cache from Discord.js, making the bot eventually run out of RAM. We have now added cache invalidators (sweepers) that should clear the cache periodically, which will hopefully fix this issue (#160)
  • The /close command's description has been updated to describe the command correctly

Other

  • The repository now uses Prettier (#102)
  • The README has been rewritten and improved

v2.1.0

2 years ago

v2.1.0 introduces some minor feature additions and bug fixes. See full changelog: https://github.com/MarcusOtter/discord-needle/compare/v2.0.0...v2.1.0

New features

  • Added a new slowmode option to /configure auto-threading which lets users configure a slowmode for the newly created threads. This is off by default, and if enabled, Needle equires the Manage Threads permission. (#87)
  • Needle will now automatically pin the first message of auto-threads if given the Manage Messages permission. If Needle does not have that permission, it will simply not pin the message. (#101)
  • Unnecessary "Success!" message has been removed (#90)

Bug fixes

  • Messages by Needle should no longer have missing user pings or have the wrong message (#100)

Other

  • Needle now has a docker support (#89)
  • Dependency upgrades

v2.0.0

2 years ago

It's been exactly one month since I released Needle v1.0.0, and you gave me lots of good feedback! A total of 75 servers currently have Needle in their server. This update addresses the most common feature requests and bug reports. I have categorized the updates so it is easier for you to find what you're looking for. These release notes do not list every single change, only the most important ones. If you wnat to see every single change, see the full changelog: https://github.com/MarcusOtter/discord-needle/compare/v1.0...v2.0.0.

General

  • We changed the license from GPL-3.0 to AGPL-3.0-or-later (#38) Please take a moment to read through the LICENSE again to see the updated terms and conditions for using and interacting with this bot and its source code.
  • We've added a privacy policy (https://github.com/MarcusOtter/discord-needle/issues/40) The privacy policy explains what data we collect. Take a moment to read through it (it's not very long). This is done in preparation for requesting bot verification from Discord.

The bot

  • Threads will now archive immediately (#25) When users press the archive button or invoke the /close command, the threads will archive immediately by default (instead of setting the auto-archive duration to 1 hour).

    This behavior is customizable with the new archive-behavior option under /configure auto-threading. Set this to ⌛ Archive after 1 hour of inactivity to revert the behavior to how it was before v2.0.0.

  • Better default look of archive-button (#31) We want people to archive their threads when they are done! This makes the side-bar less cluttered and gives less work for moderators. In version 1.0.0, the archive button looked very scary. We made it friendlier!

    v1.0.0 v2.0.0
    image image
  • Less verbose messages As many of you noted, Needle was very noisy by default. This update addresses that, and has much better default messages. I'm planning on making the verbosity configurable in a later release, but make it less verbose by default is definitely the way to go.

    v1.0.0 v2.0.0
    image image
    image image OR image
  • You can now have new-lines in custom auto-thread messages (#37) When writing the value for custom-message under /configure auto-threading, you can now write \n to make new lines.

  • 🆕emoji that indicate threads without replies (#8) Threads that have not received a reply from another user is prepended with 🆕 so that they can be easily identifiable in the channel list. It will remain even if users change the thread name with /title. The emoji is removed as soon as another user replies in the thread, or when the thread is archived.

    This feature is enabled by default, but can be turned off with /configure emojis enabled: False.

  • Configuration is removed when the bot is kicked (#36) In order to not waste disk space and also lower our data retention, guild configurations will be removed once Needle is kicked. You can read more about this in the issue and the privacy policy.

  • Improved detection of thread owners (#49) Previously, if users removed the message that started a thread, we could no longer determine who created the thead, which meant that those users could not archive that thread anymore or change the title. It was also unclear for other people who owned the thread. This is no longer a problem, see more details in the issue.

  • Fix bug with server boost downgrade (#23) See issue for more details

  • Fix bug with custom message variables (#51) See issue for more details

  • Renamed /configure autothreading to /configure auto-threading Consistency!

  • Activity now says Listening to /help This helps new users understand how to interact with the bot.

  • Removed unused message keys

Developers

  • Minimum node version is changed from 16.6.0 -> 16.9.0 This is imposed by Discord.js

  • Added dependabot Dependabot will now create pull requests for package upgrades.

  • See license changes noted above If you are going to self-host the bot without changing the source code, you do not have to disclose the source. However, if you are going to make modifications to the bot's code and plan on self-hosting it, you do need to disclose your source.

Thank you 💜

Thank you to everyone who has created issues and joined the discussion in the Discord server! It's really fun to get such good feedback and suggestions on improvements.

Special thanks to @nchristopher and @c43721 that have contributed massively to this project by reviewing and submitting PRs and keeping me in check when I try to do wonky things!

v1.0

2 years ago

🎉