0.10.1 - Explosive Mania
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.Apimodule was split up into multiple smaller modules. You can still useNostrum.Api, but you are encouraged to slowly move to more specific modules. See theNostrum.Apimodule, PR #641 and commit503c87f22bdb671b90880133d1fd6c78a874b097for more information.- You might receive a lot of deprecation warnings about this. Sorry,
but the
Nostrum.Apimodule has become a decent mess. - Bang functions in the module were also deprecated.
- Thanks to Kyle Boe for the herculean effort.
- You might receive a lot of deprecation warnings about this. Sorry,
but the
Enhancements
- nostrum now supports the following new components:
Nostrum.Struct.Component.ChannelSelectNostrum.Struct.Component.MentionableSelectNostrum.Struct.Component.RoleSelectNostrum.Struct.Component.UserSelect
Nostrum.Struct.Componentgained the following fields:channel_typesdefault_values, together with theNostrum.Struct.Component.DefaultValuemodule.
- Action rows now accept the new component types.
Nostrum.Struct.Channelgained the following fields:default_sort_order(forGUILD_FORUMchannels)default_forum_layout(also forGUILD_FORUMchannels)
- 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.RatelimiterGroupfor details. The Multi-Node section ofNostrum.Api.Ratelimiterhas also been updated accordingly. UserCache.getwas optimized to not run through QLC, which results in better performance.Nostrum.Cache.MemberCachenow 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_editwas 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.ETSwill no longer crash when updating a missing guild.- The
ffmpegoutput format has been fixed. - Some requests were missing
Content-Typeheaders, 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.SIGINTpackage instead of crashing the voice session. Thanks to Brandt Hill for the fix. - A typo in
Nostrum.Consumer.message_poll_vote_removehas been fixed. Thanks to Carlos Souza. - The standard error of ports started by
Nostrum.Voice.Portsis 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.