Metadata-Version: 2.4
Name: hikari-arc
Version: 2.0.0
Summary: A command handler for hikari with a focus on type-safety and correctness.
Project-URL: Homepage, https://arc.hypergonial.com
Project-URL: Documentation, https://arc.hypergonial.com
Project-URL: Repository, https://github.com/hypergonial/hikari-arc
Project-URL: Issues, https://github.com/hypergonial/hikari-arc/issues
Project-URL: Changelog, https://arc.hypergonial.com/changelog/
Author-email: hypergonial <git@hypergonial.com>
Maintainer-email: hypergonial <git@hypergonial.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: alluka<0.4,>=0.3.3
Requires-Dist: attrs>=25.3.0
Requires-Dist: hikari>=2.2.0
Provides-Extra: cron
Requires-Dist: croniter==5.0.1; extra == 'cron'
Requires-Dist: types-croniter==5.0.1.20241205; extra == 'cron'
Provides-Extra: rest
Requires-Dist: hikari[server]>=2.2.0; extra == 'rest'
Description-Content-Type: text/markdown

<div align="center">
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="./docs/assets/branding/composed-darkmode.svg">
        <source media="(prefers-color-scheme: light)" srcset="./docs/assets/branding/composed-lightmode.svg">
        <img alt="The arc logo" src="./docs/assets/branding/composed-lightmode.svg" width="30%">
    </picture>
</div>

---

<div align="center">

[![PyPI](https://img.shields.io/pypi/v/hikari-arc)](https://pypi.org/project/hikari-arc)
[![CI](https://github.com/hypergonial/hikari-arc/actions/workflows/ci.yml/badge.svg)](https://github.com/hypergonial/hikari-arc/actions/workflows/ci.yml)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json)](https://github.com/charliermarsh/ruff)
![Pyright](https://badgen.net/badge/Pyright/strict/2A6DB2)

</div>

A command handler for [hikari](https://github.com/hikari-py/hikari) with a focus on type-safety and correctness.

## Installation

To install arc, run the following command:

```sh
pip install -U hikari-arc
```

To check if arc has successfully installed or not, run the following:

```sh
python3 -m arc
# On Windows you may need to run:
py -m arc
```

> [!NOTE]
> `hikari-arc` requires a Python version of *at least* 3.10.

If you're just getting started, you may also use the [template repository](https://github.com/hypergonial/arc-template) to get started with.

## Basic Usage

```py
import hikari
import arc

bot = hikari.GatewayBot("TOKEN") # or hikari.RESTBot
client = arc.GatewayClient(bot) # or arc.RESTClient

@client.include
@arc.slash_command("hi", "Say hi!")
async def ping(
    ctx: arc.GatewayContext,
    user: arc.Option[hikari.User, arc.UserParams("The user to say hi to.")]
) -> None:
    await ctx.respond(f"Hey {user.mention}!")

bot.run()
```

To get started with `arc`, see the [documentation](https://arc.hypergonial.com), or the [examples](https://github.com/hypergonial/hikari-arc/tree/main/examples).

## Issues and support

For general usage help or questions, see the [hikari discord](https://discord.gg/hikari), if you have found a bug or have a feature request, feel free to [open an issue](https://github.com/hypergonial/hikari-arc/issues/new/choose)!

## Contributing

See [Contributing](./CONTRIBUTING.md).

## Acknowledgements

`arc` is in large part a combination of all the parts I like in other command handlers, with my own spin on it. The following projects have inspired me and aided me greatly in the design of this library:

- [`hikari-lightbulb`](https://github.com/tandemdude/hikari-lightbulb) - The library initially started as a reimagination of lightbulb, it inherits a similar project structure and terminology.
- [`Tanjun`](https://github.com/FasterSpeeding/Tanjun) - For the idea of using `typing.Annotated` and [dependency injection](https://arc.hypergonial.com/guides/dependency_injection/) in a command handler. `arc` also uses the same dependency injection library, [`Alluka`](https://github.com/FasterSpeeding/Alluka), under the hood.
- [`hikari-crescent`](https://github.com/hikari-crescent/hikari-crescent) The design of [hooks](https://arc.hypergonial.com/guides/hooks/) is largely inspired by `crescent`.
- [`FastAPI`](https://github.com/tiangolo/fastapi) - Some design ideas and most of the [documentation](https://arc.hypergonial.com/) [configuration](https://github.com/hypergonial/hikari-arc/blob/main/mkdocs.yml) derives from `FastAPI`.
- The `arc` logo was made by [@PythonTryHard](https://github.com/PythonTryHard).


## Links

- [**Documentation**](https://arc.hypergonial.com)
- [**Examples**](https://github.com/hypergonial/hikari-arc/tree/main/examples)
- [**License**](https://github.com/hypergonial/hikari-arc/blob/main/LICENSE)
