An alternative component handler for hikari, inspired by discord.py's views.
Project description
hikari-miru
A component handler for hikari, aimed at making the creation & management of Discord UI components easy.
[!TIP] Like what you see? Check out arc, a command handler with a focus on type-safety and correctness.
Installation
To install miru, run the following command:
pip install -U hikari-miru
To check if miru has successfully installed or not, run the following:
python3 -m miru
# On Windows you may need to run:
py -m miru
Usage
import hikari
import miru
# REST bots are also supported
bot = hikari.GatewayBot(token="...")
# Wrap the bot in a miru client
client = miru.Client(bot)
class MyView(miru.View):
@miru.button(label="Rock", emoji="\N{ROCK}", style=hikari.ButtonStyle.PRIMARY)
async def rock_button(self, ctx: miru.ViewContext, button: miru.Button) -> None:
await ctx.respond("Paper!")
@miru.button(label="Paper", emoji="\N{SCROLL}", style=hikari.ButtonStyle.PRIMARY)
async def paper_button(self, ctx: miru.ViewContext, button: miru.Button) -> None:
await ctx.respond("Scissors!")
@miru.button(label="Scissors", emoji="\N{BLACK SCISSORS}", style=hikari.ButtonStyle.PRIMARY)
async def scissors_button(self, ctx: miru.ViewContext, button: miru.Button) -> None:
await ctx.respond("Rock!")
@miru.button(emoji="\N{BLACK SQUARE FOR STOP}", style=hikari.ButtonStyle.DANGER, row=1)
async def stop_button(self, ctx: miru.ViewContext, button: miru.Button) -> None:
self.stop() # Stop listening for interactions
@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() # Create a new view
# Send the view as message components
await event.message.respond("Rock Paper Scissors!", components=view)
client.start_view(view) # Attach to the client & start it
bot.run()
To get started with miru
, see the documentation, or the examples.
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
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
Hashes for hikari_miru-4.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a9e25cea76b6dbf6ec0efd64ac2f0b0a4c51de31a19bc6c101779c5ca06ea80 |
|
MD5 | 2fd5c2ac78c28463a1c70053c8612d98 |
|
BLAKE2b-256 | a72108aaaafba09d193898ba296d2903d16f6cef696ff6770a7626e613e6aff4 |