Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

Silk! V3 Changelog:

This document is a summarization of changes that occurred during the V3 rewrite of Silk!.

A LOT has changed in V3; this serves as an overview of the changes, and how they may impact you.

Frontend:

Commands:

Commands that were executable as a group are no longer existent. Sorry :(

The biggest change with commands in general outside of the aforementioned executable group commands being axed is certainly the fact that commands now have *nix-style command inputs.

What's this mean?

It means some commands work based on named inputs rather than the typical positional inputs.

In laimans terms, this means you can do s!command arg1 arg3 --option arg2.

This allows for certain commands to have optional arguments while keeping our code simple. Config commands are a good example of this.

Furthermore, lots of commands have had their descriptions updated to be more verbose.

On top of this, our help formatter has been rewritten! In combination with the *nix-style options, the help command displays information in a "man pages"-style embed.


Command List Changelog:

  • Avatar: Now supports the --guild switch, showing the user's guild avatar

  • Remind: Now supports natrual language, e.g. s!remind me do dishes in 20 minutes

  • Mute: Now supports Discord's Timeout feature; this is opt-in and may require updating Silk's role permission or re-authorizing it.

  • Config: ➜ Edit: ➜ Phishing: Improved and more verbose description and combined enabling/disabling into the same command ➜ Invites: Combined previous invite commands into a single command, accepting six options ➜ Mute: Allows for the --use-timeout option, which will use Discord's timeout feature instead of a role-based mute.*

* Timeouts are capped at 28 days. This is a limitation of Discord.


Backend:

Services:

  • Infractions were rewritten
  • Greetings were rewritten
  • Uptime was removed
  • Reminders were rewritten
  • Caching was overhauled
  • Exemptions can now be evaluated via a service
  • Member logging now provides useful information
  • Phishing detection has improved greatly

Infractions are designed to behave similarly to V2, so no notable changes will be listed here.

Greetings have been overhauled both on the frontend and backend, now allowing for greetings to be given when a user is added to a channel, as well as support for multiple greetings, each with their own condition.

Uptime (the command, and the service backing it) has been removed as it was unstable and suspected to be the source of a memory leak. Furthermore, it is no longer feasible to log uptime in the manner used in V2.

Reminders were rewritten from the ground up again, providing a better experience when it comes to dispatching the reminder, and in theory more stability when it comes to dispatching those reminders.

Caching was given an uplift thanks to Remora's design, utilizing a contiguous in memory cache that allows for customizing what gets held in memory. Furthermore, Silk's caching was given an overhaul especially when it comes to caching guilds. Caching large servers (10,000+ members) now takes less than a millisecond instead of the previous 2-30 seconds.

Exemptions are also properly utilized in V3, with the hopes to give server moderators more control over how silk functions on their server. Exemptions can apply to users, roles, or channels, and will be accessible via the configuration commands.

On top of logging that/when a user joined, and perhaps their account age, Silk! now logs that a user has an account age of less then 2 or 14 days, and when they've joined more than 4 times on this server. This does not apply retroactively.

Phishing detection has been improved significantly over V2 with some slight modifications to our websocket code, which should provide a more consistent connection to the API that provides the enormous list (8100+ links) to Silk. There are also plans to improve this even more by using community-provided APIs to detect phishing when Silk's main source doesn't detect it. This API is provided by Alex, and a link can be found here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment