Skip to main content

A python wrapper for discord slash-commands

Project description

dislash.py

It's a small extending library for discord.py, that allows to register slash-commands and respond to relevant interactions with them.

Installation

Run any of these commands in terminal to install the lib:

pip install dislash.py
python3 -m pip install discord.py

Examples

Note, that this library does require discord.py installed.

Registering a slash-command

import discord
from discord.ext import commands
from dislash import slash_commands
# Import slash-command constructor
from dislash.interactions import *

# Init a client instance using discord.py
client = commands.Bot(
    command_prefix="!",
    intents=discord.Intents.default()
)
# Init a <SlashClient> instance
slash_client = slash_commands.SlashClient(client)

@client.event
async def on_connect():
    # Let's register a /random command
    sc = SlashCommand(
        name="random",
        description="Returns a random number from the given range",
        options=[
            Option(
                name="start",
                description="Enter a number",
                required=True,
                type=4   # Type-4 means INTEGER
                # Read more about types in docs
            ),
            Option(
                name="end",
                description="Enter a number",
                required=True,
                type=4
            )
        ]
    )
    # Post this command via API
    await slash_client.register_global_slash_command(sc)
    # Discord API uploads global commands for more than 1 hour
    # That's why I highly recommend .register_guild_slash_command for testing:
    await slash_client.register_guild_slash_command(guild_id, sc)

You should register a slash-command only once in order to make it work. You can always edit it if you want, using .edit_global_slash_command / .edit_guild_slash_command methods.

Responding to a slash-command

import discord
from random import randint
from discord.ext import commands
from dislash import slash_commands
# Import slash-command constructor
from dislash.interactions import *

# Init a client instance using discord.py
client = commands.Bot(
    command_prefix="!",
    intents=discord.Intents.default()
)
# Init a <SlashClient> instance
# in order to start tracking slash-command interactions
slash_client = slash_commands.SlashClient(client)


# Let's make a function that responds to /random
@slash_client.command()
async def random(interaction):
    # interaction is instance of `interactions.Interaction`
    # Read more about it in docs
    a = interaction.data.get_option('start').value
    b = interaction.data.get_option('end').value
    if b < a: a, b = b, a
    await interaction.reply(randint(a, b))

Project details


Release history Release notifications | RSS feed

This version

0.0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dislash.py-0.0.2.tar.gz (9.5 kB view hashes)

Uploaded Source

Built Distribution

dislash.py-0.0.2-py3-none-any.whl (9.4 kB view hashes)

Uploaded Python 3

Supported by

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