> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Droit Discord

> Accordez à vos clients un rôle dans votre serveur Discord lors de leur achat et révoquez-le automatiquement lorsque leur abonnement se termine.

<Info>
  Le droit Discord ajoute un client payant à votre serveur (et éventuellement lui attribue un rôle) dès que son abonnement devient actif ou que son achat unique est validé. Les annulations, remboursements et changements de plan révoquent le rôle automatiquement.
</Info>

## Ce qui est livré

* Le client connecte son compte Discord via un lien OAuth dans son email de livraison ou son portail client.
* Une fois autorisé, Dodo Payments l'ajoute à votre serveur (ou trouve son adhésion existante) et lui attribue le rôle que vous avez configuré.
* Si vous n'avez pas choisi de rôle spécifique, seule l'adhésion au serveur est accordée.

Cette intégration est idéale pour les communautés payantes, les avantages pour les soutiens et les canaux d'accès par niveaux.

## Connecter Discord

<Steps>
  <Step title="Open Entitlements">
    Dans votre tableau de bord Dodo Payments, allez à **Droits** et cliquez sur **+** pour démarrer un nouveau droit.
  </Step>

  <Step title="Pick Discord">
    Choisissez **Accès Discord** comme intégration. Si vous n'avez pas encore connecté Discord pour votre entreprise, vous serez invité à **Connecter Discord**.

    <Frame caption="Connect Discord prompt before the OAuth handoff.">
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=8a34c436dd7510942db2a9221f623938" alt="Nouveau panneau de droits invitant le marchand à connecter Discord" style={{ maxHeight: '500px', width: 'auto' }} width="2844" height="1622" data-path="images/entitlements/discord/connect-prompt.png" />
    </Frame>

    En cliquant, Discord s'ouvre dans un nouvel onglet. Connectez-vous, choisissez le serveur que vous souhaitez restreindre, et confirmez les permissions du bot (Gérer les rôles, Expulser les membres, Créer une invitation) sur ce serveur.

    <Frame caption="Discord OAuth: pick the server, then confirm the bot's permissions on it.">
      <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '12px', alignItems: 'center', justifyItems: 'center' }}>
        <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=b57bf306fa15aa3f49b528f803cc625e" alt="Écran OAuth de Discord demandant à quel serveur ajouter le bot Dodo Payments" style={{ width: '100%', maxHeight: '420px', objectFit: 'contain' }} width="1026" height="1362" data-path="images/entitlements/discord/oauth-add-bot.png" />

        <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=438c0b04177e3a4863fb90986f5b95e0" alt="Écran de confirmation de permissions du bot Discord" style={{ width: '100%', maxHeight: '420px', objectFit: 'contain' }} width="1038" height="1472" data-path="images/entitlements/discord/oauth-permissions.png" />
      </div>
    </Frame>

    Lorsque Discord redirige, vous verrez une confirmation que le serveur est connecté.

    <Frame caption="Server connected — return to the Dodo Payments dashboard to continue.">
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=bd1cbb3f9960e4eb1881d7a818dc6f16" alt="Page de confirmation de connexion réussie à Discord Access" style={{ maxHeight: '500px', width: 'auto' }} width="2000" height="1140" data-path="images/entitlements/discord/connected.png" />
    </Frame>
  </Step>

  <Step title="Pick a server and role">
    De retour dans le tableau de bord, sélectionnez le **serveur** (guild) que vous venez de connecter. Choisissez éventuellement un **rôle** à attribuer à la livraison, ou laissez-le vide pour accorder uniquement l'adhésion au serveur. Donnez un **nom** au droit et cliquez sur **Créer un droit**.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?fit=max&auto=format&n=do-W-dMDGVB_xzr_&q=85&s=79e95041881d2925e58fc752280d508e" alt="Nouveau Droit - Formulaire d'accès Discord avec serveur connecté, sélection de serveur, menu déroulant de rôle et champ de nom" style={{ maxHeight: '500px', width: 'auto' }} width="1196" height="1564" data-path="images/entitlements/discord/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Enregistrez le droit. Il est maintenant disponible pour être attaché à n'importe quel produit.
  </Step>
