Skip to main content

Interaction module for dico.

Project description

dico-interaction

Interaction module for dico.

Features

  • Webserver included, powered by aiohttp.
  • Easier interaction usage.

Installation

pip install -U dico-interaction

Example

Gateway Client

from dico import Client, Button, ActionRow, ButtonStyles
from dico_interaction import InteractionClient, InteractionContext

client = Client("BOT_TOKEN")
interaction = InteractionClient(client=client)


@interaction.slash(name="hello", description="Say hello.")
async def hello(ctx: InteractionContext):
    button = Button(style=ButtonStyles.PRIMARY, label="Hello!", custom_id=f"hello{ctx.id}")
    await ctx.send("Hello, World!", components=[ActionRow(button)])
    
    
@interaction.context_menu(name="say", menu_type=3)
async def say_menu(ctx: InteractionContext):
    await ctx.send(f"You said: {ctx.target.content}")
    

@interaction.component_callback("hello")
async def hello_callback(ctx: InteractionContext):
    await ctx.send("Hello again!", ephemeral=True)

client.run()

Webserver

import ssl  # SSL is forced to register your webserver URL to discord.
from dico import Button, ActionRow, ButtonStyles
from dico_interaction import InteractionClient, InteractionWebserver, InteractionContext

bot_token = ""
bot_public_key = ""

interaction = InteractionClient(respond_via_endpoint=False)
server = InteractionWebserver(bot_token, bot_public_key, interaction)


@interaction.slash(name="hello", description="Say hello.")
async def hello(ctx: InteractionContext):
    button = Button(style=ButtonStyles.PRIMARY, label="Hello!", custom_id=f"hello{ctx.id}")
    await ctx.send("Hello, World!", components=[ActionRow(button)])
    
    
@interaction.context_menu(name="say", menu_type=3)
async def say_menu(ctx: InteractionContext):
    await ctx.send(f"You said: {ctx.target.content}")
    

@interaction.component_callback("hello")
async def hello_callback(ctx: InteractionContext):
    await ctx.send("Hello again!", ephemeral=True)

ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_context.load_cert_chain("cert.pem", "privkey.pem")
server.run(host='0.0.0.0', port=1337, ssl_context=ssl_context)

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

dico-interaction-0.0.9.tar.gz (13.7 kB view hashes)

Uploaded Source

Built Distribution

dico_interaction-0.0.9-py3-none-any.whl (16.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