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
hikari-flare-0.1.3.tar.gz
(33.7 kB
view details)
Built Distribution
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 |