Discord Webhook Nasıl Oluşturulur ve Kullanılır

Kerem Aydın·8 Temmuz 2026·⏱4 dk

Discord Webhook, tam teşekküllü bir bot yazmaya gerek kalmadan harici uygulamalardan, komut dosyalarından veya hizmetlerden doğrudan bir sunucunun metin kanalına mesaj göndermeyi sağlayan özel bir URL adresidir. Başlamak için, kanal ayarlarında bir webhook oluşturun, URL'sini kopyalayın ve bu adrese JSON verileri içeren bir POST isteği gönderin.

Bu araç, otomatik bildirimler için idealdir: kod derleme raporları (CI/CD), izleme uyarıları, web sitesi formlarından gelen talepler veya hata günlükleri.

İçindekiler

Webhook Nedir ve Neden Gereklidir

Webhook, kodunuz ile Discord arasında "tek yönlü bir köprü" olarak işlev görür. Bir bottan farklı olarak, webhook mesajları okuyamaz, komutlara yanıt veremez veya sesli kanallarda bulunamaz. Tek görevi içerik yayınlamaktır.

Temel kullanım senaryoları:

  • DevOps: GitHub Actions/GitLab CI üzerinden başarılı veya başarısız dağıtım bildirimleri.
  • İzleme: Sunucu çöktüğünde veya yük normal seviyeyi aştığında #alerts kanalına anlık uyarılar.
  • İş: Web sitesi iletişim formlarından gelen potansiyel müşterilerin doğrudan satış kanalına alınması.
  • Oyunlar: Oyun sunucusu istatistiklerinin entegrasyonu.

Adım Adım Webhook Oluşturma

Oluşturma işlemi Discord arayüzü (Masaüstü veya Web sürümü) aracılığıyla yapılır.

  1. Soldaki listede istediğiniz metin kanalının üzerine gelin.
  2. «Kanal Ayarları» (Edit Channel) simgesine tıklayın.
  3. Sol menüden «Entegrasyonlar» (Integrations) → «Webhooks» bölümünü seçin.
    • Not: Eski arayüz sürümlerinde bu madde sadece «Webhooks» olarak adlandırılabilir.
  4. «Yeni Webhook» (New Webhook) düğmesine tıklayın.
  5. Görünümü yapılandırın:
    • İsim: Mesajın kimden geleceği (örneğin, Deploy Bot).
    • Avatar: Bir resim yükleyin (proje logosu veya hizmet simgesi).
    • Kanal: Mesajların tam olarak nereye gönderileceğini seçin.
  6. «Webhook URL'sini Kopyala» (Copy Webhook URL) düğmesine tıklayın.
  7. «Değişiklikleri Kaydet» düğmesine tıklayın.

Önce Güvenlik! Webhook URL'si gizli bir token içerir. Bu bağlantıya sahip olan herkes kanalınıza mesaj gönderebilir. URL'yi asla herkese açık GitHub depolarında veya genel sohbetlerde paylaşmayın.

İstek Formatı ve Mesaj Gönderme

Mesaj göndermek için kopyalanan URL'ye POST yöntemiyle bir HTTP isteği gerçekleştirmeniz gerekir.

İstek gereksinimleri:

  • Header: Content-Type: application/json
  • Body: Mesaj verilerini içeren JSON nesnesi.

Basit metin için minimum JSON yapısı:

{
  "content": "Mesajınızın metni"
}

Kod Örnekleri: cURL, Python, JavaScript

1. cURL ile Gönderme (terminal)

Çalışabilirliği hızlıca kontrol etmek için evrensel bir yöntem.

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"content": "✅ Test mesajı başarıyla teslim edildi!"}' \
  https://discord.com/api/webhooks/ВАШ_ID/ВАШ_ТОКЕН

2. Python ile Gönderme (requests kütüphanesi)

Backend ve otomasyon komut dosyaları için en popüler seçenek.

import requests
import json

webhook_url = "https://discord.com/api/webhooks/ВАШ_ID/ВАШ_ТОКЕН"

# Mesaj verileri
data = {
    "content": "🚀 Dağıtım başarıyla tamamlandı!",
    "username": "CI Bot" # İsmi istek içinde geçersiz kılmak mümkündür
}

try:
    response = requests.post(webhook_url, json=data)
    if response.status_code == 204:
        print("Mesaj gönderildi.")
    else:
        print(f"Hata: {response.status_code}")
except Exception as e:
    print(f"Gönderilemedi: {e}")

3. Node.js ile Gönderme (fetch)

Modern JS uygulamaları için.

const webhookUrl = "https://discord.com/api/webhooks/ВАШ_ID/ВАШ_ТОКЕН";

