← Documentation  /  Guide du développeur

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.

These docs are publicly viewable. To publish a plugin you'll need a YourBot account: sign in to access the Dev Portal.
SDK v0.9.0

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 avec ctx.ws et 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 :

Flow diagram: a Discord event such as a message or slash command goes to the YourBot gateway, then to your plugin's handler (the part you write), then YourBot sends the result back to Discord.

En quoi un plugin diffère d'un « framework de bot Discord »

AspectPlugin (cette plateforme)Bot auto-hébergé (discord.py, etc.)
Se connecter à DiscordLa plateforme le faitVous le faites
Serveur pour héberger le codeLa plateforme le fournitVous louez / gérez
Paiements / StripeLa plateforme gèreVous le construisez vous-même
Installation par clientEn un clic pour le clientVous guidez chaque client à travers OAuth
Mise à l'échelle / quotas / nouvelles tentativesLa plateforme gèreVous vous en chargez
Avis / découvrabilitéMarketplace intégréVous faites vous-même la promotion de votre bot
Surface de l'API DiscordDélimitée par capacités (déclarez ce dont vous avez besoin)Accès complet (sous votre responsabilité)

Où vous passerez votre temps

  1. Relier les événements aux gestionnaires. Des décorateurs comme @plugin.on_event("message_create") ou @plugin.on_slash_command("hello").
  2. Stocker l'état. Les paramètres par serveur, les compteurs et les classements vivent dans ctx.kv (clé-valeur, chaque extension l'a) ou ctx.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.
  3. (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 :

Bon à savoir avant de construire

  • Votre code n'a pas d'accès réseau direct. Tous les HTTP passent par ctx.http vers les domaines que vous déclarez ; les connexions en direct passent par ctx.ws.
  • Rien ne persiste sur le disque. Les conteneurs sont effacés entre les redémarrages. L'état durable appartient à ctx.kv ou ctx.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_content et 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 cliqueTous les événements
commande slashCommandes slash
Nouveaux messagesevents:message_content
Stocker les paramètres ou compteurs par serveurMagasin clé-valeur
Garder une clé API sans la coder en durUtilisateurs autorisés
Exécuter de véritables requêtes SQLStockage et E/S : SQL en bac à sable
Appeler une API externeSimuler les requêtes HTTP sortantes
Maintenir une connexion active à un serveur de jeuStockage et E/S : WebSockets
Faire quelque chose selon un calendrierPlanifications 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 commandeStockage & E/S : État éphémère
Voir les paramètresManifeste du tableau de bord (JSON)
Construire une interface de tableau de bord entièrement personnaliséeTableaux de bord : Mode Iframe
Tester mon module avant de le téléchargerPremiers pas
Écrivez des tests unitaires pour mes gestionnairesProduction : Tests
Gérez les erreurs du SDK sans planterProduction : Gestion des erreurs
Comprendre pourquoi les variables globales du module se réinitialisentProduction : Mode Pool
Voir ce que mon module est autorisé à toucherRéférence : Catalogue des capacités
Vérifier chaque limite de taille et de débitRéférence : Limites et quotas
Supprimer le pluginNommez votre plugin
Publier & réviserPublier & réviser
Voir ce qui a changé dans chaque version du SDKRéférence : journal des modifications du SDK

SDK v0.9.0 · Dernière mise à jour juillet 2026 · Retour au portail développeur