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

> अपने Discord चैनलों पर वास्तविक समय के Dodo Payments सूचनाएँ भेजें।

## परिचय

अपने टीम को सूचित रखें जहाँ वे पहले से सहयोग कर रहे हैं। Discord एकीकरण भुगतान, सदस्यता, विवाद, और अन्य महत्वपूर्ण घटनाओं को सीधे किसी भी चैनल में भेजता है जिसे आप चुनते हैं—कोई पोलिंग या डैशबोर्ड की आवश्यकता नहीं।

<Info>
  इस गाइड में यह मान लिया गया है कि आपके पास Dodo Payments डैशबोर्ड के Integrations सेक्शन तक पहुंच है.
</Info>

## प्रारंभ करना

<Steps>
  <Step title="Open the Webhook Section">
    अपने Dodo Payments डैशबोर्ड में, <b>Webhooks → + Add Endpoint</b> खोलें और इंटीग्रेशन को दिखाने के लिए ड्रॉपडाउन को विस्तारित करें।

    <Frame>
      <img src="https://mintcdn.com/dodopayments/slbAEdrLLwKHfaRf/images/integrations/discord.png?fit=max&auto=format&n=slbAEdrLLwKHfaRf&q=85&s=dd9359ae214e43ca779c1c0a522f055b" alt="एंडपॉइंट जोड़ें और इंटीग्रेशन ड्रॉपडाउन" style={{ maxHeight: '500px', width: 'auto' }} width="1808" height="938" data-path="images/integrations/discord.png" />
    </Frame>
  </Step>

  <Step title="Select Discord">
    <b>Discord</b> कार्ड चुनें फिर <b>Connect your Discord workspace</b> पर क्लिक करें.
  </Step>

  <Step title="Authorize the Bot">
    अनुरोधित अनुमतियाँ प्रदान करें ताकि बॉट आपके चुने हुए चैनल में संदेश भेज सके.
  </Step>

  <Step title="Edit Transformation Code">
    पेलोड → एम्बेड मैपिंग को अपनी जरूरतों के अनुसार अनुकूलित करें—या नीचे दिए गए टेम्पलेट्स से शुरू करें.
  </Step>

  <Step title="Test & Create">
    एम्बेड का पूर्वावलोकन करने के लिए सैंपल पेलोड का उपयोग करें, फिर <b>Create</b> दबाएँ.
  </Step>

  <Step title="Done!">
    🎉 अब आपका Discord चैनल लाइव Dodo Payments अपडेट प्राप्त करेगा.
  </Step>
</Steps>

## परिवर्तन कोड उदाहरण

### न्यूनतम भुगतान एम्बेड

```javascript payment_embed.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.payload = {
      embeds: [{
        title: "✅ Payment Successful",
        description: `**Amount:** $${(p.total_amount / 100).toFixed(2)}\n**Customer:** ${p.customer.email}`,
        color: 0x2ecc71 // green
      }]
    };
  }
  return webhook;
}
```

### सदस्यता घटनाएँ

```javascript subscription_embed.js icon="js" expandable theme={null}
function handler(webhook) {
  const s = webhook.payload.data;
  switch (webhook.eventType) {
    case "subscription.active":
      webhook.payload = {
        embeds: [{
          title: "📄 Subscription Activated",
          fields: [
            { name: "Customer", value: s.customer.email, inline: true },
            { name: "Product", value: s.product_id, inline: true },
            { name: "Next Billing", value: new Date(s.next_billing_date).toLocaleDateString(), inline: true }
          ],
          color: 0x2ecc71
        }]
      };
      break;
    case "subscription.cancelled":
      webhook.payload = {
        embeds: [{
          title: "⚠️ Subscription Cancelled",
          fields: [
            { name: "Customer", value: s.customer.email, inline: true },
            { name: "Product", value: s.product_id, inline: true }
          ],
          color: 0xf1c40f
        }]
      };
      break;
  }
  return webhook;
}
```

### विवाद अलर्ट

```javascript dispute_embed.js icon="js" expandable theme={null}
function handler(webhook) {
  if (webhook.eventType.startsWith("dispute.")) {
    const d = webhook.payload.data;
    webhook.payload = {
      embeds: [{
        title: d.dispute_status === "won" ? "🏆 Dispute Won" : d.dispute_status === "lost" ? "❌ Dispute Lost" : "🚨 Dispute Update",
        fields: [
          { name: "Payment ID", value: d.payment_id, inline: true },
          { name: "Amount", value: `$${(d.amount / 100).toFixed(2)}`, inline: true },
          { name: "Status", value: d.dispute_status, inline: true }
        ],
        color: d.dispute_status === "won" ? 0x2ecc71 : d.dispute_status === "lost" ? 0xe74c3c : 0xe67e22
      }]
    };
  }
  return webhook;
}
```

## सुझाव

* समृद्ध प्रारूपण और रंगों के लिए एम्बेड का उपयोग करें।
* शीर्षकों को संक्षिप्त रखें; विवरण फ़ील्ड में डालें।
* सहज रंगों का उपयोग करें: हरा (सफलता), लाल (विफलता), नारंगी (चेतावनियाँ)।

## समस्या निवारण

<AccordionGroup>
  <Accordion title="No messages in Discord">
    * पुष्टि करें कि बॉट को चैनल तक पहुँच है.
    * जांचें कि ट्रांसफ़ॉर्मेशन `embeds` के साथ एक JSON ऑब्जेक्ट लौटाता है.
  </Accordion>

  <Accordion title="Transformation errors">
    * अपने कोड को एडिटर में मान्य करें – सिंटैक्स त्रुटियाँ डिलीवरी को रोकेंगी.
    * सुनिश्चित करें कि फील्ड नाम webhook पेलोड संरचना से मेल खाते हैं.
  </Accordion>
</AccordionGroup>