const message = {
  content: "🔥 Web sitesinden yeni talep!",
  embeds: [{
    title: "İletişim Bilgileri",
    description: "Kullanıcı danışmanlık talebi bıraktı.",
    color: 5814783
  }]
};

fetch(webhookUrl, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(message)
})
.then(res => console.log("Gönderildi"))
.catch(err => console.error("Hata:", err));

Gelişmiş Mesajlar (Embeds)

Normal metin (content) 2000 karakterle sınırlıdır ve basit görünür. Güzel bildirimler için Embeds (gömülü bloklar) kullanın. Başlıklar, renkler, alanlar ve alt bilgiler eklemenize olanak tanır.

Embed Yapısı

{
  "content": "Dikkat! Kritik hata.",
  "embeds": [
    {
      "title": "Veritabanı Hatası",
      "description": "Ana kümeye bağlanılamadı.",
      "color": 15158332, 
      "fields": [
        {
          "name": "Sunucu",
          "value": "db-primary-01",
          "inline": true
        },
        {
          "name": "Hata Kodu",
          "value": "`CONN_REFUSED`",
          "inline": true
        }
      ],
      "footer": {
        "text": "Monitoring System v2.0"
      },
      "timestamp": "2026-04-26T10:00:00.000Z"
    }
  ]
}

Temel parametreler:

  • color: Sayı (HEX renginin ondalık gösterimi). Örneğin, 15158332 kırmızı #E74C3C rengidir.
  • fields: name ve value alanlarına sahip nesneler dizisi. inline: true parametresi alanları tek bir satıra dizer (en fazla 3 adet).
  • timestamp: ISO 8601 formatında zaman. Kartın alt kısmında görüntülenir.

Tek bir mesajda 10'a kadar embed gönderebilirsiniz, ancak okunabilirlik için genellikle iyi biçimlendirilmiş tek bir blok yeterlidir.

Yaygın Hatalar ve Güvenlik

Webhook entegrasyonu sırasında geliştiriciler sıkça aşağıdaki sorunlarla karşılaşır:

HataNedenÇözüm
400 Bad RequestGeçersiz JSON formatı veya eksik Content-Type başlığı.JSON sözdizimini kontrol edin ve başlığın gönderildiğinden emin olun.
404 Not FoundGeçersiz webhook URL'si veya silinmiş olması.Webhook'u yeniden oluşturun ve koddaki URL'yi güncelleyin.
429 Too Many RequestsGönderim limiti (rate-limit) aşıldı.Discord, istek sıklığını sınırlar (genellikle tek bir webhook için 2 saniyede 5 istek). Koda gecikme ekleyin.
Mesaj gelmiyorGüvenlik duvarı engeli veya kod hatası.Uygulama günlüklerini kontrol edin ve isteği yerel olarak Postman/cURL ile göndermeyi deneyin.

Güvenlik Önerileri

  1. URL'yi ortam değişkenlerinde saklayın. .env dosyalarını veya CI/CD sırlarını (GitHub Secrets, GitLab Variables) kullanın.
  2. Anahtarları düzenli olarak değiştirin. Bağlantının sızdığından şüpheleniliyorsa, eski webhook'u silin ve yenisini oluşturun. Eski bağlantı anında çalışmayı durduracaktır.
  3. İzinleri kısıtlayın. Webhook sadece yazabilir. Mesaj geçmişine veya katılımcı listesine erişimi yoktur, bu da veri sızıntısı açısından tam teşekküllü bir bottan daha güvenlidir.

SSS

Kodda gönderici adı değiştirilebilir mi? Evet, JSON istek gövdesinde "username": "Yeni İsim" alanını ileterek. Ancak, webhook ayarlarında bir isim belirlenmişse, bağlama bağlı olarak bu isim üzerine yazılabilir veya yok sayılabilir. İsmi kanal ayarlarında bir kez belirlemek daha iyidir.

Mesaj uzunluğu için bir limit var mı? Evet, content alanı 2000 karakterle sınırlıdır. Embed içindeki description alanı 4096 karakterle sınırlıdır. Metin daha uzunsa, birkaç isteğe bölünmesi gerekir.

Webhook'lar kişisel mesajlarda (DM) çalışır mı? Hayır. Webhook'lar yalnızca sunucularda (guilds) metin kanallarında çalışır. Webhook aracılığıyla bir kullanıcıya özel mesaj göndermek imkansızdır.

Webhook nasıl silinir? Kanal ayarlarına gidin → Entegrasyonlar → Webhooks, istediğiniz webhook'un yanındaki çöp kutusu simgesine tıklayın ve silmeyi onaylayın.