💡
Discord.js Dokümantasyonu
  • Hoş geldin!
  • Kodunu güncellerken.
  • SSS
  • KONULAR
    • Ses
    • Web Yapıları
  • Kısmi Öğeler
Powered by GitBook
On this page

Was this helpful?

  1. KONULAR

Ses

PreviousSSSNextWeb Yapıları

Last updated 4 years ago

Was this helpful?

Sese Giriş

Ses discord.js'da çok fazla şeyde kullanılır. Müzik botlarında, kayıtta ve ses aktarımı gibi alanlar buna örnek verilebilir. Discord.js'da bir VoiceConnection elde edebilmek için VoiceChannel'a bağlanmak gerekir.

Başlamadan önce aşağıdaki belirtilenlere sahip olduğunuzdan emin olmalısınız;

  • FFMPEG - npm install ffmpeg-static

  • Herhangi bir opus kodlayıcı;

    • npm install @discordjs/opus (daha fazla performans)

    • npm install opusscript

Tercih edilen ses motoru'tur, opusscript'den daha iyi ve stabil çalışır. Bu iki ses motoru bulunurken, discord.js öncelikli olarak 'u seçecektir. Opusscript; Discord.js'nin kötü çalıştığı koşullarda kullanılabilecek alternatif bir ses motorudur.

Bir Ses Kanalına Katılırken

Aşağıdaki verilen örnek mesaja tepki verir ve herhangi bir hatayı yakalayarak gönderenin ses kanalına katılır. Böylece ses işlemleri yapmaya başlayacağın VoiceConnection'u elde etmene izin verir.

const Discord = require('discord.js');
const client = new Discord.Client();

client.login('token buraya gelmeli.);

client.on('message', async message => {
  // Ses sadece sunucularda çalışır. Eğer bu bir DM üzerinden bize iletilirse
  // bunu görmezden geliriz.
  if (!message.guild) return;

  if (message.content === '/katıl') {
    // Üye sadece ses kanalındaysa, ses kanalına katılması için.
    if (message.member.voice.channel) {
      const connection = await message.member.voice.channel.join();
    } else { // Eğer üye bir ses kanalında değilse, o üyeye cevap ver.
      message.reply('Bir ses kanalına bağlanmalısın!');
    }
  }
});

Bir Ses Kanalında Ses Eylemleri

Önceki örneğimizde bir ses kanalına nasıl bağlanabileceğimizi öğrendik. Artık bu bağlandığımız kanala bir ses gönderebiliriz. Bunun için aşağıda vereceğimiz örneği inceleyin.

Ses kanalında ses oynatma eylemi Ses oynatmanın en basit yolu yerel bir dosya içerisinden oynatabileceğiniz ses dosyalarıdır.

const dispatcher = connection.play('/home/discord/audio.mp3');

Bu durumda dispatcher bir StreamDispatcher'dir. Burada bu ses eyleminin ses seviyesini kontrol edebiliriz.

dispatcher.pause();
dispatcher.resume();

dispatcher.setVolume(0.5); // Sesin yarısı.

dispatcher.on('finish', () => {
  console.log('Oynatmayı bitirdim!');
});

dispatcher.destroy(); // Sesin sonunda yapılacak eylem.

Bu eylemi ilk oynattığımızda da seçenekleri düzenleyebiliriz;

const dispatcher = connection.play('/home/discord/audio.mp3', {
  volume: 0.5,
});

Ne oynatabilirim? Discord.js size bir çok şeyi yapmak için fırsat sunar, hayallerini kolla (ya da kodla) evlat!

// ReadableStreams, Burada basit bir YouTube Linki...
const ytdl = require('ytdl-core');
connection.play(ytdl('https://www.youtube.com/watch?v=ZlAU_w7-Xp8', { filter: 'audioonly' }));

// İnternet üzerindeki bağlantılar için...
connection.play('http://www.sample-videos.com/audio/mp3/wave.mp3');

// Yerel dosyalar için...
connection.play('/home/discord/audio.mp3');

V12'de yeni bir yenilik olan; FFMPEG'i atlayarak, OggOpus ve WebmOpus akışlarını çok daha iyi performansla oynatabilirsiniz. Fakat bunu yaparak artık sese sahip olamayacağınızı unutmamanız gerekir.

connection.play(fs.createReadStream('./media.webm'), {
  type: 'webm/opus',
});

connection.play(fs.createReadStream('./media.ogg'), {
  type: 'ogg/opus',
});

Oynatma türleri ve dahası için dokümantasyonu incelemeyi unutmayın. Geldiği yerde daha fazlası var :]

Ses Yayını Ses yayını, aynı sesi birden çok kanalda çalan "radyo" botları için çok kullanışlıdır. Bu, sesin yalnızca bir kez dönüştürüldüğü ve performans açısından daha fazla şey vadettiği anlamına geliyor.

const broadcast = client.voice.createBroadcast();

broadcast.on('subscribe', dispatcher => {
  console.log('Yeni abone duyurusu!');
});

broadcast.on('unsubscribe', dispatcher => {
  console.log('Üye kanala abone olmaktan çıktı :(');
});

Aşağıda verilen; broadcast, normal VoiceConnections ile kullandığınız aynı oynatma yöntemine sahip bir VoiceBroadcast örneğidir

const dispatcher = broadcast.play('./audio.mp3');

connection.play(broadcast);

@discordjs/opus
@discordjs/opus