Discord'da müzik botu yapmak, sıradan bir komut botundan farklıdır: metin mesajları gateway ve REST API üzerinden akarken ses, ayrı bir ses gateway'i ve UDP bağlantısı üzerinden gider. Üstelik ses verisinin Opus formatında kodlanması, şifrelenmesi ve artık uçtan uca şifreleme (E2EE) protokolüne uyması gerekir.

Bu yazıda Discord ses bağlantılarının temelini, DAVE adlı uçtan uca şifreleme gereksinimini, discord.js'in @discordjs/voice paketiyle Lavalink arasındaki farkı ve bir Lavalink sunucusunun nasıl kurulacağını resmî belgeler üzerinden anlatıyoruz. Botun genel yapısı için önce Discord bot nasıl yapılır yazımıza göz atabilirsiniz.

Discord ses bağlantısı nasıl çalışır?

Discord ses bağlantısı nasıl çalışır? Ses gateway'i için belgenin önerdiği sürüm 8'dir. Sürüm belirtmeden veya 4'ten..., Taşıma şifrelemesinde aead_aes256_gcm_rtpsize tercih...

Belgelere göre ses bağlantıları gateway'e benzer şekilde çalışır ama farklı bir payload kümesi ve ses verisi için ayrı bir UDP bağlantısı kullanır. Bu yüzden botunuzun çalıştığı makinenin UDP paketlerini alabilmesi, gerekirse bir güvenlik duvarı veya NAT arkasından da bunu yapabilmesi gerekir. Discord, bu durumlar için "IP Discovery" adlı bir mekanizma sunar.

  • Ses gateway'i için belgenin önerdiği sürüm 8'dir. Sürüm belirtmeden veya 4'ten düşük sürümle yapılan bağlantılar 18 Kasım 2024'ten beri reddedilir.
  • Taşıma şifrelemesinde aead_aes256_gcm_rtpsize tercih edilen, aead_xchacha20_poly1305_rtpsize ise zorunlu olarak desteklenmesi gereken moddur.
  • Ses kanalına bağlanmak için CONNECT, ses göndermek için SPEAK izni gerekir. İzinlerin ayrıntısı izinler ve rol hiyerarşisi yazımızda.

Bu ayrıntıları kendiniz yazmanız gerekmez; kütüphaneler sizin yerinize halleder. Ama hangi aracı seçeceğinizi anlamak için arkada ne olduğunu bilmek faydalıdır.

DAVE: uçtan uca şifreleme zorunluluğu

Discord, Eylül 2024'ten itibaren DM, grup DM, ses kanalları ve Go Live yayınlarındaki ses ve görüntüyü uçtan uca şifrelemeye (E2EE) taşıyor. Belgedeki uyarıya göre 1 Mart 2026'dan itibaren bu alanlarda yalnızca E2EE görüşmeler destekleniyor. Bu protokolün adı DAVE'dir ve katılımcılar anahtarlarını bir MLS (Messaging Layer Security) grubu üzerinden değiş tokuş eder.

Pratik sonucu şu: kullandığınız ses kütüphanesinin DAVE desteği olmalı. Eski, bakımı bırakılmış bir ses kütüphanesi ya da Lavalink istemcisi kullanıyorsanız botunuz ses kanalına bağlanamayabilir. İyi haber, popüler araçların büyük kısmı bu desteği ekledi:

  • discord.js rehberine göre @discordjs/voice, DAVE için @snazzah/davey paketini kullanır ve bu paket önceden kurulu gelir.
  • Lavalink, DAVE desteğini v4.2.0 sürümüyle ekledi. Sürüm notları, DAVE kullanmak için istemci kütüphanenizi de destekleyen bir sürüme güncellemeniz gerektiğini belirtir.
  • Lavalink'in istemci listesi, her istemcinin DAVE desteğini ayrı bir sütunda gösterir.

Telif hakkı ve platform kuralları

Sık Sorulan Sorular

Müzik botum ses kanalına giriyor ama ses gelmiyor. Neden?

Önce botun o kanalda Connect ve Speak izinlerini kontrol edin. discord.js kullanıyorsanız GuildVoiceStates intent'inin açık olduğundan, FFmpeg'in kurulu olduğundan emin olun. Lavalink kullanıyorsanız istemci kütüphanenizin ve Lavalink sürümünüzün DAVE destekli olup olmadığına bakın.

Lavalink'i bot ile aynı sunucuda çalıştırabilir miyim?

Evet. Docker belgeleri, bot da bir konteynerdeyse aynı ağa katılıp lavalink servis adını hostname olarak kullanabileceğinizi anlatır. Java'nın bellek sınırını -Xmx ile belirlediğiniz için sunucunuzun belleğini buna göre planlayın.

Müzik botu HTTP interaction ile çalışır mı?

Hayır. Ses için gateway bağlantısı gerekir. HTTP tabanlı botların neyi yapıp neyi yapamadığını HTTP interactions yazımızda anlattık.

Botun sürekli açık kalması için ne yapmalıyım?

Bot ve Lavalink'i bir VDS veya VPS üzerinde servis olarak çalıştırın. Adım adım anlatım botu 7/24 aktif tutma rehberimizde.

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.

İlgili içerikler: Discord botu 7/24 aktif tutma · Bot izinleri ve rol hiyerarşisi · Intent nedir · Bot kütüphaneleri karşılaştırma · Docker Compose rehberi · VDS nedir