Rehber Discord.js V12, botun yazdığınız müziği çalmasını sağlamak

Geçen rehber:
Neden linkle çalışıyor bu dedim ve ortaya bu çıktı.
Gerekli modüller:
JavaScript:
const Discord = require('discord.js');
//Discord.js.
const ytdl = require('ytdl-core');
//ytdl-core.
const opus = require('opusscript');
//opusscript
Ayrıca FFMPEG gerekli. Onu şöyle kuracaksınız:
Sonra bunun içindeki 3 exe olan klasörü bir yere çıkartalım.

1611057744033.png



Önerim benim yaptığımın aynısını yapmanız: Yani direkt C'nin içindeki ffmpeg klasörüne çıkamanız.

Sonra "gelişmiş sistem seçeneklerini" açın, oradan ortam değişkenlerine girin. X için kullanıcı değişkenleri bölümünün altında buluna Path'ye basın.
Oradan "yeni" ye basın. Sonra oraya klasörü açtığınız yeri yazın. Benim yaptığım gibi yaparsanız, direkt C:\ffmpeg\ yazacaksınız.

1611058308937.png



Sonra aynısını sistem değişkenleri adı altındaki Path'ya da yapıyoruz.

1611058463084.png



Olup olmadığını test etmek için CMD'yi yönetici olarak çalıştırıyor, ve şunu yazıyoruz: ffmpeg
Böyle şeyler yazarsa tamam demektir:

1611058599068.png
FFMPEG kurulumundaki yardımlarından dolayı Firehorse MK II'ye teşekkürler.

Kodumuz:
[CODE lang="javascript" title="Discord.js"]
const ytdl = require('ytdl-core');
const ytSearch = require('yt-search');
const opus = require('opusscript');
module.exports = {
name: "çal",
description: "Müzik çalar",

async run (client, message, args) {

const sesKanalı = message.member.voice.channel;

if (!message.member.voice.channel) return message.channel.send('Müzik dinlemek için önce **ses kanalına** bağlanman gerekir.')

if (message.guild.me.voice.channel) return message.channel.send('Hali hazırda bot **birisi** için çalıyor.');

if (!args.length) return message.channel.send('Lütfen şarkının **adını** gir..');



const connection = await sesKanalı.join();

const videoFinder = async (query) => {
const videoResult = await ytSearch(query);
return (videoResult.videos.length > 1) ? videoResult.videos[0] : null;
}

const video = await videoFinder(args.join(' '));

if(video){
const stream = ytdl(video.url, {filter: 'audioonly'});
connection.play(stream, {seek: 8, volume: 1})
.on('finish', () =>{
sesKanalı.leave();

});

let bu = await message.reply('Şarkı çalınmaya başlandı: ' + video.url )
bu.react('🎶');
bu.react('🎵');
bu.react('🎸');
} else {
message.reply('Böyle bir şarkı yok Youtubenin içinde!');
}
}
}
[/CODE]
Nasıl çalışıyor?
1. Kodun hangi kelimeyle çalışacağı belirlenir:
JavaScript:
const ytdl = require('ytdl-core'); //modüller tanımlanır
const ytSearch = require('yt-search');
const opus = require('opusscript');

module.exports = {
    name: "çal", //komudun adı yazılır
    description: "Müzik çalar",
}


2. Bir tuhaflık durumunda botun vereceği tepkiler ve ses kanalı belirlenir:
JavaScript:
const voiceChannel = message.member.voice.channel; //ses kanalı tanımlanır

      if (!message.member.voice.channel) return message.channel.send('Müzik dinlemek için önce **ses kanalına** bağlanman gerekir.')

      if (message.guild.me.voice.channel) return message.channel.send('Hali hazırda bot **birisi** için çalıyor.');

      if (!args.length) return message.channel.send('Lütfen şarkının **adını** gir..');
//hata durumunda botun komutu durdurması sağlanır
Buradaki ses kanalı tanımlamasıyla botun sadece belli bir kanalda çalması sağlanabilir. Ben tek kanalda çalışmasını önermem. Örnek:
JavaScript:
      if (!message.member.voice.channel = "müzik kanalı İD") return message.channel.send("X kanalı dışında müzik çalmaz bot!")

3. Ses kanalına giriş, şarkıyı bulma ve müzik bitince durma,(oynamanızı önermem):
JavaScript:
const connection = await voiceChannel.join();

      const videoFinder = async (query) => { //şarkıyı bulur
          const videoResult = await ytSearch(query);
          return (videoResult.videos.length > 1) ? videoResult.videos[0] : null;
      }

      const video = await videoFinder(args.join(' '));

      if(video){
          const stream = ytdl(video.url, {filter: 'audioonly'});
          connection.play(stream, {seek: 8, volume: 1})
          .on('finish', () =>{
              voiceChannel.leave(); //şarkı bitince ses kanalından ayrılır.
         
          });

4. Şarkıyı başlattığına dair mesaj atma ve mesajına tepki verme, ayrıca şarkı yoksa uyarma.:
JavaScript:
 let bu = await message.reply('Şarkı çalınmaya başlandı: ' + video.url ) //mesaj
          bu.react('🎶');
          bu.react('🎵'); //vereceği tepkiler.
          bu.react('🎸');
      } else {
          message.reply('Böyle bir şarkı yok Youtubenin içinde!');
      } //youtubede şarkıyı bulamazsa.

Durdurma komutu:
JavaScript:
if (msg.content.startsWith(prefix + "dur")) { //dur yerine yazdığınız şey şarkıyı durdurur:/
msg.guild.me.voice.channel.leave();
}
2. Alternatif:
JavaScript:
module.exports = {
    name: "dur",
    description: "Müzik çalar",

    async run (client, message, args, ops) {
 
      message.guild.me.voice.channel.leave();
      message.channel.send("ses kanalından ayrıldım :/")


    }


}
Eğer istek olursa radyo komutu da yayınlarım.
1620744280163.png

1620744184243.png

1620744142102.png

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
@349398 ❤️
 
Son düzenleme:
Bence Discord js yerine C++ programlama dilini öğren, orada para var.
Sence ben bunu para için mi yazıyorum? Ayrıca C++ Discord botu yazmak için iyi bir dil değil. Hatta PY ve JS varken hiç değil.
Bir de Discord.js bir programlama dili değil. Modülün ismi.
 
Sence ben bunu para için mi yazıyorum? Ayrıca C++ Discord botu yazmak için iyi bir dil değil. Hatta py ve js varken hiç değil.
Bir de Discord.js bir programlama dili değil. Modülün ismi.

Özür dilerim zoruna gittiğim için, ben seni düşünerek söyledim ama beni ilgilendirmez doğru.
 

Geri
Yukarı