Skip to main content

An alternative component handler for hikari, inspired by discord.py's views.

Project description

PyPI Documentation Status

hikari-miru

An optional component handler for hikari, inspired by discord.py's views.

Installation

To install miru, run the following command:

python3 -m pip install -U hikari-miru

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

python3 -m miru

Usage

import hikari
import miru


class MyView(miru.View):

    @miru.button(label="Rock", emoji="\N{ROCK}", style=hikari.ButtonStyle.PRIMARY)
    async def rock_button(self, button: miru.Button, ctx: miru.ViewContext) -> None:
        await ctx.respond("Paper!")

    @miru.button(label="Paper", emoji="\N{SCROLL}", style=hikari.ButtonStyle.PRIMARY)
    async def paper_button(self, button: miru.Button, ctx: miru.ViewContext) -> None:
        await ctx.respond("Scissors!")

    @miru.button(label="Scissors", emoji="\N{BLACK SCISSORS}", style=hikari.ButtonStyle.PRIMARY)
    async def scissors_button(self, button: miru.Button, ctx: miru.ViewContext) -> None:
        await ctx.respond("Rock!")

    @miru.button(emoji="\N{BLACK SQUARE FOR STOP}", style=hikari.ButtonStyle.DANGER, row=1)
    async def stop_button(self, button: miru.Button, ctx: miru.ViewContext) -> None:
        self.stop() # Stop listening for interactions


bot = hikari.GatewayBot(token="...")
miru.install(bot) # Load miru and attach it to the bot instance.


@bot.listen()
async def buttons(event: hikari.GuildMessageCreateEvent) -> None:

    # Ignore 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:
        view = MyView(timeout=60)  # Create a new view
        message = await event.message.respond("Rock Paper Scissors!", components=view)
        await view.start(message)  # Start listening for interactions
        await view.wait() # Optionally, wait until the view times out or gets stopped
        await event.message.respond("Thank you for playing!")

bot.run()

For more examples see examples, or refer to the documentation.

Extensions

miru has two extensions built-in:

  • ext.nav - To make it easier to build navigators (sometimes called paginators).
  • ext.menu - To make it easier to create nested menus.

Check the corresponding documentation and the examples on how to use them.

Issues and support

For general usage help or questions, see the #miru channel in the hikari discord, if you have found a bug or have a feature request, feel free to open an issue!

Contributing

See Contributing

Links

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-miru-3.4.0.tar.gz (45.3 kB view details)

Uploaded Source

Built Distribution

hikari_miru-3.4.0-py3-none-any.whl (84.9 kB view details)

Uploaded Python 3

File details

Details for the file hikari-miru-3.4.0.tar.gz.

File metadata

  • Download URL: hikari-miru-3.4.0.tar.gz
  • Upload date:
  • Size: 45.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for hikari-miru-3.4.0.tar.gz
Algorithm Hash digest
SHA256 c5ce35e0a2e720689b417ccac4080252f3d7b3c8e53c9b641e8a7bd9fdbbd95d
MD5 99fe1f13c8b2908c5e2777c3dc1cb334
BLAKE2b-256 7d159a4a6452342a69c37105bb3c786b41b2c7aea5764c9bbbd791a350ab7bf3

See more details on using hashes here.

File details

Details for the file hikari_miru-3.4.0-py3-none-any.whl.

File metadata

  • Download URL: hikari_miru-3.4.0-py3-none-any.whl
  • Upload date:
  • Size: 84.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for hikari_miru-3.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4bc9fa1833c1a6a69baccd64603af44f015c26294d2bd16aa16db0a6b61c167b
MD5 f1f844c1332879f85efcc3d4329b0dff
BLAKE2b-256 60f99867cff1fc0eb1566b6cd370d0d13f8989780c8e19e5c5b124b3aa2f461a

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