* Most slash command support completed, needs some debugging (and reindent) * Implement a ctx.send helper for slash commands * Add group command support * Add Option converter, fix default optional, fix help command * Add client.setup and move readying commands to that * Implement _FakeSlashMessage.from_interaction * Rename normmal_command to message_command * Add docs for added params * Add slash_command_guilds to bot and decos * Fix merge conflict * Remove name from commands.Option, wasn't used * Move slash command processing to BotBase.process_slash_commands * Create slash_only.py Basic example for slash commands * Create slash_and_message.py Basic example for mixed commands * Fix slash_command and normal_command bools * Add some basic error handling for registration * Fixed converter upload errors * Fix some logic and make an actual example * Thanks Safety Jim * docstrings, *args, and error changes * Add proper literal support * Add basic documentation on slash commands * Fix non-slash command interactions * Fix ctx.reply in slash command context * Fix typing on Context.reply * Fix multiple optional argument sorting * Update ctx.message docs to mention error instead of warning * Move slash command creation to BotBase * Fix code style issues with Black * Rearrange some stuff and add flag support * Change some errors and fix interaction.channel fixing * Fix slash command quoting for *args Co-authored-by: iDutchy <42503862+iDutchy@users.noreply.github.com> Co-authored-by: Lint Action <lint-action@samuelmeuli.com>
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
import discord
|
|
from discord.ext import commands
|
|
|
|
# Set slash commands=True when constructing your bot to enable all slash commands
|
|
# if your bot is only for a couple of servers, you can use the parameter
|
|
# `slash_command_guilds=[list, of, guild, ids]` to specify this,
|
|
# then the commands will be much faster to upload.
|
|
bot = commands.Bot("!", intents=discord.Intents(guilds=True, messages=True), slash_commands=True)
|
|
|
|
|
|
@bot.event
|
|
async def on_ready():
|
|
print(f"Logged in as {bot.user} (ID: {bot.user.id})")
|
|
print("------")
|
|
|
|
|
|
@bot.command()
|
|
# You can use commands.Option to define descriptions for your options, and converters will still work fine.
|
|
async def ping(
|
|
ctx: commands.Context, emoji: bool = commands.Option(description="whether to use an emoji when responding")
|
|
):
|
|
# This command can be used with slash commands or message commands
|
|
if emoji:
|
|
await ctx.send("\U0001f3d3")
|
|
else:
|
|
await ctx.send("Pong!")
|
|
|
|
|
|
@bot.command(message_command=False)
|
|
async def only_slash(ctx: commands.Context):
|
|
# This command can only be used with slash commands
|
|
await ctx.send("Hello from slash commands!")
|
|
|
|
|
|
@bot.command(slash_command=False)
|
|
async def only_message(ctx: commands.Context):
|
|
# This command can only be used with a message
|
|
await ctx.send("Hello from message commands!")
|
|
|
|
|
|
bot.run("token")
|