Download Latest Version 0.10.4 - Roaring Ratelimiter source code.tar.gz (29.9 MB)
Email in envelope

Get an email when there's a new version of Nostrum

Home / v0.10.1
Name Modified Size InfoDownloads / Week
Parent folder
0.10.1 - Explosive Mania source code.tar.gz 2025-02-05 29.9 MB
0.10.1 - Explosive Mania source code.zip 2025-02-05 30.0 MB
README.md 2025-02-05 4.8 kB
Totals: 3 Items   59.9 MB 0

nostrum 0.10.1 fixes a number of bugs and contains some improvements that once again fortifies its stand as the best Discord library on the globe.

I would like to thank MiniAppleTheApple for the improvements to nostrum's components, Kyle Boe for the massive API module decomposition, the channel field updates for forum channels and further bugfixes in our components, The Major for the optimizations on nostrum's UserCache and work on benchmarking and fixing bugs around nostrum's caches, including helping the QLC removal process, a process solely needed because Craig Dazey decided a few years ago to give me contributor rights, a change he still regrets occasionally. Thank you also to Brandt Hill who never ceases to submit fixes for nostrum's voice functionality, ensuring that our transmissions are top of the shelf.

Furthermore, nostrum's QLC functionality was removed again. While it is a cool idea in theory, unfortunately the issue is that QLC is not able to properly optimize queries we run in some usecases, and runs queries very inefficiently in other cases. Instead, we reverted back to the previous caching behavior logic, which needs more work to implement but results in better performance as each function can be written independently. Potentially, Ecto might be interesting for the cache as also used in coxir, which is part of the "nostrum 2025" plan under the section "Incorporating Adam, Merging Coxir And Adopting His Lovely Dog".

Deprecations

  • The Nostrum.Api module was split up into multiple smaller modules. You can still use Nostrum.Api, but you are encouraged to slowly move to more specific modules. See the Nostrum.Api module, PR [#641] and commit 503c87f22bdb671b90880133d1fd6c78a874b097 for more information.
  • You might receive a lot of deprecation warnings about this. Sorry, but the Nostrum.Api module has become a decent mess.
  • Bang functions in the module were also deprecated.
  • Thanks to Kyle Boe for the herculean effort.

Enhancements

  • nostrum now supports the following new components:
  • Nostrum.Struct.Component.ChannelSelect
  • Nostrum.Struct.Component.MentionableSelect
  • Nostrum.Struct.Component.RoleSelect
  • Nostrum.Struct.Component.UserSelect
  • Nostrum.Struct.Component gained the following fields:
  • channel_types
  • default_values, together with the Nostrum.Struct.Component.DefaultValue module.
  • Action rows now accept the new component types.
  • Nostrum.Struct.Channel gained the following fields:
  • default_sort_order (for GUILD_FORUM channels)
  • default_forum_layout (also for GUILD_FORUM channels)
  • nostrum now uses the voice gateway version 8 instead of 4. In a series of pull requests that still baffle me to this day, Brandt Hill also updated our crypto code to make sure that your bot's voice transmissions are rock solid secure.
  • nostrum now fans out ratelimiter requests across all running ratelimiters, which are registered under a process group. See Nostrum.Api.RatelimiterGroup for details. The Multi-Node section of Nostrum.Api.Ratelimiter has also been updated accordingly.
  • UserCache.get was optimized to not run through QLC, which results in better performance.
  • Nostrum.Cache.MemberCache now documents the required config for the cache to work. Thanks to Joe Sweeney.
  • Tasks started from consumers that crash will now have their errors logged as opposed to crashing the consumer. Thanks to The Major for the implementation, and Leastrio for a small bugfix related to the logging call.

Bugfixes

  • The endpoint for webhook_message_edit was wrong. Thanks to foldcat for the fix.
  • Abnormally closed requests will now properly display the sender of the requests in the ratelimiter.
  • Nostrum.Cache.GuildCache.ETS will no longer crash when updating a missing guild.
  • The ffmpeg output format has been fixed.
  • Some requests were missing Content-Type headers, these will be sent now.
  • Mysterious voice packet emissions will be logged together with the closest NATO base that might have emitted them for further introspection and analysis by the upcoming Nostrum.SIGINT package instead of crashing the voice session. Thanks to Brandt Hill for the fix.
  • A typo in Nostrum.Consumer.message_poll_vote_remove has been fixed. Thanks to Carlos Souza.
  • The standard error of ports started by Nostrum.Voice.Ports is no longer sent to standard out.

Internal changes

  • Benchmarks for the GuildCache.{get,update,delete} functions were added. Thanks to The Major.
  • Run CI against Elixir 1.18 and build docs on 1.18.
Source: README.md, updated 2025-02-05