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. - Quelqu'un réagit à un message → votre extension compte le vote et met à jour le décompte.
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 livre les événements à vos gestionnaires, et un seul appel
ctx.discord.send_message(…)suffit pour répondre. - 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é.
- Parle au monde extérieur. Appelez les API externes avec
ctx.http, maintenez les connexions en direct ouvertes avecctx.wset laissez la plateforme injecter les clés API à partir des secrets chiffrés pour que votre code n'y touche jamais. Consultez HTTP sortant. - Gère les paiements. Fixez un prix ou livrez-le gratuitement. Les clients paient via Stripe et vous conservez 70–85 % des revenus (le niveau dépend du volume de vos 30 derniers jours), versé à votre banque automatiquement après une période de rétention. Consultez Vendre votre extension.
- Donne à chaque installation une page de paramètres. Déclarez quelques widgets en JSON et les administrateurs obtiennent une page de tableau de bord thématisée pour votre Module — cartes de statistiques, graphiques, formulaires de paramètres — sans que vous écriviez une seule ligne de code frontal. Voir Tableaux de bord.
- Expédie vos mises à jour. Publiez une nouvelle version et les installations la récupèrent automatiquement (les propriétaires peuvent épingler une version pour refuser). Aucun email de migration, aucun « veuillez réinviter le bot ». Voir mises à jour et annulation.
- É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 :
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. Les paramètres par serveur, les compteurs et les classements vivent dans
ctx.kv(clé-valeur, chaque extension l'a) ouctx.sql(SQL complet, une capacité que vous demandez qui est accordée après examen du personnel). De toute façon, il n'y a pas de base de données à gérer. - (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.
Vous pouvez créer et soumettre votre premier Module en un après-midi. Les premières versions des nouveaux développeurs passent par un court examen du personnel avant d'apparaître sur la Place de marché ; les développeurs établis publiant à partir de dépôts publics contournent généralement la file d'attente. Cliquez sur « Commencer » ci-dessus quand vous êtes prêt à écrire du code. Préférez ne pas commencer par un fichier vide ? Le Générateur de Module rédige un premier brouillon fonctionnel à partir d'une description, et le CLI yourbot l'exécute localement avant de charger quoi que ce soit.
Le voyage complet en un coup d'œil
Chaque Module passe par les mêmes cinq arrêts, et ces docs sont disposées dans le même ordre — la barre d'onglets ci-dessus les groupe en Comprendre → Construire → Expédier → Référence. Chaque arrêt mène à la section qui le couvre :
yourbot dev localement, tests unitaires avec MockContext.
étape 3
Soumettre
yourbot validate, chargez un zip ou tirez depuis GitHub.
étape 4
Publier
Passez la révision, mettez en ligne sur la Place de marché, mises à jour automatiques des installations.
étape 5
Gagner
Set plans, keep 70–85%, automatic payouts.
Bon à savoir avant de construire
- Votre code n'a pas d'accès réseau direct. Tous les HTTP passent par
ctx.httpvers les domaines que vous déclarez ; les connexions en direct passent parctx.ws. - Rien ne persiste sur le disque. Les conteneurs sont effacés entre les redémarrages. L'état durable appartient à
ctx.kvouctx.sql. - Les ressources sont limitées. 64 MB de mémoire et une fraction de vCPU par travailleur. Les chiffres complets se trouvent dans Limites et quotas.
- Les minuteurs ne fonctionnent pas tout seuls. Les modules de la Place de marché sont pilotés par les événements : le travail périodique s'appuie sur le trafic des événements avec un délai d'attente. Voir Mode de pool.
- Lire ce que les gens tapent est une capacité de confidentialité. Le texte du message arrive vide sauf si vous demandez
events:message_contentet que le serveur l'approuve. Voir le catalogue des capacités. - Votre première version est examinée par un humain. Prévoyez une courte attente avant sa mise en ligne. Voir Publier et examiner.
FAQ existante
Allez directement à la section qui répond à votre question. La boîte de filtre ci-dessus ne recherche que dans l'onglet sur lequel vous êtes.
| Je veux… | Allez sur le |
|---|---|
| Réagir quand quelqu'un rejoint, poste ou clique | Tous les événements |
| commande slash | Commandes slash |
| Nouveaux messages | events:message_content |
| Stocker les paramètres ou compteurs par serveur | Magasin clé-valeur |
| Garder une clé API sans la coder en dur | Utilisateurs autorisés |
| Exécuter de véritables requêtes SQL | Stockage et E/S : SQL en bac à sable |
| Appeler une API externe | Simuler les requêtes HTTP sortantes |
| Maintenir une connexion active à un serveur de jeu | Stockage et E/S : WebSockets |
| Faire quelque chose selon un calendrier | Planifications cron |
| Ouvrir un formulaire contextuel (modal) | Construire : Dialogues modaux |
| Mettez à jour un message quand un bouton est cliqué | Construire : Boutons & menus |
| Ajouter un délai d'attente ou une limite de débit à une commande | Stockage & E/S : État éphémère |
| Voir les paramètres | Manifeste du tableau de bord (JSON) |
| Construire une interface de tableau de bord entièrement personnalisée | Tableaux de bord : Mode Iframe |
| Tester mon module avant de le télécharger | Premiers pas |
| Écrivez des tests unitaires pour mes gestionnaires | Production : Tests |
| Gérez les erreurs du SDK sans planter | Production : Gestion des erreurs |
| Comprendre pourquoi les variables globales du module se réinitialisent | Production : Mode Pool |
| Voir ce que mon module est autorisé à toucher | Référence : Catalogue des capacités |
| Vérifier chaque limite de taille et de débit | Référence : Limites et quotas |
| Supprimer le plugin | Nommez votre plugin |
| Publier & réviser | Publier & réviser |
| Voir ce qui a changé dans chaque version du SDK | Référence : journal des modifications du SDK |
SDK v0.9.0 · Dernière mise à jour juillet 2026 · Retour au portail développeur