> ## 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.

# Discord-Berechtigung

> Gewähren Sie Ihren Kunden eine Rolle in Ihrem Discord-Server, wenn sie kaufen, und entziehen Sie sie automatisch, wenn ihr Abonnement endet.

<Info>
  Die Discord-Berechtigung fügt einen zahlenden Kunden zu Ihrem Server hinzu (und weist ihm optional eine Rolle zu), sobald sein Abonnement aktiv wird oder sein Einmalkauf abgeschlossen ist. Kündigungen, Rückerstattungen und Planänderungen entziehen die Rolle automatisch.
</Info>

## Was geliefert wird

* Der Kunde verbindet sein Discord-Konto über einen OAuth-Link in seiner Liefer-E-Mail oder im Kundenportal.
* Sobald sie autorisieren, fügt Dodo Payments sie Ihrem Server hinzu (oder findet ihre bestehende Mitgliedschaft) und weist die von Ihnen konfigurierte Rolle zu.
* Wenn Sie keine spezifische Rolle ausgewählt haben, wird nur die Servermitgliedschaft gewährt.

Diese Integration ist ideal für bezahlte Gemeinschaften, Unterstützer-Vorteile und abgestufte Zugangskanäle.

## Discord verbinden

<Steps>
  <Step title="Open Entitlements">
    Gehen Sie in Ihrem Dodo Payments-Dashboard zu **Berechtigungen** und klicken Sie auf **+**, um eine neue Berechtigung zu starten.
  </Step>

  <Step title="Pick Discord">
    Wählen Sie **Discord-Zugang** als Integration. Wenn Sie Discord noch nicht für Ihr Unternehmen verbunden haben, werden Sie aufgefordert, **Discord zu verbinden**.

    <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="Neue Berechtigungspanel, das den Händler dazu auffordert, Discord zu verbinden" style={{ maxHeight: '500px', width: 'auto' }} width="2844" height="1622" data-path="images/entitlements/discord/connect-prompt.png" />
    </Frame>

    Durch Klicken öffnet sich Discord in einem neuen Tab. Melden Sie sich an, wählen Sie den Server aus, den Sie schützen möchten, und bestätigen Sie die Berechtigungen des Bots (Rollen verwalten, Mitglieder kicken, Einladung erstellen) auf diesem Server.

    <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="Discord OAuth-Bildschirm, der fragt, zu welchem Server der Dodo Payments-Bot hinzugefügt werden soll" 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="Bestätigungsbildschirm für Bot-Berechtigungen in Discord" style={{ width: '100%', maxHeight: '420px', objectFit: 'contain' }} width="1038" height="1472" data-path="images/entitlements/discord/oauth-permissions.png" />
      </div>
    </Frame>

    Wenn Discord zurückleitet, sehen Sie eine Bestätigung, dass der Server verbunden ist.

    <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="Discord-Zugang erfolgreich verbunden Bestätigungsseite" 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">
    Zurück im Dashboard wählen Sie den **Server** (Gilde), den Sie gerade verbunden haben. Optional wählen Sie eine **Rolle**, die bei Lieferung zugewiesen werden soll, oder lassen sie leer, um nur die Servermitgliedschaft zu gewähren. Geben Sie der Berechtigung einen **Namen** und klicken Sie auf **Berechtigung erstellen**.

    <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="Neue Berechtigung - Discord-Zugangsformular mit verbundenem Server, Serverauswahl, Rollenauswahl und Namensfeld" style={{ maxHeight: '500px', width: 'auto' }} width="1196" height="1564" data-path="images/entitlements/discord/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Speichern Sie die Berechtigung. Sie steht nun zur Anbindung an beliebige Produkte zur Verfügung.
  </Step>
</Steps>

## Kundenablauf

1. Der Kunde schließt den Checkout ab.
2. Dodo Payments erstellt eine Zuweisung im `pending`-Status mit einem `oauth_url`, der auf Discord verweist.
3. Der Kunde erhält eine E-Mail mit einem „Discord beitreten“-Button (dem OAuth-Link). Der Link ist auch in seinem Kundenportal sichtbar.
4. Nachdem der Kunde autorisiert hat, fügt der Bot sie dem Server hinzu und weist die konfigurierte Rolle zu. Die Zuweisung wechselt zu `delivered`.
5. Wenn das Abonnement gekündigt, pausiert oder abgelaufen ist oder wenn der Händler manuell widerruft, entfernt der Bot die Rolle und die Zuweisung wechselt zu `revoked`.

<Tip>
  Achten Sie darauf, dass die Rolle des Dodo Payments-Bots **über** der von Ihnen zugewiesenen Rolle positioniert ist. Discord verhindert, dass Bots Rollen zuweisen, die höher als ihre eigene eingestuft sind.
</Tip>

## Erforderliche Konfiguration

| Feld       | Erforderlich | Beschreibung                                                                                            |
| ---------- | ------------ | ------------------------------------------------------------------------------------------------------- |
| `guild_id` | Ja           | Die Discord-Server-ID. Der Dashboard-Picker füllt dies für Sie aus.                                     |
| `role_id`  | Nein         | Die Rolle, die bei der Lieferung zugewiesen werden soll. Weglassen für nur Servermitgliedschaftszugang. |

## Erstellen über 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

Abonnieren Sie die [`entitlement_grant.*` Webhook-Ereignisse](/developer-resources/webhooks/intents/entitlement-grant), um Discord-Zuweisungen zu verfolgen:

* `entitlement_grant.created` wird mit `status: "pending"` und einem `oauth_url` für den Kunden zur Autorisierung ausgelöst.
* `entitlement_grant.delivered` wird ausgelöst, sobald die Rolle zugewiesen ist.
* `entitlement_grant.revoked` wird ausgelöst, wenn die Rolle entfernt wird.

## Fehlerbehebung

<AccordionGroup>
  <Accordion title="Customer never sees the role assigned">
    Die Zuweisung befindet sich in `pending`, bis der Kunde den OAuth-Prozess abgeschlossen hat. Überprüfen Sie die Zuweisungsliste der Berechtigung und bestätigen Sie, ob sie auf den OAuth-Link geklickt haben. Senden Sie die Liefer-E-Mail erneut, falls erforderlich.
  </Accordion>

  <Accordion title="Grant moves to failed with permission errors">
    Stellen Sie sicher, dass der Dodo Payments-Bot im Server bleibt, die `Manage Roles`-Berechtigung hat und über der zugeordneten Rolle positioniert ist. Das erneute Speichern der Berechtigung führt die Validierung erneut durch.
  </Accordion>

  <Accordion title="Customer cancelled but still has the role">
    Discord propagiert Rollenentfernungen sofort, aber der lokale Discord-Client des Kunden kann zwischen speichern. Sie sollten sich erneut verbinden oder aktualisieren; der serverseitige Zustand ist korrekt.
  </Accordion>
</AccordionGroup>
