Skip to main content

User interaction utilities for discord.py.

Project description

discord.py UI

An extension package for anything relating to user input and interactions.

Ever wanted to make a prompt for your users? Maybe a cool paginator? dpy-ui will make it all happen in simple, easy to remember functions and classes.

Installation

Requires Python 3.6+

pip install -U dpy-ui

Development version

pip install -U git+https://github.com/Ikusaba-san/discord.py-ui.git

or

git clone git+https://github.com/Ikusaba-san/discord.py-ui.git
cd discord.py-ui
pip install -U .[voice]

Then once it's installed, you can import it via

from discord.ext import ui

Quick Examples

Prompt the user for some input

name = await ui.prompt(ctx, 'What is your name?')
await ctx.send(f'Ok, your name is {name}')

Choose between a list of choices

choices = ['red', 'blue', 'green', 'yellow']
colour = await ui.select(ctx, 'What is your favo(u)rite colo(u)r?', choices)

# Want buttons instead of text? No problem.

choices = [
    ui.Choice('Very Happy', button='😄'),
    ui.Choice('Happy', button='🙂'),
    ui.Choice('Neutral', button='😐'),
    ui.Choice('Sad', button='😦'),
    ui.Choice('Very Sad', button='😢'),
]
feeling = await ui.select(ctx, 'How are you feeling today?', choices)

Make a simple paginator

def some_statements():
    for i in range(20):
        yield f'This is sentence {i}'

def format_page(page):
    return f'This is a page\n{page}'

paginator = ui.Paginator(some_statements(), page_formatter=format_page)
await paginator.start(ctx)

# And to chunk it:

def format_chunk(chunk):
    # Formatters can return embeds too
    return discord.Embed(description='\n'.join(chunk))

paginator = ui.Paginator.chunked(some_statements(), 10, page_formatter=format_chunk)
await paginator.start(ctx)

Make a custom session

class MySession(ui.Session):
    async def send_initial_message(self):
        return await self.context.send('Say hi or click the thinking face.')

    @ui.button('🤔')
    async def think(self, payload):
        await self.context.send('Thinking a lot...')

    @ui.button('⏹')
    async def quit(self, payload):
        await self.stop()

    @ui.command('hello|hi')
    async def say_hello(self, message):
        await self.context.send(f'Hello, {message.author.mention}!')

session = MySession(timeout=120)
await session.start(ctx)

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

dpy-ui-0.2.1.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dpy_ui-0.2.1-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file dpy-ui-0.2.1.tar.gz.

File metadata

  • Download URL: dpy-ui-0.2.1.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for dpy-ui-0.2.1.tar.gz
Algorithm Hash digest
SHA256 396a01c463341cd47c694ad5d393486480a0cbeb8a9375af6f43f3a401e4689d
MD5 6b79500f4dbd9825510538af10102dd7
BLAKE2b-256 07dd06f39f08379ae0e3b855065ea968d0fea35d3af8d735d671797b3b239a55

See more details on using hashes here.

File details

Details for the file dpy_ui-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: dpy_ui-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for dpy_ui-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 14c9a0ff1f9314107a1d7b3bef29f5b3b7324c74ef7540323b9e37ba075b8403
MD5 e8c072f6138b250dfde0041978c81701
BLAKE2b-256 7da83eb443891c8322c496b642b746e78cfca164ac8fa2fedded6cc8300181f2

See more details on using hashes here.

Supported by

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