Releases: MarcusOtter/discord-needle
v3.4.0
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: v3.3.0...v3.4.0
New features
- ✨ Thread title will no longer show numbers for channel/role/user mentions even when they are inside embeds (#347) - by @MarcusOtter in #467
- ✨ Thread title will now update when the message updates (unless the title had been set manually), allowing for titles based on link embeds like YouTube and Twitter (#424) - by @MarcusOtter in #468
- ✨ Display names are now respected, not just nicknames or usernames - by @dependabot in #461
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
- 🧹 Add more sweepers and cache limiters - by @MarcusOtter in #466
v3.3.0
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: v3.2.0...v3.3.0
New features
- ✨ Thread title will no longer show numbers for channel/role/user mentions (#347) - by @nchristopher in #379
Bug fixes
- 🐛 Catch-up script should no longer break (#315) - by @MarcusOtter in a1ac453
- 🐛 Threads are now closable even if the author is a webhook (#308) - by @MarcusOtter in 4a44980
- 🐛 Variables starting with
THREAD_
can now be used in reply message (#346) - by @MarcusOtter in f30124a - 🐛 Commands are no longer mixed up between servers (#290) - by @MarcusOtter in c42f31d
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
- 🔊 More logs in the console which makes it easier to troubleshoot Needle - by @MarcusOtter in 7610168
- ♻ Cleaned up Help.ts - by @EdvinAldi in #403
New Contributors
- @EdvinAldi made their first contribution in #403! Thank you! ✨❤️
v3.2.0
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 Unitech/pm2#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
v3.1.0 is mainly a hotfix to get Needle working again after a Discord API bug: discord/discord-api-docs#5573, but also has some more fixes/features.
Full Changelog: v3.0.0...v3.1.0
New features
- 🩹 Allow new lines in settings and remove old NEW tags by @Lofty-Brambles in #319
- ✨ Add 1 second slowmode option by @nchristopher in #321
Bug fixes
- 🚑 Fix thread creation issue by @MarcusOtter in #335
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
- 🔥 Remove CLIENT_ID env variable by @nchristopher in #322
New Contributors
- @Lofty-Brambles made their first contribution in #319! Thank you! ✨❤️
v3.0.0
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 |
---|---|---|
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 |
---|---|---|---|
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) |
---|---|---|
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 |
---|---|---|
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 beca...
v2.2.0
v2.2.0 introduces some minor feature additions and bug fixes.
See full changelog: 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
v2.1.0 introduces some minor feature additions and bug fixes. See full changelog: 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 theManage 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
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: v1.0...v2.0.0.
General
- We changed the license from
GPL-3.0
toAGPL-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 (#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 -
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 OR -
You can now have new-lines in custom auto-thread messages (#37)
When writing the value forcustom-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.0
🎉