Changelog#
Attention
Major and minor releases also include the changes specified in prior development releases.
Unreleased changes (2022-12-05)#
No significant changes.
2.0.0.dev113 (2022-12-04)#
Breaking Changes#
Remove previously deprecated functionality.
This includes:
Message.mentions
nick
argument in rest methodsedit_permission_overwrites
,edit_my_nick
andcommand_builder
rest methodsCacheView.iterator
(#1347)
Deprecation#
Deprecate
RESTClientImpl.build_action_row
in favour ofRESTClientImpl.build_message_action_row
. (#1002)
Features#
Implement modal interactions.
Additionally, it is now guaranteed (typing-wise) that top level components will be an action row (#1002)
Add new
UserFlag.ACTIVE_DEVELOPER
. (#1355)Allow specifying a filename to
hikari.files.URL
. (#1368)Only subscribe to voice events when needed in the voice manager. (#1369)
Add functionality to create and deserialize age-restricted (NSFW) commands. (#1382)
Threads cache. (#1384)
Bugfixes#
Allow re-uploading attachments when creating messages (#1367)
Fix error caused when disconnecting the bot and having active voice connections. (#1369)
Remove incorrect
is_nsfw
field from threads.The “NSFW” status is inherited from the parent object and not sent for threads.
This also involved moving the base attribute from
GuildChannel
toPermissibleGuildChannel
. (#1386)
Documentation Improvements#
Documentation overhaul and move to docs.hikari-py.dev domain. (#1118)
2.0.0.dev112 (2022-11-06)#
Breaking Changes#
Moved permission overwrite mapping and permission related methods from
GuildChannel
toPermissibleGuildChannel
. (#811)Support v10 attachments edits
This includes breaking changes, features and things to look out for when editing messages:
Modifying attachments in messages that contain embeds with any image attached to them now requires the images of that embed image to be re-passed in the edit or they will be lost.
attachment
andattachments
in message edits now support passing anAttachment
object to keep existing attachments.replace_attachments
has been removed, as it is now the default.attachment
andattachments
now supportsNone
to replicate the behaviour of fully removing all attachments.
InteractionMessageBuilder.clear_attachments
has been implemented to remove existing attachments from messages. (#1260)
Features#
Thread support for REST requests and gateway events. (#811)
Startup and shutdown callbacks for the RESTBot interface/impl. (#999)
Support specifying
with_counts
andwith_expiration
inRESTClient.fetch_invite
(#1330)Support for including the
SUPPRESS_EMBEDS
flag while creating a message. (#1331)Add
MANAGE_EVENTS
permission tohikari.Permissions
(#1334)
Bugfixes#
Wrong typehint for
InviteGuild.features
. (#1307)Fix aiohttp error “charset must not be in content type” when using
InteractionServer
(#1320)The REST list methods (e.g.
fetch_channels
) no-longer raisehikari.errors.UnrecognisedEntityError
when they encounter an unknown type. (#1337)Fix deprecation warnings in CPython3.11 in
hikari.internal.ux
. (#1344)
2.0.0.dev111 (2022-09-26)#
Breaking Changes#
Lifetime improvements breaking changes:
GatewayBot.join
’suntil_close
argument removed.GatewayShardImpl.get_user_id
is no longer async and will now always be available.GatewayBotAware
no longer defines the default parameters forjoin
,start
andrun
. It is left to implementation detail. (#1204)
Remove support for ProcessPoolExecutor executor when reading files
It is much more efficient to use a threadpool executor for I/O actions like this one
Due to the nature of process pool, we were also not able to perform proper chunking when reading off the file (#1273)
Deprecation#
Deprecate
CacheView.iterator
in favour of using theitertools
module. (#1289)
Features#
Add python 3.11-dev support. (#847)
Support for Application Command Localizations. (#1141)
Improve components lifetimes:
GatewayBot
:General speedups.
Fix a lot of edge cases of hard crashes if the application shuts unexpectedly.
More consistent signal handling.
run
’sshard_ids
argument can now be atyping.Sequence
.Improved logging.
RESTBot
:Consistent signal handling inline with
GatewayBot
.Improved logging.
Improved loop closing.
GatewayShardImpl
:New
is_connected
property to determine whether the shard is connected to the gateway.Faster websocket pulling and heartbeating.
Improved error handling.
Rate limiting changes:
Chunking no longer has its own special ratelimit. Now it is shared with the rest of “non-priority” packages sent, which is of 117/60s (3 less than the hard limit).
“priority” packages currently only include heartbeating. (#1204)
Implement slash option min/max length fields (#1216)
Add
mention
property toPartialChannel
. (#1221)Implement new Gateway reconnect logic enforced by Discord. (#1245)
Bugfixes#
Lifetime improvements bugfixes:
GatewayShardImpl
can now be instantiated out of an async environment for consistency with other components.Correct signal handling in
RESTBot
. (#1204)
Improve
BadRequestError
’s error string. (#1213)Fix
hikari.impl.VoiceImpl.connect_to
silently failing if the guild or voice channel do not exist by providing a timeout. (#1242)dm_permission
now correctly defaults toTrue
instead ofFalse
when parsing command objects from Discord. (#1243)Fix float precision issues when creating a snowflake from a datetime object. (#1247)
Fix
reposition_channels
to use the correct route. (#1259)Allow for
replace_attachments
kwarg to be used inRESTClient.create_initial_response
. (#1266)Ignore guild create events which contain unavailable guilds (#1284)
2.0.0.dev110 (2022-08-08)#
Breaking Changes#
Removed case of
Member.mention
returning bang (!
) mention, as it is deprecated by Discord. (#1207)
Deprecation#
RESTClient.edit_permission_overwrites
renamed toRESTClient.edit_permission_overwrite
(#1195)
Features#
Add
hikari.events.StickersUpdateEvent
and relevant cache internals. Add sticker related public methods ontohikari.impl.CacheImpl
andhikari.guilds.Guild
. (#1126)GuildVoiceChannel
now inherits fromTextableGuildChannel
instead ofGuildChannel
. (#1189)Add the
app_permissions
field to command and component interactions. (#1201)Add application command badge (#1225)
Bugfixes#
Fix how CommandBuilder handles
default_member_permissions
to match the behaviour on PartialCommand. (#1212)
2.0.0.dev109 (2022-06-26)#
Breaking Changes#
Removal of all application commands v1 related fields and endpoints.
Discord has completely disabled some endpoints, so we unfortunately can’t deprecate them instead of removing them (#1148)
Removed the
resolved
attribute fromAutocompleteInteraction
as autocomplete interactions never have resolved objects. (#1152)build
methods are now typed as returningMutableMapping[str, typing.Any]
. (#1164)
Deprecation#
messages.Mentions
object deprecatedAlternatives can be found in the base message object (#1149)
Features#
Add
create
method toCommandBuilder
. (#1016)Support for attachments in REST-based interaction responses. (#1048)
Add option to disable automatic member chunking. Added the
auto_chunk_members
kwarg toGatewayBot
andEventManagerImpl
, which whenFalse
will disable automatic member chunking. (#1084)Allow passing multiple event types to the listen decorator. Parse union type hints for events if listen decorator is empty. (#1103)
Animated guild banner support. (#1116)
Implement application commands permission v2.
New
default_member_permissions
andis_dm_enabled
related fields.Added
hikari.events.application_events.ApplicationCommandPermissionsUpdate
.Added
APPLICATION_COMMAND_PERMISSION_UPDATE
audit log entry (#1148)
Bugfixes#
Improved pyright support. (#1108)
RESTClientImpl.fetch_bans
now return aLazyIterator
to allow pagination of values. (#1119)Fix unicode decode error caused by
latin-1
encoding when sending the banner. (#1120)Don’t error on an out-of-spec HTTP status code (e.g one of Cloudflare’s custom status codes).
HTTPResponseError.status
may now be of typehttp.HTTPStatus
orint
. (#1121)Fix name of polish locale (
hikari.Locale.OL
->hikari.Locale.PL
) (#1144)Properly garbage collect message references in the cache
Properly deserialize
PartialMessage.referenced_message
as a partial message (#1192)
2.0.0.dev108 (2022-03-27)#
Breaking Changes#
hikari.config
has now been split up tohikari.api.config
andhikari.impl.config
to avoid leaking impl detail. This also means that config types are no-longer accessible at the top level (directly onhikari
). (#1067)Hide the entity factory’s component deserialize methods. (#1074)
Remove nonce parameter from create message. This was purposely removed from the bot api documentation inferring that its no-longer officially supported. (#1075)
Remove
VoiceRegion.is_vip
due to Discord no longer sending it. (#1086)Remove store sku related application fields and store channels. (#1092)
Deprecation#
Renamed
nick
argument tonickname
for edit member and add user to guild REST methods. (#1095)
Features#
Scheduled event support. (#1056)
get_guild()
is now available onhikari.GuildChannel
. (#1057)Optimize receiving websocket JSON for the happy path. (#1058)
The threaded file reader now persists the open file pointer while the context manager is active. (#1073)
Optimize event dispatching by only deserializing events when they are needed. (#1094)
Add
hikari.locales.Locale
to help with Discord locale strings. (#1090)
Bugfixes#
fetch_my_guilds
no-longer returns duplicate guilds nor makes unnecessary (duplicated) requests whennewest_first
is set toTrue
. (#1059)Add
InviteEvent
tohikari.events.channel_events.__all__
,hikari.events.__all__
andhikari.__all__
. (#1065)Fix incorrect type for ATTACHMENT option values. (#1066)
EventManager.get_listeners
now correctly defines polymorphic and returns accordingly. (#1094)Take the major param for webhook without token endpoints when handling bucket ratelimits. (#1102)
Fix incorrect value for
GuildFeature.MORE_STICKERS
. (#1989)
2.0.0.dev107 (2022-03-04)#
Features#
Added a
total_length
function tohikari.embeds.Embed
Takes into account the character length of the embed’s title, description, fields (all field names and values), footer, and author combined.
Useful for determining if the embed exceeds Discord’s 6000 character limit. (#796)
Added attachment command option type support. (#1015)
Add MESSAGE_CONTENT intent. (#1021)
Custom substitutions can now be used in
hikari.internal.ux.print_banner
. (#1022)get_guild()
is now available onhikari.Member
. (#1025)The notorious “failed to communicate with server” log message is now a warning rather than an error. (#1041)
hikari.applications
,hikari.files
,hikari.snowflakes
andhikari.undefined
are now all explicitly exported byhikari.__init__
, allowing pyright to see them without a direct import. (#1042)
Bugfixes#
Fix bucket lock not being released on errors while being acquired, which locked the bucket infinitely (#841)
enable_signal_handlers
now only defaults toTrue
when the run/start method is called in the main thread. This avoids these functions from always raising when being run in a threaded environment as only the main thread can register signal handlers. (#998)Sub-command options are now properly deserialized in the autocomplete flow to
AutocompleteInteractionOption
instead ofCommandInteractionOption
. (#1012)Attempt to reconnect on a gateway
TimeoutError
. (#1014)Properly close
GatewayBot
when not fully started. (#1023)The async context manager returned by
File.stream
now errors on enter if the target file doesn’t exist to improve error handling when a file that doesn’t exist is sent as an attachment.The multiprocessing file reader strategy now expands user relative (
~
) links (like the threaded strategy). (#1046)
2.0.0.dev106 (2022-02-03)#
Breaking Changes#
Running the standard interaction server implementation now requires a
hikari[server]
install.This matches a switch over to PyNacl for the cryptographic payload validation. (#986)
Deprecation#
Deprecated
RESTClient.command_builder
andRESTClient.create_application_command
.You should switch to
RESTClient.slash_command_builder
andRESTClient.create_slash_command
respectively. (#924)
Features#
Add context menu commands and command autocomplete. (#924)
Added support for GET /users/@me/guilds/{guild}/member. (#955)
Add the
SUPPRESS_USER_JOIN_REPLIES
system channel flag. (#957)Add new message content intent related application flags. (#958)
Add the
BOT_HTTP_INTERACTIONS
user flag. (#959)Add new presence activity flags. (#960)
Add URL methods and properties for rich presence assets. (#961)
Add
locale
andguild_locale
properties to interactions. (#962)Add ability to send attachments in an interaction initial response. (#971)
Add
display_avatar_url
property tohikari.Member
andhikari.User
. (#975)old_x keyword arguments in the event factory now default to
None
. (#984)Strip tokens in the standard bot impls and RESTApp.
This helps avoids a common mistake with trailing new-lines which leads to confusing errors on request. (#989)
Bugfixes#
Relaxed typing of methods with union entry specific specialisations through overloads. (#876)
Fix deprecation warnings raised by usage of
asyncio.gather
outside of an active event loop inGatewayBot.run
. (#954)UTF-8 characters are now properly handled for audit-log reasons in REST requests. (#963)
Fix magic methods for
UserImpl
and its subclasses. (#982)
2.0.0.dev105 (2022-01-01)#
Features#
Bugfixes#
Improved pyright compatibility and introduced pyright “type-completeness” checking. (#916)
Add EventStream.filter specialisation to the abc. (#917)
Update the app command name regex to account for more recently documented support for non-english characters on Discord’s end. (#918)
Fix reposition_roles using the wrong route. (#928)
Fix
PartialSticker.image_url
not passing the hash as a string (#930)Fixed the url being generated for role icons to not erroneously insert “.png” before the file extension (#931)
Fix some bugs in message deserialization
Remove case for setting
member
andreference_message
toundefined.Undefined
in full message deserializationDon’t set
message.member
toundefined.UNDEFINED
on partial message deserialization if message was sent by a webhook (#933)
2.0.0.dev104 (2021-11-22)#
Breaking Changes#
Remove the redundant
ChannelCreateEvent
,ChannelUpdateEvent
andChannelDeleteEvent
base classes.GuildChannelCreateEvent
,GuildChannelUpdateEvent
andGuildChannelDeleteEvent
should now be used. (#862)Split bulk message delete from normal delete
The new event is now
hikari.events.message_events.GuildBulkMessageDeleteEvent
(#897)
Deprecation#
Features#
User banners and accent colors to user models. (#811)
Add attachment “is_ephemeral” field (#824)
Guild member avatars (#825)
RESTClient
edit_my_member
method which currently only takes “nick”. (#827)Add role icons (#838)
RESTClient.entity_factory property (#848)
Added component support to InteractionMessageBuilder. (#851)
EventStream.filter
now always returnsEventStream
. (#864)Allow for passing a URL for avatar_url on execute_webhook. (#889)
Add
old_message
attribute tohikari.events.message_events.MessageDelete
(#897)Switch to more relaxed requirements. (#906)
Bugfixes#
Don’t raise in bulk delete when message not found by delete single message endpoint (#828)
Setup basic handler if no handlers are defined in favour passed to
logging.config.dictConfig
(#832)InteractionMessageBuilder and RESTClientImpl.create_interaction_response now cast content to str to be consistent with the other message create methods. (#834)
create_sticker method failing due to using an incorrect body. (#858)
Fix logic for asserting listeners to not error when using defaults for other arguments (#911)
Fix error message given by action row when a conflicted type is added. (#912)
2.0.0.dev103 (2021-10-06)#
Breaking Changes#
USE_PUBLIC_THREADS
andUSE_PRIVATE_THREADS
permissions have been removed in favour of new threads permissionNew permissions are split into
CREATE_PUBLIC_THREADS
,CREATE_PRIVATE_THREADS
andSEND_MESSAGES_IN_THREADS
(#799)
GuildAvailableEvent
will no longer fire when the bot joins new guildsSome
guild_create
-ish methods were renamed toguild_available
(#809)
Remove
hikari.errors.RESTErrorCode
enumThe message that is sent with the error code is the info that the enum contained (#816)
PermissionOverwrite doesn’t inherit from Unique anymore and isn’t hashable. Equality checks now consider all its fields. (#820)
Features#
Add new
START_EMBEDDED_ACTIVITIES
permission (#798)Support new
channel_types
field inCommandOption
(#800)Add the
add_component
method tohikari.api.special_endpoints.ActionRowBuilder
(#804)Add
old_guild
attribute toGuildLeaveEvent
. (#806)Add
GuildJoinEvent
that will fire when the bot joins new guilds (#809)
Bugfixes#
Fix re-uploading forms with resources (#787)
Prevent double linking embed resources, which causes them to upload twice
This was caused by attempting to move the resource from one embed to another (#788)
Fix
BulkDeleteError
returning incorrect values formessages_skipped
This affected the
__str__
andpercentage_completion
, which also returned incorrect values (#817)
Documentation Improvements#
Add docstrings to the remaining undocumented
GatewayBot
methods (#804)
2.0.0.dev102 (2021-09-19)#
Deprecations and Removals#
Features#
Message components support (#684)
Web dashboard example with
rillrate
(#752)Sticker methods to PartialGuild (#754)
Sticker audit log event types (#756)
Helpful Application object methods (#757)
Missing audit log change keys (#759)
Retry request on 500, 502, 503 and 504 errors
Default retry count is 3, with a hard top of 5. This can be changed with the
max_retries
argument (#763)
New
is_for_emoji
methods to relevant reaction events (#770)Add
USE_EXTERNAL_STICKERS
permission (#774)Add
MessageType.CONTEXT_MENU_COMMAND
message type (#775)Add
ApplicationCommand.version
(#776)
Bugfixes#
Handling of interaction models passed to the webhook message endpoints as the “webhook” field (#759)
Fix passing
embeds
arguments increate_interaction_response
andedit_initial_response
endpointsFix deserialization of embeds in
create_interaction_response
Fix
TypeErrors
raised inedit_initial_response
when passing a list of embeds (#779)
Improve typing for message objects and message update methods
Fix the use of
typing.Optional
whereundefined.UndefinedOr
should have been usedRemove trying to acquire guild_id from the cached channel on PartialMessage
Instead, clearly document the issue Discord imposes by not sending the guild_id
is_webhook
will now returnundefined.UNDEFINED
if the information is not availableFix logic in
is_human
to account for the changes in the typingSet
PartialMessage.member
toundefined.UNDEFINED
when Discord edit the message to display an embed/attachment (#783)
CommandInteractionOption.value
will now be cast to aSnowflake
for types 6-9 (#785)
Documentation Improvements#
Fix typo in Colorish docstring (#755)
Remove duplicate raise type in REST and guilds docstrings (#768)
Fix various spelling mistakes (#773)
The changelog was added during the development of version 2.0.0.dev102, so nothing prior is documented here.