Changelogs#
Here you can find all the changelogs for hikari-arc
.
1.4.0#
- Add new optiontype with converter for
hikari.Emoji
. - Work around
hikari
bug to solve command sync failing when a command has localizations. - Bump
hikari
tov2.0.0
. - Add Python 3.13 support.
v1.3.4#
- Fix included basic hooks not working due to signature parsing.
v1.3.3#
- Fix hooks defined as async callable classes not working. (For instance, limiters)
v1.3.2#
- Add
IntervalLoop.set_interval()
to change the loop interval after loop creation. - Fix error handling with slash subcommands sometimes causing infinite recursion.
v1.3.1#
- Add the ability to configure if an
IntervalLoop
should run immediately after being started or not. - Fix
CronLoop
running immediately after being started.
v1.3.0#
- Deprecate
Client.set_startup_hook
andClient.set_shutdown_hook
. These will be removed inv2.0.0
. Use the newly addedClient.add_startup_hook
andClient.add_shutdown_hook
instead. - Add options with converters. These options do not exist on Discord's end, arc simply tries to convert a more primitive optiontype into the requested one, failing if it is not possible.
- Add new optiontypes with converters for
hikari.Member
andhikari.Color
. - Add
arc.OptionConverterFailureError
when a converter fails to convert an option value. - Add support for injecting dependencies contextually to command callbacks, hooks, and error handlers via
Client.add_injection_hook
andClient.remove_injection_hook
. - Add support for multiple startup & shutdown hooks via
Client.add_startup_hook
andClient.add_shutdown_hook
respectively. - Inject dependencies by default into pre/post-execution hooks & error handlers.
- Fix client hooks being executed twice if a command is added to a plugin.
- Fix options mapping not taking name overrides into account.
- Bump alluka to
0.3+
.
v1.2.1#
- Fix
arc.utils.global_concurrency
missing alimit
argument. - Fix slash subcommands failing to resolve autodefer settings.
v1.2.0#
- Optimize command syncing by using bulk endpoints for global app commands as well, making it much faster.
- Improve command syncing error messages.
- Fix
@Client.listen
and@Plugin.listen
failing to parse event types with generics from function signatures.
v1.1.0#
- Add
Client.create_task
to make it easier to create "fire and forget" tasks. - Add
Client.is_started
andClient.wait_until_started
for more convenient lifecycle management. - Add the ability to pass an already existing injector instance to
Client
via theinjector=
kwarg. If not passed, a new injector will be created by default, like before. - Set the client as a type dependency upon instantiation.
- Stabilize
Context.issued_response
. This property returns a boolean that isTrue
if the underlying interaction has already received an initial response. - Fix
hikari.User | hikari.Role | None
not being parsed as mentionable option. - Fix edgecase where options defaulted to
None
would be ignored in Python 3.10.
v1.0.0#
This marks the first stable release of arc
, meaning that from this point on, the project follows semantic versioning, and no breaking changes will happen (until an eventual 2.0).
- Add loops. Loops can be used to repeatedly call a given coroutine function with a specific interval or cron set.
- Add concurrency limiters. Concurrency limiters can be used to prevent users from invoking a command that already has a specific amount of instances running.
- Add
arc.StartedEvent
andarc.StoppingEvent
to gateway clients to enable managing lifecycle via events. - Fix command groups always being republished when command syncing.
In additon to these changes, the documentation got a major refresh, adding & extending guides where needed.
v0.6.0#
- Add
Context.get_option()
to access options outside the command callback in a type-safe manner. - Add
Client.walk_commands()
andPlugin.walk_commands()
to iterate over all commands & subcommands of a given type in a type-safe manner. - Add
CallableCommandProto.display_name
,SlashCommand.make_mention()
,SlashSubCommand.make_mention()
. - Change
Context.respond_with_builder()
to attempt a followup message when the interaction has an initial response and a message builder was passed. - Remove the
acquire()
method fromLimiterProto
to make it easier to implement custom limiters. - Split
arc.utils.hooks.RateLimiter
intoarc.utils.RateLimiter
andarc.utils.hooks.LimiterHook
. This allowsarc.utils.RateLimiter
to be used independently of an arc context object.
v0.5.0#
- Breaking: Re-order OptionParams object parameters.
description=
is now the first & only positional argument.name=
has been moved to the second parameter and is now keyword-only. - Add limiters.
- Add
autodefer
,default_permissions
,is_dm_enabled
andis_nsfw
to client & plugin types. If set, these settings will be applied to all commands added to the client/plugin. They can still however be overridden by individual commands. - Add
GatewayClientBase
andRESTClientBase
to aid in creating custom client types. Examples on how to do this have also been added to the repository. - Fix
InteractionResponse.retrieve_message()
failing due to incorrect assertion. - Fix subcommands & subgroups unable to have hooks or an error handler.
v0.4.0#
- Add localization support through locale providers. See the localization example for more.
- Add
@GatewayClient.listen
,GatewayClient.subscribe
,GatewayClient.unsubscribe
. - Add
@GatewayPlugin.listen
,GatewayPlugin.subscribe
,GatewayPlugin.unsubscribe
. - Make all first-order decorators work as second-order decorators as well.
v0.3.0#
- Add hooks.
- Add lifecycle hooks to
Client
along with an error handler. - Declare
attrs
explicitly as a dependency.
v0.2.0#
- Breaking: Rename
Context.edit_response()
toContext.edit_initial_response()
. This is to make the purpose of the function clearer. - Breaking: Remove
arc.Injected[T]
typehint alias. Usearc.inject()
instead. This is to avoid confusion between the two. - Breaking: Rename
GatewayPlugin
toGatewayPluginBase
andRESTPlugin
toRESTPluginBase
. - Add
GatewayContext
aliasingContext[GatewayClient]
- Add
RESTContext
aliasingContext[RESTClient]
- Add
GatewayPlugin
aliasingGatewayPluginBase[GatewayClient]
- Add
RESTPlugin
aliasingRESTPlugin[RESTClient]
- Add support for passing mappings to
choices=
when specifying option params. - Move
ABC
s used internally underarc.abc
. - Improve handling missing responses via REST by adding
NoResponseIssuedError
. - Fix
@plugin.inject_dependencies
failing when located outside of the main module.
v0.1.3#
- Fix
Context.respond_with_builder
issuing the response twice in REST. - Do not export
abc
s to top-level.
v0.1.2#
- Add
Context.respond_with_modal
- Add
BoolOption
andBoolParams
- Improve
Context.respond_with_builder
typing.
v0.1.1#
- Initial release