> ## 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-rättighet

> Ge dina kunder en roll i din Discord-server när de köper, och återkalla den automatiskt när deras prenumeration avslutas.

<Info>
  Discord-rättigheten lägger till en betalande kund på din server (och tilldelar honom eventuellt en roll) så snart deras prenumeration blir aktiv eller deras engångsköp godkänns. Avbokningar, återbetalningar och planändringar återkallar rollen automatiskt.
</Info>

## Vad som levereras

* Kunden kopplar sitt Discord-konto via en OAuth-länk i sitt leveransmejl eller kundportal.
* När de godkänner, lägger Dodo Payments till dem i din server (eller hittar deras befintliga medlemskap) och tilldelar den roll du har konfigurerat.
* Om du inte valt en specifik roll, beviljas endast servermedlemskap.

Denna integration är idealisk för betalda gemenskaper, stödjande förmåner och kanalåtkomst i olika nivåer.

## Anslut Discord

<Steps>
  <Step title="Open Entitlements">
    I din Dodo Payments-instrumentpanel, gå till **Rättigheter** och klicka på **+** för att starta en ny rättighet.
  </Step>

  <Step title="Pick Discord">
    Välj **Discord Access** som integration. Om du ännu inte har anslutit Discord för ditt företag, uppmanas du att **Anslut 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="New entitlement panel prompting the merchant to connect Discord" style={{ maxHeight: '500px', width: 'auto' }} width="2844" height="1622" data-path="images/entitlements/discord/connect-prompt.png" />
    </Frame>

    Genom att klicka öppnas Discord i en ny flik. Logga in, välj den server du vill begränsa åtkomst till, och bekräfta botens behörigheter (Hantera roller, Sparka medlemmar, Skapa inbjudan) på den servern.

    <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 screen asking which server to add the Dodo Payments bot to" 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="Discord bot permission confirmation screen" style={{ width: '100%', maxHeight: '420px', objectFit: 'contain' }} width="1038" height="1472" data-path="images/entitlements/discord/oauth-permissions.png" />
      </div>
    </Frame>

    När Discord omdirigerar tillbaka, ser du en bekräftelse på att servern är ansluten.

    <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 Access connected successfully confirmation page" 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">
    Tillbaka i instrumentpanelen, välj den **server** (guild) du just anslutit. Välj eventuellt en **roll** att tilldela vid leverans, eller lämna det tomt för att endast bevilja servermedlemskap. Ge rättigheten ett **namn** och klicka **Skapa rättighet**.

    <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="New Entitlement - Discord Access form with connected server, server picker, role dropdown, and name field" style={{ maxHeight: '500px', width: 'auto' }} width="1196" height="1564" data-path="images/entitlements/discord/create.png" />
    </Frame>
  </Step>

  <Step title="Save the entitlement">
    Spara rättigheten. Den är nu tillgänglig att koppla till vilken produkt som helst.
  </Step>
</Steps>

## Kundflöde

1. Kunden avslutar köpet.
2. Dodo Payments skapar en beviljning i `pending` status med en `oauth_url` som pekar på Discord.
3. Kunden får ett mejl med en "Gå med i Discord"-knapp (OAuth-länken). Länken är också synlig i deras kundportal.
4. Efter kundens godkännande, lägger boten till dem på servern och tilldelar den konfigurerade rollen. Beviljningen flyttas till `delivered`.
5. Om prenumerationen annulleras, pausas eller löper ut, eller om köpmannen manuellt återkallar, tar boten bort rollen och beviljningen flyttas till `revoked`.

<Tip>
  Se till att Dodo Payments-botens roll är placerad **ovanför** rollen du tilldelar. Discord förhindrar att bots tilldelar roller rankade högre än sin egen.
</Tip>

## Nödvändig konfiguration

| Fält       | Obligatoriskt | Beskrivning                                                                       |
| ---------- | ------------- | --------------------------------------------------------------------------------- |
| `guild_id` | Ja            | Discord-serverns ID. Instrumentpanelens väljare fyller i detta åt dig.            |
| `role_id`  | Nej           | Rollen att tilldela vid leverans. Utelämna för enbart servermedlemskapstillträde. |

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

Prenumerera på [`entitlement_grant.*` webhook-händelser](/developer-resources/webhooks/intents/entitlement-grant) för att spåra Discord-beviljningar:

* `entitlement_grant.created` avfyras med `status: "pending"` och en `oauth_url` för kunden att godkänna.
* `entitlement_grant.delivered` avfyras när rollen har tilldelats.
* `entitlement_grant.revoked` avfyras när rollen tas bort.

## Felsökning

<AccordionGroup>
  <Accordion title="Customer never sees the role assigned">
    Beviljningen är i `pending` tills kunden slutför OAuth-flödet. Kontrollera rättighetens lista över beviljningar och bekräfta om de klickade på OAuth-länken. Skicka om leveransmejlet vid behov.
  </Accordion>

  <Accordion title="Grant moves to failed with permission errors">
    Se till att Dodo Payments-boten förblir i servern, har `Manage Roles` behörighet, och är placerad ovanför rollen som tilldelas. Att spara om rättigheten kör validering igen.
  </Accordion>

  <Accordion title="Customer cancelled but still has the role">
    Discord skickar direkt borttagningar av roller, men den lokala Discord-klienten hos kunden kan hålla cache. De bör återansluta eller uppdatera; server-sidans tillstånd är korrekt.
  </Accordion>
</AccordionGroup>
