Skip to main content

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

🗃️ | Docs
📦 | Pypi

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


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)

Uploaded Source

Built Distribution

hikari_flare-0.1.3-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

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

Hashes for hikari-flare-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a4410b7a0942a5dd3615f925d49b5cb40cc1ff3b383ca2ebd36ee2f012a69bce
MD5 a502c1a1dbcc340fabce75e97ea06e96
BLAKE2b-256 aac2e93dc04a4d1336826da3a16c7270837e479bd83ee6ccb9a8003fc7a4c319

See more details on using hashes here.

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

Hashes for hikari_flare-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 837938068daf10c3199a8e754ed51e410093d79879158c5b29ad395bd083a8d3
MD5 6f0c821fa0f2bbe114fb9d809968d38d
BLAKE2b-256 78b0d9e6e3b1e8a43f4d5e36a4c92933130d221dc2b5f704b601668e77fa975a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page