All notable changes to this project will be documented in this file.
This file is updated every release with the use of towncrier
from the fragments found under changes/
.
.. towncrier release notes start
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)
- Renamed
nick
argument tonickname
for edit member and add user to guild REST methods. (#1095)
- 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)
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)
- 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)
-
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)
-
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)
-
Deprecated
RESTClient.command_builder
andRESTClient.create_application_command
.You should switch to
RESTClient.slash_command_builder
andRESTClient.create_slash_command
respectively. (#924)
-
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)
- 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)
- Add min_value and max_value to
CommandOption
(#920) - Add
flags
attribute to Application (#939) - Implement member timeouts
- Add
raw_communication_disabled_until
andcommunication_disabled_until
toMember
- Add
MODERATE_MEMBERS
toPermission
- Add
communication_disabled_until
attribute toedit_member
(#940)
- Add
- 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 deserialization - Don't set
message.member
toundefined.UNDEFINED
on partial message deserialization if message was sent by a webhook (#933)
- Remove case for setting
- 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)
- The new event is now
- 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)
- 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)
USE_PUBLIC_THREADS
andUSE_PRIVATE_THREADS
permissions have been removed in favour of new threads permission- New permissions are split into
CREATE_PUBLIC_THREADS
,CREATE_PRIVATE_THREADS
andSEND_MESSAGES_IN_THREADS
(#799)
- New permissions are split into
GuildAvailableEvent
will no longer fire when the bot joins new guilds- Some
guild_create
-ish methods were renamed toguild_available
(#809)
- Some
- Remove
hikari.errors.RESTErrorCode
enum- The 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)
- 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)
- 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)
- This affected the
- Add docstrings to the remaining undocumented
GatewayBot
methods (#804)
MessageType.APPLICATION_COMMAND
renamed toMessageType.CHAT_INPUT
(#775)- Removal of deprecated
hikari.impl.bot.BotApp
andhikari.traits.BotAware
- Use
hikari.impl.bot.GatewayBot
andhikari.traits.GatewayBotAware
respectively instead (#778)
- Use
- 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)
- Default retry count is 3, with a hard top of 5. This can be changed with the
- 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)
- 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
endpoints- Fix deserialization of embeds in
create_interaction_response
- Fix
TypeErrors
raised inedit_initial_response
when passing a list of embeds (#779)
- Fix deserialization of embeds in
- Improve typing for message objects and message update methods
- Fix the use of
typing.Optional
whereundefined.UndefinedOr
should have been used - Remove 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 available- Fix logic in
is_human
to account for the changes in the typing - Set
PartialMessage.member
toundefined.UNDEFINED
when Discord edit the message to display an embed/attachment (#783)
- Fix the use of
CommandInteractionOption.value
will now be cast to aSnowflake
for types 6-9 (#785)
- Fix typo in Colorish docstring (#755)
- Remove duplicate raise type in REST and guilds docstrings (#768)
- Fix various spelling mistakes (#773)
This file was added during the development of version 2.0.0.dev102, so nothing before that is documented.