Skip to content

Latest commit

 

History

History
83 lines (59 loc) · 2.17 KB

README.md

File metadata and controls

83 lines (59 loc) · 2.17 KB

NOTE

disnake-compass

An extension for disnake aimed at making component interactions with listeners somewhat less cumbersome.
Requires disnake version 2.10.0 or above and python 3.10.0 or above.

Key Features

  • Smoothly integrates with disnake,
  • Intuitive dataclass-like syntax to declare component classes,
  • Fully stateless and persistent by permanently storing state inside custom ids,
  • Custom id matching, parsing, conversion and creation are all managed for you,
  • Highly customisable!

Installing

Python 3.10 or higher and disnake 2.10.0 or higher are required

To install the extension, run the following command in your command prompt/shell:

# Linux/macOS
python3 -m pip install -U disnake-compass

# Windows
py -3 -m pip install -U disnake-compass

It can then be imported as

import disnake_compass

Examples

A very simple component that increments its label each time you click it can be written as follows:

import disnake
from disnake.ext import commands
import disnake_compass


bot = commands.InteractionBot()
manager = disnake_compass.get_manager()
manager.add_to_client(bot)


@manager.register
class MyButton(disnake_compass.RichButton):
    count: int

    async def callback(self, interaction: disnake.MessageInteraction[disnake.Client]) -> None:
        self.count += 1
        self.label = str(self.count)

        await interaction.response.edit_message(components=self)


@bot.slash_command()
async def test_button(interaction: disnake.CommandInteraction[disnake.Client]) -> None:
    component = await MyButton(label="0", count=0).as_ui_component()

    await interaction.send(components=component)


bot.run("TOKEN")

For extra examples, please see the examples folder.

To-Do

  • Implement modals,
  • Improve Cog support by somehow injecting the cog instance,
  • Contribution guidelines,

Contributing

Any contributions are welcome, feel free to open an issue or submit a pull request if you would like to see something added. Contribution guidelines will come soon.