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 useNostrum.Api
, but you are encouraged to slowly move
to more specific modules. See theNostrum.Api
module, PR #641 and
commit503c87f22bdb671b90880133d1fd6c78a874b097
for more
information.- You might receive a lot of deprecation warnings about this. Sorry,
but theNostrum.Api
module 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,
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
(forGUILD_FORUM
channels)default_forum_layout
(also forGUILD_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 upcomingNostrum.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.