Stateless component manager for hikari with type-safe API.
Project description
Flare
A stateless component manager for hikari with a type-safe API.
Features:
- buttons, select menus, and modals
- easy and powerful API for simple interactions
- saves data between bot restarts by utilizing the component's custom id
If you want to create complex component interactions hikari-miru may be a better choice.
Installation
pip install hikari-flare
Links
Example
import flare
import hikari
@flare.button(label="Test Button", style=hikari.ButtonStyle.PRIMARY)
async def test_button(
ctx: flare.MessageContext,
) -> None:
await ctx.respond(content="Hello World!")
@flare.button(label="State Button", style=hikari.ButtonStyle.PRIMARY)
async def state_button(
ctx: flare.MessageContext,
# Args and kwargs are used for state.
number: int,
) -> None:
await ctx.respond(content=f"The number is: {number}")
bot = hikari.GatewayBot("...")
flare.install(bot)
@bot.listen()
async def buttons(event: hikari.GuildMessageCreateEvent) -> None:
# Ignore other bots or webhooks pinging us
if not event.is_human:
return
me = bot.get_me()
# If the bot is mentioned
if me.id in event.message.user_mentions_ids:
# Set custom state for components that need it
row = await flare.Row(test_button(), state_button(5))
message = await event.message.respond("Hello Flare!", component=row)
bot.run()
The API can also be accessed at a lower level if components need typed attributes.
class Button(flare.Button):
a: int
b: str
async def callback(self, ctx: flare.Context) -> None:
typing_extensions.reveal_type(self.a) # int
typing_extensions.reveal_type(self.b) # str
await ctx.respond("Hello flare!")
Converters
Converters allow you to serialize and deserialize types. Here in an example of an int converter.
Converters for int, str, typing.Literal, and enum.Enum are built in.
class IntConverter(Converter[int]):
async def to_str(self, obj: int) -> str:
return str(obj)
async def from_str(self, obj: str) -> int:
return int(obj)
flare.add_converter(
int, # The typehint this converter is used for.
IntConverter # The converter class.
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hikari-flare-0.1.3.tar.gz.
File metadata
- Download URL: hikari-flare-0.1.3.tar.gz
- Upload date:
- Size: 33.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4410b7a0942a5dd3615f925d49b5cb40cc1ff3b383ca2ebd36ee2f012a69bce
|
|
| MD5 |
a502c1a1dbcc340fabce75e97ea06e96
|
|
| BLAKE2b-256 |
aac2e93dc04a4d1336826da3a16c7270837e479bd83ee6ccb9a8003fc7a4c319
|
File details
Details for the file hikari_flare-0.1.3-py3-none-any.whl.
File metadata
- Download URL: hikari_flare-0.1.3-py3-none-any.whl
- Upload date:
- Size: 38.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
837938068daf10c3199a8e754ed51e410093d79879158c5b29ad395bd083a8d3
|
|
| MD5 |
6f0c821fa0f2bbe114fb9d809968d38d
|
|
| BLAKE2b-256 |
78b0d9e6e3b1e8a43f4d5e36a4c92933130d221dc2b5f704b601668e77fa975a
|