Créer un plugin
La référence complète du SDK pour les développeurs de plugins — Python sandboxé, livré sous forme de zip, distribué via la marketplace.
Les plugins sont des processus Python isolés. Écrivez un gestionnaire, déclarez vos capacités, envoyez un zip — nous l'exécutons dans un conteneur Docker verrouillé et lui transmettons les événements Discord via JSON-RPC.
Qu'est-ce qu'un plugin ?
Un plugin est un petit programme qui écoute les événements dans un serveur Discord et y réagit.
- Quelqu'un rejoint votre serveur → votre plugin envoie un message de bienvenue.
- Quelqu'un tape
/leaderboard→ votre plugin répond avec les 10 premiers utilisateurs. - Someone reacts to a message → your plugin counts the vote and updates the tally.
Vous écrivez du Python. Vous importez le SDK. Vous décorez une fonction avec @plugin.on_event("member_join") et écrivez ce qui doit se passer. La plateforme s'occupe du reste.
Ce que la plateforme fait pour vous
- Se connecte à Discord. Vous n'avez jamais à gérer les passerelles WebSocket, le sharding, les intents ou les limites de débit. La plateforme transmet les événements à vos gestionnaires et transforme vos valeurs de retour en appels API Discord.
- Héberge votre code. Pas de serveurs à louer, pas de Docker à gérer, pas de déploiements à 2 h du matin. Poussez votre code — la plateforme l'exécute dans un sandbox isolé.
- Talks to the outside world. Call external APIs with
ctx.http, hold live connections open withctx.wsand let the platform inject API keys from encrypted secrets so your code never touches them. See Outbound HTTP. - Gère les paiements. Set a price or ship it free. Customers pay through Stripe and you keep 70–85% of revenue (tier depends on your last 30 days of volume), paid out to your bank automatically after a hold period. See Selling your plugin.
- Évolue pour vous. Une installation ou un million — la plateforme gère la concurrence, les nouvelles tentatives et les quotas.
Ce que vous faites
Écrire la logique qui transforme les événements Discord en actions. C'est tout. Le flux ressemble à ceci :
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Discord event │────▶│ YourBot │────▶│ Your plugin's │────▶│ YourBot │
│ (msg, /cmd…) │ │ gateway │ │ handler │ │ sends to │
│ │ │ │ │ │ │ Discord │
└─────────────────┘ └──────────────────┘ └──────────────────┘ └──────────────────┘
▲
│
you write this part
En quoi un plugin diffère d'un « framework de bot Discord »
| Aspect | Plugin (cette plateforme) | Bot auto-hébergé (discord.py, etc.) |
|---|---|---|
| Se connecter à Discord | La plateforme le fait | Vous le faites |
| Serveur pour héberger le code | La plateforme le fournit | Vous louez / gérez |
| Paiements / Stripe | La plateforme gère | Vous le construisez vous-même |
| Installation par client | En un clic pour le client | Vous guidez chaque client à travers OAuth |
| Mise à l'échelle / quotas / nouvelles tentatives | La plateforme gère | Vous vous en chargez |
| Avis / découvrabilité | Marketplace intégré | Vous faites vous-même la promotion de votre bot |
| Surface de l'API Discord | Délimitée par capacités (déclarez ce dont vous avez besoin) | Accès complet (sous votre responsabilité) |
Où vous passerez votre temps
- Relier les événements aux gestionnaires. Des décorateurs comme
@plugin.on_event("message_create")ou@plugin.on_slash_command("hello"). - Stocker l'état. Per-server settings, counters and leaderboards live in
ctx.kv(key-value, every plugin has it) orctx.sql(full SQL, a capability you request that is granted after staff review). Either way there is no database to manage. - (Facultatif) Une page de paramètres. Intégrez un manifeste JSON et les clients obtiennent une page de tableau de bord depuis laquelle ils peuvent configurer votre plugin. Aucun code frontend requis.
You can build and submit your first plugin in an afternoon. New developers' first versions go through a short staff review before they appear in the marketplace; established developers publish instantly. Click "Getting started" above when you're ready to write code. Prefer not to start from a blank file? The Plugin Builder writes a working first draft from a description, and the yourbot CLI runs it locally before you upload anything.
Good to know before you build
- Your code has no direct network access. All HTTP goes through
ctx.httpto domains you declare; live connections go throughctx.ws. - Nothing persists on disk. Containers are wiped between restarts. Durable state belongs in
ctx.kvorctx.sql. - Resources are capped. 64 MB memory and a fraction of a vCPU per worker. The full numbers live in Limits and quotas.
- Timers do not run on their own. Marketplace plugins are event-driven: periodic work rides on event traffic with a cooldown. See Pool mode.
- Reading what people type is a privacy capability. Message text arrives empty unless you request
events:message_contentand the server approves it. See the capability catalog. - Your first version is reviewed by a human. Plan for a short wait before it goes live. See Publish & review.
FAQ existante
Jump straight to the section that answers your question. The filter box above only searches the tab you are on.
| I want to… | Allez sur le |
|---|---|
| React when someone joins, posts or clicks | Tous les événements |
| commande slash | Commandes slash |
| Nouveaux messages | events:message_content |
| Store per-server settings or counters | Magasin clé-valeur |
| Keep an API key without hardcoding it | Utilisateurs autorisés |
| Run real SQL queries | Storage & I/O: Sandboxed SQL |
| Call an external API | Simuler les requêtes HTTP sortantes |
| Hold a live connection to a game server | Storage & I/O: WebSockets |
| Do something on a schedule | Planifications cron |
| Voir les paramètres | Manifeste du tableau de bord (JSON) |
| Test my plugin before uploading | Premiers pas |
| See what my plugin is allowed to touch | Reference: Capability catalog |
| Check every size and rate limit | Reference: Limits and quotas |
| Supprimer le plugin | Nommez votre plugin |
| Publier & réviser | Publier & réviser |
SDK v0.8.4 · Dernière mise à jour juillet 2026 · Retour au portail développeur