35 lines
1.1 KiB
Markdown
35 lines
1.1 KiB
Markdown
# Using Slash Commands
|
|
|
|
The library provides a slash command framework via the `ext.app_commands` package. Define commands with decorators and register them with Discord.
|
|
|
|
```python
|
|
from disagreement.ext.app_commands import AppCommandGroup
|
|
|
|
bot_commands = AppCommandGroup("bot", "Bot commands")
|
|
|
|
@bot_commands.command(name="ping")
|
|
async def ping(ctx):
|
|
await ctx.respond("Pong!")
|
|
```
|
|
|
|
Use `AppCommandGroup` to group related commands. See the [components guide](using_components.md) for building interactive responses.
|
|
|
|
## Next Steps
|
|
|
|
- [Components](using_components.md)
|
|
- [Caching](caching.md)
|
|
- [Voice Features](voice_features.md)
|
|
- [HTTP Client Options](http_client.md)
|
|
|
|
## Command Persistence
|
|
|
|
`AppCommandHandler.sync_commands` can persist registered command IDs in
|
|
`.disagreement_commands.json`. When enabled, subsequent syncs compare the
|
|
stored IDs to the commands defined in code and only create, edit or delete
|
|
commands when changes are detected.
|
|
|
|
Call `AppCommandHandler.clear_stored_registrations()` if you need to wipe the
|
|
stored IDs or migrate them elsewhere with
|
|
`AppCommandHandler.migrate_stored_registrations()`.
|
|
|