hikari-arc 2.0.0__tar.gz → 2.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.github/workflows/ci.yml +4 -4
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.github/workflows/docs.yml +1 -1
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.github/workflows/publish.yml +1 -1
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/PKG-INFO +3 -3
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/client.py +3 -3
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/slash.py +58 -18
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/context/base.py +9 -1
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/about.py +1 -1
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/utils/hooks/basic.py +0 -3
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/changelog.md +11 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/pyproject.toml +9 -9
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_command.py +3 -0
- hikari_arc-2.1.1/uv.lock +1739 -0
- hikari_arc-2.0.0/uv.lock +0 -1669
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.editorconfig +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.gitattributes +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.github/FUNDING.yml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.github/ISSUE_TEMPLATE/suggestion.yml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.gitignore +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.idea/.gitignore +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.idea/externalDependencies.xml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.idea/hikari-arc.iml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.idea/modules.xml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.idea/vcs.xml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.vscode/extensions.json +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.vscode/python.code-snippets +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.vscode/settings.json +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/.vscode/tasks.json +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/CONTRIBUTING.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/LICENSE +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/README.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/__main__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/client.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/command.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/concurrency_limiting.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/error_handler.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/hookable.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/limiter.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/option.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/abc/plugin.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/message.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/attachment.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/bool.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/channel.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/custom/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/custom/color.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/custom/emoji.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/custom/member.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/float.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/int.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/mentionable.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/role.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/str.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/option/user.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/command/user.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/context/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/context/autocomplete.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/errors.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/events.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/ext/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/extension.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/deprecation.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/options.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/sigparse.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/sync.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/types.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/internal/version.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/locale.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/plugin.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/py.typed +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/utils/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/utils/concurrency_limiter.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/utils/hooks/__init__.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/utils/hooks/limiters.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/utils/loops.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/arc/utils/ratelimiter.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/README.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/client.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/command.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/concurrency_limiting.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/error_handler.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/hooks.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/index.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/limiter.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/option.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/abc/plugin.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/client.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/command/index.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/command/message.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/command/option.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/command/slash.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/command/user.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/context.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/errors.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/events.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/index.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/localization.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/plugin.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/utils/concurrency_limiter.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/utils/hooks/basic.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/utils/hooks/limiters.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/utils/index.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/utils/loops.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/api_reference/utils/ratelimiter.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/app_commands.webp +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/composed-darkmode.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/composed-darkmode.svg +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/composed-darkmode@2x.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/composed-lightmode.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/composed-lightmode.svg +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/composed-lightmode@2x.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/logo-darkmode.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/logo-darkmode.svg +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/logo-darkmode@2x.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/logo-lightmode.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/logo-lightmode.svg +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/logo-lightmode@2x.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/name-darkmode.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/name-darkmode.svg +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/name-darkmode@2x.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/name-lightmode.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/name-lightmode.svg +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/branding/name-lightmode@2x.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/context_menu.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/ephemeral.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/getting-started/image-1.webp +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/getting-started/image-2.webp +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/getting-started/image-3.webp +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/getting-started/image-4.webp +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/getting-started/image-5.webp +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/installation_contexts.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/inter_flow_dark.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/inter_flow_light.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/subcommands.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/typing/image-0.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/typing/image-1.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/typing/image-2.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/typing/image-3.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/typing/image-4.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/typing/image-5.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/assets/user_install.png +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/getting_started.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/command_groups.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/concurrency_limiting.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/context_menu.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/dependency_injection.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/error_handling.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/events.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/hikari_fundamentals.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/hooks.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/index.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/installation_contexts.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/interactions.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/loops.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/options.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/plugins_extensions.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/startup_shutdown.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/guides/typing.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/index.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/docs/stylesheets/additional_coloring.css +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/README.md +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/basic.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/context_menu.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/custom_client.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/dependency_injection.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/error_handling.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/extension_example/bot.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/extension_example/extensions/bar.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/extension_example/extensions/foo.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/hooks.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/limiters.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/limiting_concurrency.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/localization.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/loops.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/gateway/options.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/basic.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/context_menu.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/custom_client.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/dependency_injection.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/error_handling.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/extension_example/bot.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/extension_example/extensions/bar.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/extension_example/extensions/foo.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/hooks.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/limiters.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/limiting_concurrency.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/localization.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/loops.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/examples/rest/options.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/mkdocs.yml +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/noxfile.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/mock_client.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_client.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_context_command.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_di.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_extension/extension.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_extension/test_main.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_inheritance.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_options.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_sigparse.py +0 -0
- {hikari_arc-2.0.0 → hikari_arc-2.1.1}/tests/test_slash.py +0 -0
|
@@ -11,7 +11,7 @@ jobs:
|
|
|
11
11
|
- name: Install uv
|
|
12
12
|
uses: astral-sh/setup-uv@v5
|
|
13
13
|
with:
|
|
14
|
-
version: "0.6
|
|
14
|
+
version: "0.7.6"
|
|
15
15
|
python-version: "3.13"
|
|
16
16
|
|
|
17
17
|
- name: Run ruff via nox
|
|
@@ -26,7 +26,7 @@ jobs:
|
|
|
26
26
|
- name: Install uv
|
|
27
27
|
uses: astral-sh/setup-uv@v5
|
|
28
28
|
with:
|
|
29
|
-
version: "0.6
|
|
29
|
+
version: "0.7.6"
|
|
30
30
|
python-version: "3.13"
|
|
31
31
|
|
|
32
32
|
- name: Run pyright via nox
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
- name: Install uv
|
|
42
42
|
uses: astral-sh/setup-uv@v5
|
|
43
43
|
with:
|
|
44
|
-
version: "0.6
|
|
44
|
+
version: "0.7.6"
|
|
45
45
|
python-version: "3.13"
|
|
46
46
|
|
|
47
47
|
- name: Run slotscheck via nox
|
|
@@ -61,7 +61,7 @@ jobs:
|
|
|
61
61
|
- name: Install uv with Python ${{ matrix.python-version }}
|
|
62
62
|
uses: astral-sh/setup-uv@v5
|
|
63
63
|
with:
|
|
64
|
-
version: "0.6
|
|
64
|
+
version: "0.7.6"
|
|
65
65
|
python-version: ${{ matrix.python-version }}
|
|
66
66
|
- run: |
|
|
67
67
|
uv run nox -s pytest
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hikari-arc
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: A command handler for hikari with a focus on type-safety and correctness.
|
|
5
5
|
Project-URL: Homepage, https://arc.hypergonial.com
|
|
6
6
|
Project-URL: Documentation, https://arc.hypergonial.com
|
|
@@ -27,12 +27,12 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
27
27
|
Requires-Python: >=3.10
|
|
28
28
|
Requires-Dist: alluka<0.4,>=0.3.3
|
|
29
29
|
Requires-Dist: attrs>=25.3.0
|
|
30
|
-
Requires-Dist: hikari>=2.
|
|
30
|
+
Requires-Dist: hikari>=2.3.3
|
|
31
31
|
Provides-Extra: cron
|
|
32
32
|
Requires-Dist: croniter==5.0.1; extra == 'cron'
|
|
33
33
|
Requires-Dist: types-croniter==5.0.1.20241205; extra == 'cron'
|
|
34
34
|
Provides-Extra: rest
|
|
35
|
-
Requires-Dist: hikari[server]>=2.
|
|
35
|
+
Requires-Dist: hikari[server]>=2.3.3; extra == 'rest'
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
37
37
|
|
|
38
38
|
<div align="center">
|
|
@@ -125,11 +125,11 @@ class GatewayClientBase(Client[GatewayBotT]):
|
|
|
125
125
|
|
|
126
126
|
async def _on_gatewaybot_startup(self, event: hikari.StartedEvent) -> None:
|
|
127
127
|
await self._on_startup()
|
|
128
|
-
|
|
128
|
+
self.app.event_manager.dispatch(StartedEvent(self), return_tasks=False)
|
|
129
129
|
|
|
130
130
|
async def _on_gatewaybot_shutdown(self, event: hikari.StoppingEvent) -> None:
|
|
131
131
|
await self._on_shutdown()
|
|
132
|
-
|
|
132
|
+
self.app.event_manager.dispatch(StoppingEvent(self), return_tasks=False)
|
|
133
133
|
|
|
134
134
|
async def _on_gatewaybot_interaction_create(self, event: hikari.InteractionCreateEvent) -> None:
|
|
135
135
|
if isinstance(event.interaction, hikari.CommandInteraction):
|
|
@@ -141,7 +141,7 @@ class GatewayClientBase(Client[GatewayBotT]):
|
|
|
141
141
|
if not self.app.event_manager.get_listeners(CommandErrorEvent):
|
|
142
142
|
return await super()._on_error(ctx, exception)
|
|
143
143
|
|
|
144
|
-
self.app.event_manager.dispatch(CommandErrorEvent(self, ctx, exception))
|
|
144
|
+
self.app.event_manager.dispatch(CommandErrorEvent(self, ctx, exception), return_tasks=False)
|
|
145
145
|
|
|
146
146
|
def subscribe(self, event_type: type[EventT], callback: EventCallbackT[EventT]) -> None:
|
|
147
147
|
"""Subscribe to an event.
|
|
@@ -13,7 +13,7 @@ from arc.errors import AutocompleteError, CommandInvokeError
|
|
|
13
13
|
from arc.internal.options import resolve_options
|
|
14
14
|
from arc.internal.sigparse import parse_command_signature
|
|
15
15
|
from arc.internal.types import ClientT, CommandCallbackT, HookT, PostHookT, ResponseBuilderT, SlashCommandLike
|
|
16
|
-
from arc.locale import CommandLocaleRequest
|
|
16
|
+
from arc.locale import CommandLocaleRequest
|
|
17
17
|
|
|
18
18
|
if t.TYPE_CHECKING:
|
|
19
19
|
from asyncio.futures import Future
|
|
@@ -183,10 +183,13 @@ class SlashCommand(CallableCommandBase[ClientT, hikari.api.SlashCommandBuilder])
|
|
|
183
183
|
|
|
184
184
|
def _request_command_locale(self) -> None:
|
|
185
185
|
"""Request the locale for this command."""
|
|
186
|
-
if self.
|
|
186
|
+
if self._client is None or not self._client._provided_locales or not self._client._command_locale_provider:
|
|
187
187
|
return
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
for option in self.options.values():
|
|
190
|
+
option._request_option_locale(self._client, self)
|
|
191
|
+
|
|
192
|
+
if self.name_localizations or self.description_localizations:
|
|
190
193
|
return
|
|
191
194
|
|
|
192
195
|
name_locales: dict[hikari.Locale, str] = {}
|
|
@@ -196,8 +199,6 @@ class SlashCommand(CallableCommandBase[ClientT, hikari.api.SlashCommandBuilder])
|
|
|
196
199
|
request = CommandLocaleRequest(self, locale, self.name)
|
|
197
200
|
resp = self._client._command_locale_provider(request)
|
|
198
201
|
|
|
199
|
-
assert isinstance(resp, LocaleResponse)
|
|
200
|
-
|
|
201
202
|
if resp.name is not None and resp.description is not None:
|
|
202
203
|
name_locales[locale] = resp.name
|
|
203
204
|
desc_locales[locale] = resp.description
|
|
@@ -205,9 +206,6 @@ class SlashCommand(CallableCommandBase[ClientT, hikari.api.SlashCommandBuilder])
|
|
|
205
206
|
self.name_localizations: t.Mapping[hikari.Locale, str] = name_locales
|
|
206
207
|
self.description_localizations: t.Mapping[hikari.Locale, str] = desc_locales
|
|
207
208
|
|
|
208
|
-
for option in self.options.values():
|
|
209
|
-
option._request_option_locale(self._client, self)
|
|
210
|
-
|
|
211
209
|
|
|
212
210
|
@attr.define(slots=True, kw_only=True)
|
|
213
211
|
class SlashGroup(CommandBase[ClientT, hikari.api.SlashCommandBuilder]):
|
|
@@ -387,6 +385,9 @@ class SlashGroup(CommandBase[ClientT, hikari.api.SlashCommandBuilder]):
|
|
|
387
385
|
if self.name_localizations or self.description_localizations or self._client is None:
|
|
388
386
|
return
|
|
389
387
|
|
|
388
|
+
for sub in self.children.values():
|
|
389
|
+
sub._request_command_locale(self._client)
|
|
390
|
+
|
|
390
391
|
if not self._client._provided_locales or not self._client._command_locale_provider:
|
|
391
392
|
return
|
|
392
393
|
|
|
@@ -404,9 +405,6 @@ class SlashGroup(CommandBase[ClientT, hikari.api.SlashCommandBuilder]):
|
|
|
404
405
|
self.name_localizations: t.Mapping[hikari.Locale, str] = name_locales
|
|
405
406
|
self.description_localizations: t.Mapping[hikari.Locale, str] = desc_locales
|
|
406
407
|
|
|
407
|
-
for sub in self.children.values():
|
|
408
|
-
sub._request_option_locale(self._client, self)
|
|
409
|
-
|
|
410
408
|
@t.overload
|
|
411
409
|
def include(self) -> t.Callable[[SlashSubCommand[ClientT]], SlashSubCommand[ClientT]]: ...
|
|
412
410
|
|
|
@@ -551,11 +549,32 @@ class SlashSubGroup(SubCommandBase[ClientT, SlashGroup[ClientT]]):
|
|
|
551
549
|
assert self._parent is not None
|
|
552
550
|
await self._parent._handle_exception(ctx, exc)
|
|
553
551
|
|
|
554
|
-
def
|
|
555
|
-
|
|
552
|
+
def _request_command_locale(self, client: Client[t.Any]) -> None:
|
|
553
|
+
if not client._provided_locales or not client._command_locale_provider:
|
|
554
|
+
return
|
|
555
|
+
|
|
556
|
+
for sub in self.children.values():
|
|
557
|
+
sub._request_command_locale(client)
|
|
558
|
+
|
|
559
|
+
if self.name_localizations or self.description_localizations:
|
|
560
|
+
return
|
|
561
|
+
|
|
562
|
+
name_locales = {}
|
|
563
|
+
desc_locales = {}
|
|
564
|
+
|
|
565
|
+
for locale in client._provided_locales:
|
|
566
|
+
request = CommandLocaleRequest(self, locale, self.name)
|
|
567
|
+
resp = client._command_locale_provider(request)
|
|
568
|
+
|
|
569
|
+
if resp.name is not None and resp.description is not None:
|
|
570
|
+
name_locales[locale] = resp.name
|
|
571
|
+
desc_locales[locale] = resp.description
|
|
572
|
+
|
|
573
|
+
self.name_localizations: t.Mapping[hikari.Locale, str] = name_locales
|
|
574
|
+
self.description_localizations: t.Mapping[hikari.Locale, str] = desc_locales
|
|
556
575
|
|
|
557
|
-
|
|
558
|
-
|
|
576
|
+
def _request_option_locale(self, client: Client[t.Any], command: CommandProto) -> None:
|
|
577
|
+
raise RuntimeError("_request_option_locale should not be called on a subgroup. (This is a bug)")
|
|
559
578
|
|
|
560
579
|
@t.overload
|
|
561
580
|
def include(self) -> t.Callable[[SlashSubCommand[ClientT]], SlashSubCommand[ClientT]]: ...
|
|
@@ -705,11 +724,32 @@ class SlashSubCommand(
|
|
|
705
724
|
assert self._parent is not None
|
|
706
725
|
await self._parent._handle_exception(ctx, e)
|
|
707
726
|
|
|
708
|
-
def
|
|
709
|
-
|
|
727
|
+
def _request_command_locale(self, client: Client[t.Any]) -> None:
|
|
728
|
+
if not client._provided_locales or not client._command_locale_provider:
|
|
729
|
+
return
|
|
710
730
|
|
|
711
731
|
for option in self.options.values():
|
|
712
|
-
option._request_option_locale(client,
|
|
732
|
+
option._request_option_locale(client, self)
|
|
733
|
+
|
|
734
|
+
if self.name_localizations or self.description_localizations:
|
|
735
|
+
return
|
|
736
|
+
|
|
737
|
+
name_locales = {}
|
|
738
|
+
desc_locales = {}
|
|
739
|
+
|
|
740
|
+
for locale in client._provided_locales:
|
|
741
|
+
request = CommandLocaleRequest(self, locale, self.name)
|
|
742
|
+
resp = client._command_locale_provider(request)
|
|
743
|
+
|
|
744
|
+
if resp.name is not None and resp.description is not None:
|
|
745
|
+
name_locales[locale] = resp.name
|
|
746
|
+
desc_locales[locale] = resp.description
|
|
747
|
+
|
|
748
|
+
self.name_localizations: t.Mapping[hikari.Locale, str] = name_locales
|
|
749
|
+
self.description_localizations: t.Mapping[hikari.Locale, str] = desc_locales
|
|
750
|
+
|
|
751
|
+
def _request_option_locale(self, client: Client[t.Any], command: CommandProto) -> None:
|
|
752
|
+
raise RuntimeError("_request_option_locale should not be called on a subcommand. (This is a bug)")
|
|
713
753
|
|
|
714
754
|
async def __call__(self, ctx: Context[ClientT], *args: t.Any, **kwargs: t.Any) -> None:
|
|
715
755
|
"""Invoke this subcommand with the given context.
|
|
@@ -60,6 +60,7 @@ class _ResponseGlue:
|
|
|
60
60
|
attachments: t.Sequence[hikari.Resourceish] | hikari.UndefinedType = hikari.UNDEFINED
|
|
61
61
|
embed: hikari.Embed | hikari.UndefinedType = hikari.UNDEFINED
|
|
62
62
|
embeds: t.Sequence[hikari.Embed] | hikari.UndefinedType = hikari.UNDEFINED
|
|
63
|
+
poll: hikari.UndefinedType | hikari.api.PollBuilder = hikari.UNDEFINED
|
|
63
64
|
mentions_everyone: bool | hikari.UndefinedType = hikari.UNDEFINED
|
|
64
65
|
user_mentions: t.Sequence[hikari.Snowflakeish | hikari.PartialUser] | bool | hikari.UndefinedType = hikari.UNDEFINED
|
|
65
66
|
role_mentions: t.Sequence[hikari.Snowflakeish | hikari.PartialRole] | bool | hikari.UndefinedType = hikari.UNDEFINED
|
|
@@ -75,6 +76,7 @@ class _ResponseGlue:
|
|
|
75
76
|
"attachments": self.attachments,
|
|
76
77
|
"embed": self.embed,
|
|
77
78
|
"embeds": self.embeds,
|
|
79
|
+
"poll": self.poll,
|
|
78
80
|
"mentions_everyone": self.mentions_everyone,
|
|
79
81
|
"user_mentions": self.user_mentions,
|
|
80
82
|
"role_mentions": self.role_mentions,
|
|
@@ -92,6 +94,7 @@ class _ResponseGlue:
|
|
|
92
94
|
components=components or ([self.component] if self.component else hikari.UNDEFINED),
|
|
93
95
|
attachments=attachments or ([self.attachment] if self.attachment else hikari.UNDEFINED),
|
|
94
96
|
embeds=embeds or ([self.embed] if self.embed else hikari.UNDEFINED),
|
|
97
|
+
poll=self.poll,
|
|
95
98
|
mentions_everyone=self.mentions_everyone,
|
|
96
99
|
user_mentions=self.user_mentions,
|
|
97
100
|
role_mentions=self.role_mentions,
|
|
@@ -332,7 +335,7 @@ class Context(t.Generic[ClientT]):
|
|
|
332
335
|
return self._interaction.guild_locale
|
|
333
336
|
|
|
334
337
|
@property
|
|
335
|
-
def app_permissions(self) -> hikari.Permissions
|
|
338
|
+
def app_permissions(self) -> hikari.Permissions:
|
|
336
339
|
"""The permissions of the bot. Will be None in DMs."""
|
|
337
340
|
return self._interaction.app_permissions
|
|
338
341
|
|
|
@@ -655,6 +658,7 @@ class Context(t.Generic[ClientT]):
|
|
|
655
658
|
components: t.Sequence[hikari.api.ComponentBuilder] | hikari.UndefinedType = hikari.UNDEFINED,
|
|
656
659
|
embed: hikari.Embed | hikari.UndefinedType = hikari.UNDEFINED,
|
|
657
660
|
embeds: t.Sequence[hikari.Embed] | hikari.UndefinedType = hikari.UNDEFINED,
|
|
661
|
+
poll: hikari.UndefinedType | hikari.api.PollBuilder = hikari.UNDEFINED,
|
|
658
662
|
mentions_everyone: bool | hikari.UndefinedType = hikari.UNDEFINED,
|
|
659
663
|
user_mentions: t.Sequence[hikari.Snowflakeish | hikari.PartialUser]
|
|
660
664
|
| bool
|
|
@@ -685,6 +689,8 @@ class Context(t.Generic[ClientT]):
|
|
|
685
689
|
An embed to add to this message.
|
|
686
690
|
embeds : Sequence[hikari.Embed] | hikari.UndefinedType
|
|
687
691
|
A sequence of embeds to add to this message.
|
|
692
|
+
poll : hikari.UndefinedType | hikari.api.PollBuilder
|
|
693
|
+
If provided, the poll to set on the message.
|
|
688
694
|
mentions_everyone : bool | hikari.UndefinedType
|
|
689
695
|
If True, mentioning @everyone will be allowed.
|
|
690
696
|
user_mentions : hikari.SnowflakeishSequence[hikari.PartialUser] | bool | hikari.UndefinedType
|
|
@@ -712,6 +718,7 @@ class Context(t.Generic[ClientT]):
|
|
|
712
718
|
attachments=attachments,
|
|
713
719
|
embed=embed,
|
|
714
720
|
embeds=embeds,
|
|
721
|
+
poll=poll,
|
|
715
722
|
mentions_everyone=mentions_everyone,
|
|
716
723
|
user_mentions=user_mentions,
|
|
717
724
|
role_mentions=role_mentions,
|
|
@@ -729,6 +736,7 @@ class Context(t.Generic[ClientT]):
|
|
|
729
736
|
attachments=attachments,
|
|
730
737
|
embed=embed,
|
|
731
738
|
embeds=embeds,
|
|
739
|
+
poll=poll,
|
|
732
740
|
mentions_everyone=mentions_everyone,
|
|
733
741
|
user_mentions=user_mentions,
|
|
734
742
|
role_mentions=role_mentions,
|
|
@@ -118,9 +118,6 @@ def has_permissions(perms: hikari.Permissions) -> t.Callable[[Context[t.Any]], H
|
|
|
118
118
|
|
|
119
119
|
def _bot_has_permissions(ctx: Context[t.Any], perms: hikari.Permissions) -> HookResult:
|
|
120
120
|
"""Check if the bot has the specified permissions."""
|
|
121
|
-
if ctx.app_permissions is None:
|
|
122
|
-
raise GuildOnlyError("This command can only be used in a guild.")
|
|
123
|
-
|
|
124
121
|
missing_perms = ~ctx.app_permissions & perms
|
|
125
122
|
|
|
126
123
|
if missing_perms is not hikari.Permissions.NONE:
|
|
@@ -9,6 +9,17 @@ hide:
|
|
|
9
9
|
|
|
10
10
|
Here you can find all the changelogs for `hikari-arc`.
|
|
11
11
|
|
|
12
|
+
## 2.1.1
|
|
13
|
+
|
|
14
|
+
- Fix breaking change in hikari `v2.3.3` causing events dispatching to fail.
|
|
15
|
+
- Fix option locale provider being invoked for slash subcommands and subgroups instead of the command locale provider.
|
|
16
|
+
|
|
17
|
+
## 2.1.0
|
|
18
|
+
|
|
19
|
+
- Add `poll` to `Context.respond`.
|
|
20
|
+
- Adjust `Context.app_permissions` typing to match hikari, removing `None` from the union type.
|
|
21
|
+
- Bump hikari to `v2.2.1`.
|
|
22
|
+
|
|
12
23
|
## 2.0.0
|
|
13
24
|
|
|
14
25
|
- **Breaking:** Remove `is_dm_enabled` from all command, plugin, and client types. Use the newly added `invocation_contexts` instead.
|
|
@@ -23,22 +23,22 @@ classifiers = [
|
|
|
23
23
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
24
24
|
]
|
|
25
25
|
requires-python = ">=3.10"
|
|
26
|
-
dependencies = ["alluka>=0.3.3,<0.4", "attrs>=25.3.0", "hikari>=2.
|
|
26
|
+
dependencies = ["alluka>=0.3.3,<0.4", "attrs>=25.3.0", "hikari>=2.3.3"]
|
|
27
27
|
|
|
28
28
|
[project.optional-dependencies]
|
|
29
29
|
cron = ["croniter==5.0.1", "types-croniter==5.0.1.20241205"]
|
|
30
|
-
rest = ["hikari[server]>=2.
|
|
30
|
+
rest = ["hikari[server]>=2.3.3"]
|
|
31
31
|
|
|
32
32
|
[dependency-groups]
|
|
33
33
|
dev = [
|
|
34
|
-
"nox>=2025.
|
|
35
|
-
"pyright
|
|
34
|
+
"nox>=2025.5.1",
|
|
35
|
+
"pyright==1.1.397",
|
|
36
36
|
"pytest>=8.3",
|
|
37
|
-
"pytest-asyncio>=0.
|
|
37
|
+
"pytest-asyncio>=0.26",
|
|
38
38
|
"ruff>=0.11",
|
|
39
39
|
"slotscheck>=0.19",
|
|
40
|
-
"typing-extensions>=4.
|
|
41
|
-
"uv>=0.
|
|
40
|
+
"typing-extensions>=4.13",
|
|
41
|
+
"uv>=0.7",
|
|
42
42
|
"colorama>=0.4.6; sys_platform == 'win32'",
|
|
43
43
|
]
|
|
44
44
|
docs = [
|
|
@@ -46,8 +46,8 @@ docs = [
|
|
|
46
46
|
"griffe-inherited-docstrings>=1.1.1",
|
|
47
47
|
"mkdocs>=1.6.1",
|
|
48
48
|
"mkdocs-glightbox>=0.4.0",
|
|
49
|
-
"mkdocs-material[imaging]>=9.6.
|
|
50
|
-
"mkdocstrings-python>=1.16.
|
|
49
|
+
"mkdocs-material[imaging]>=9.6.14",
|
|
50
|
+
"mkdocstrings-python>=1.16.10",
|
|
51
51
|
]
|
|
52
52
|
|
|
53
53
|
[project.urls]
|
|
@@ -29,6 +29,7 @@ def build_user(app: hikari.GatewayBot, id: hikari.Snowflakeish = 123456789) -> h
|
|
|
29
29
|
global_name="Padoru",
|
|
30
30
|
accent_color=None,
|
|
31
31
|
flags=hikari.UserFlag.NONE,
|
|
32
|
+
avatar_decoration=None,
|
|
32
33
|
discriminator="1234",
|
|
33
34
|
is_bot=False,
|
|
34
35
|
is_system=False,
|
|
@@ -51,6 +52,8 @@ def build_member(
|
|
|
51
52
|
nickname=None,
|
|
52
53
|
raw_communication_disabled_until=None,
|
|
53
54
|
role_ids=role_ids or [],
|
|
55
|
+
guild_avatar_decoration=None,
|
|
56
|
+
guild_banner_hash=None,
|
|
54
57
|
guild_avatar_hash=None,
|
|
55
58
|
joined_at=datetime.datetime(2021, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc),
|
|
56
59
|
permissions=permissions or hikari.Permissions.NONE,
|