Discord Sunucuları İçin Ses Sistemi

Dostlar merhaba. Bugün sizlere gerçekten çok gelişmiş bir sistem tanıtacağım.
Sistemimizin adı: Ses Sistemi

Sistem ne işe yarar?
- Sunucusunda kayıt sistemi olan kullanıcılar bu kod ile gelen kullanıcıları güzel bir sesle karşılayabilir. Ardından yetkili bir kişi kanala girince bot kendini susturarak müziği durdurur.

Kodlar;

JavaScript:
const Discord = require('discord.js'),
client = new Discord.Client({ ws: { intents: Discord.Intents.ALL }}),
ytdlDiscord = require("discord-ytdl-core");

client.on('ready', async() => {
  client.user.setActivity("Ses Botu Yaptırmak İçin: 'furkann#4084");
  play()
})

const setting = {
  channelID: "Ses Kanalı ID",
  modID: "Yetkili Rol ID",
  videoURL: "Çalacak Müzik Linki",
  server: "Sunucu ID"
}

client.on('voiceStateUpdate', async function(oldState, newState){
  if((oldState.member && oldState.member.user.bot) || (newState.member && newState.member.user.bot)) return;
  if(newState.channelID == setting.channelID){
    if(client.channels.cache.get(setting.channelID).members.some(member => member.roles.cache.has(setting.modID)) == true)
     client.guilds.cache.get(setting.server).me.voice.setMute(true)
  } else if(oldState.channelID == setting.channelID){
    if(client.channels.cache.get(setting.channelID).members.some(member => member.roles.cache.has(setting.modID)) == false)  play()
  }
})

async function play(){
  let url = await ytdlDiscord(setting.videoURL, {
            filter: "audioonly",
            opusEncoded: true,
            encoderArgs: ['-af', 'bass=g=10,dynaudnorm=f=200']
    });

  let streamType = setting.videoURL.includes("youtube.com") ? "opus" : "ogg/opus";
  client.channels.cache.get(setting.channelID).join().then(async connection => {
    if(client.channels.cache.get(setting.channelID).members.some(member => member.roles.cache.has(setting.modID)) == false) {
     client.guilds.cache.get(setting.server).me.voice.setMute(false)
      connection.play(url, {type: streamType}).on("finish", () => {
        play(url);
      });
    } else play(url);
  });
}

client.login("BotTokeni")

Buradaki settings kısmında bazı şeyleri tanımladık. Tanımladığımız şeyler;
Birisi gelince çalacak müzik, yetkili rolü, sunucu ve botun gireceği ses kanalı.

JavaScript:
client.on('voiceStateUpdate', async function(oldState, newState){
  if((oldState.member && oldState.member.user.bot) || (newState.member && newState.member.user.bot)) return;
  if(newState.channelID == setting.channelID){
    if(client.channels.cache.get(setting.channelID).members.some(member => member.roles.cache.has(setting.modID)) == true)
     client.guilds.cache.get(setting.server).me.voice.setMute(true)
  } else if(oldState.channelID == setting.channelID){
    if(client.channels.cache.get(setting.channelID).members.some(member => member.roles.cache.has(setting.modID)) == false)  play()
  }
})

Burada öncelikle botun sese girmesini, ardından yetkili kanala girince botun kendini susturmasını ve müziği durdurmasını ayarladık.

JavaScript:
async function play(){
  let url = await ytdlDiscord(setting.videoURL, {
            filter: "audioonly",
            opusEncoded: true,
            encoderArgs: ['-af', 'bass=g=10,dynaudnorm=f=200']
    });

  let streamType = setting.videoURL.includes("youtube.com") ? "opus" : "ogg/opus";
  client.channels.cache.get(setting.channelID).join().then(async connection => {
    if(client.channels.cache.get(setting.channelID).members.some(member => member.roles.cache.has(setting.modID)) == false) {
     client.guilds.cache.get(setting.server).me.voice.setMute(false)
      connection.play(url, {type: streamType}).on("finish", () => {
        play(url);
      });
    } else play(url);
  });
}

Burada ise çalacak müziği ve nasıl çalacağını ayarladık. Müziği settings kısmına girdiğimiz videoURL yerindeki linki çalmasını söyledik. Ardından yetkili ayrıldıktan sonra müziğe devam etmesini sağladık.

JavaScript:
client.login("BotTokeni")

Buraya ise botun açılacağı tokeni girdik ve botumu açmayı başardık.

Düşüncelerinizi yorumlar kısmından belirtmeyi unutmayın.
Gayet güzel bir konuya benziyor. Bot işleriyle ilgilenen bir arkadaşım var ona etiket atayım da baksın. Belki bu konu işine yarar.
@Çileklisüt

Hatırladığım sunucuları attım phytonicte vardı kaldırılmış galiba Vortex codede var.
Şimdi Forumda birisi bir ürün incelese ona da mı "Zaten inceleyen var, benzer şeyler yazmışsınız aynısı şu sitede var." diyeceksiniz? Çok saçma bir görüş bu. Kodlar paylaşıldıkça güzeldir. Bu Forumda İngilizce makaleleri Türkçeye çevirip biraz düzenleyip önümüze sunanlar da mevcut. Ancak kimse onlara "Zaten bu makale şu sitede var" demiyor. Sizin amacınız galiba konuyu saptırmak?
 

Geri
Yukarı