</Steps>

## Flux client

1. Le client termine l'achat.
2. Dodo Payments crée un droit avec le statut `pending` avec un `oauth_url` pointant vers Discord.
3. Le client reçoit un email avec un bouton "Rejoindre le Discord" (le lien OAuth). Le lien est également visible dans son portail client.
4. Après que le client a autorisé, le bot les ajoute au serveur et attribue le rôle configuré. Le droit passe à `delivered`.
5. Si l'abonnement est annulé, suspendu ou expire, ou si le marchand révoque manuellement, le bot retire le rôle et le droit passe à `revoked`.

<Tip>
  Assurez-vous que le rôle du bot Dodo Payments est positionné **au-dessus** du rôle que vous accordez. Discord empêche les bots d'attribuer des rôles classés plus haut que le leur.
</Tip>

## Configuration requise

| Champ      | Obligatoire | Description                                                                           |
| ---------- | ----------- | ------------------------------------------------------------------------------------- |
| `guild_id` | Oui         | L'ID du serveur Discord. Le sélecteur de tableau de bord le remplit pour vous.        |
| `role_id`  | Non         | Le rôle à attribuer lors de la livraison. Omettre pour un accès réservé à l'adhésion. |

## Créer via API

<CodeGroup>
  ```typescript TypeScript theme={null} theme={null}
  import DodoPayments from 'dodopayments';

  const client = new DodoPayments({
    bearerToken: process.env['DODO_PAYMENTS_API_KEY'],
    environment: 'test_mode',
  });

  const entitlement = await client.entitlements.create({
    name: 'Patrons Discord Role',
    integration_type: 'discord',
    integration_config: {
      guild_id: '123456789012345678',
      role_id: '987654321098765432',
    },
  });
  ```

  ```python Python theme={null} theme={null}
  client.entitlements.create(
      name="Patrons Discord Role",
      integration_type="discord",
      integration_config={
          "guild_id": "123456789012345678",
          "role_id": "987654321098765432",
      },
  )
  ```

  ```go Go theme={null} theme={null}
  client.Entitlements.New(ctx, dodopayments.EntitlementNewParams{
    Name:            dodopayments.F("Patrons Discord Role"),
    IntegrationType: dodopayments.F(dodopayments.EntitlementIntegrationTypeDiscord),
    IntegrationConfig: dodopayments.F[dodopayments.IntegrationConfigUnionParam](
      dodopayments.IntegrationConfigDiscordConfigParam{
        GuildID: dodopayments.F("123456789012345678"),
        RoleID:  dodopayments.F("987654321098765432"),
      },
    ),
  })
  ```
</CodeGroup>

## Webhooks

Abonnez-vous aux [événements de webhook `entitlement_grant.*`](/developer-resources/webhooks/intents/entitlement-grant) pour suivre les droits Discord :

* `entitlement_grant.created` se déclenche avec `status: "pending"` et un `oauth_url` pour que le client autorise.
* `entitlement_grant.delivered` se déclenche une fois le rôle attribué.
* `entitlement_grant.revoked` se déclenche lorsque le rôle est retiré.

## Dépannage

<AccordionGroup>
  <Accordion title="Customer never sees the role assigned">
    Le droit est en `pending` jusqu'à ce que le client termine le flux OAuth. Vérifiez la liste des droits d'entitlement et confirmez s'ils ont cliqué sur le lien OAuth. Renvoyez l'email de livraison si nécessaire.
  </Accordion>

  <Accordion title="Grant moves to failed with permission errors">
    Assurez-vous que le bot Dodo Payments reste sur le serveur, a la permission `Manage Roles`, et est positionné au-dessus du rôle en cours d'attribution. Réenregistrer le droit relance la validation.
  </Accordion>

  <Accordion title="Customer cancelled but still has the role">
    Discord propage les suppressions de rôle immédiatement, mais le client Discord local du client peut mettre en cache. Ils doivent se reconnecter ou actualiser ; l'état côté serveur est correct.
  </Accordion>
</AccordionGroup>
