Discord entegrasyonu, web sitenizden, mağazanızdan ya da sunucunuzdan gelen olayları Discord kanallarına taşımak veya Discord'u kendi uygulamanıza bağlamaktır. Üç yolu vardır: tek yönlü bildirim için webhook, komutlara yanıt veren ve etkileşim kuran bot, kullanıcıların Discord hesabıyla giriş yapması için OAuth2.

İlgili içerikler: CRM entegrasyonu · API istek sınırı · Node.js REST API

Hangi Yöntem Ne İçin?

Hangi Yöntem Ne İçin? Webhook, Mesajları okur, komutlara yanıt verir, OAuth2
YöntemNe yaparÖrnek
WebhookKanala tek yönlü mesaj gönderirYeni sipariş, form başvurusu, sunucu uyarısı
BotMesajları okur, komutlara yanıt verirSipariş sorgulama komutu, moderasyon
OAuth2Kullanıcıyı Discord hesabıyla tanırSitede "Discord ile giriş"

Webhook ile Kanala Bildirim Gönderme

  • Discord'da sunucu ayarlarından Entegrasyonlar bölümüne girin ve Webhook Oluştur'u seçin.
  • Webhook'a ad verin, mesajların düşeceği kanalı seçin ve Webhook URL'sini kopyalayın.
  • Sunucunuzdan bu adrese JSON gövdeli bir POST isteği gönderin.
bash
curl -X POST "https://discord.com/api/webhooks/WEBHOOK_ID/WEBHOOK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username":"Mağaza","embeds":[{"title":"Yeni sipariş #1042","description":"2 ürün, kapıda ödeme","fields":[{"name":"Tutar","value":"1.250 TL","inline":true}]}]}'

Node.js ile aynı istek:

javascript
await fetch(process.env.DISCORD_WEBHOOK_URL, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ content: 'Yeni iletişim formu: ' + ad })
});

Belgeye göre önemli sınırlar:

  • content en fazla 2000 karakter, bir mesajda en fazla 10 embed.
  • Embed başlığı 256, açıklaması 4096 karakter; en fazla 25 alan. Bir mesajdaki tüm embed'lerin toplamı 6000 karakteri geçemez.
  • ?wait=true eklenirse oluşan mesaj yanıtta döner. Forum kanallarında thread_name veya thread_id zorunludur.
  • Webhook adı 1 ile 80 karakter arasında olmalı ve "clyde" ya da "discord" içermemelidir.

İstek Sınırları

Discord belgesi sabit sayılara güvenmek yerine yanıt başlıklarındaki X-RateLimit-* değerlerine ve 429 yanıtındaki Retry-After süresine uymayı ister. Botlar için genel sınır saniyede 50 istektir. 10 dakikada 10.000 geçersiz istek (401, 403, 429) yapan IP adresi geçici olarak engellenir. 404 dönen bir webhook'a istek göndermeyi bırakın.

Discord Bot Kurulumu

Discord Bot Kurulumu: Uygulama, Intent'ler, Slash komutlar, Yanıt süresi
  • Uygulama: Discord Developer Portal'da uygulama oluşturun, Bot sayfasından bot tokenını alın ve gizli tutun.
  • Intent'ler: GUILD_PRESENCES, GUILD_MEMBERS ve MESSAGE_CONTENT ayrıcalıklı intent'lerdir; Bot sayfasından açılır. 100'den fazla sunucudaki doğrulanmış uygulamalar için ayrıca onay gerekir.
  • Slash komutlar: Global ya da tek sunucuya özel kaydedilebilir. Global olarak en fazla 100 sohbet komutu, komut başına 25 seçenek tanımlanabilir.
  • Yanıt süresi: Bir etkileşime ilk yanıt 3 saniye içinde verilmelidir. Uzun işlemlerde önce ertelenmiş yanıt gönderilir; etkileşim tokenı 15 dakika geçerlidir.

Discord ile Giriş (OAuth2)

  • Kullanıcı https://discord.com/oauth2/authorize adresine yönlendirilir. Temel kapsamlar identify, email ve guilds.
  • Dönen kod, sunucunuzda https://discord.com/api/oauth2/token adresine form-urlencoded olarak gönderilip tokena çevrilir.
  • Kullanıcı bilgisi /users/@me uç noktasından alınır.
  • Belge, CSRF'e karşı state parametresinin kullanılmasını şiddetle önerir.

Sık Sorulan Sorular

Botum mesaj içeriğini neden göremiyor?

MESSAGE_CONTENT ayrıcalıklı bir intent'tir. Developer Portal'da Bot sayfasından açılmalı ve kodda da istenmelidir.

Webhook ile dosya veya görsel gönderebilir miyim?

Embed içinde görsel adresi verebilirsiniz. Dosya eki için isteğin multipart biçiminde gönderilmesi gerekir; ayrıntılar webhook belgesinde.

Webhook için bot gerekir mi?

Hayır. Webhook bağımsız çalışır; yalnızca URL ile mesaj gönderir. Komut almak veya mesaj okumak istiyorsanız bot gerekir.

Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.