Ответы пользователя по тегу Node.js
  • Не определяется connection, что делать?

    pashted
    @pashted
    тыжпрограммист
    вы объявляете
    let connection = message.member.voice.channel.join()
    вверху в одной области видимости, а при вызове if(song === 1){ play(connection, song)} передаете туда эту же переменную из другой области видимости. Конечно же она будет undefined
    можно поступить так:
    let connection;
    client.on('message', async message => {
        if (!message.guild) return;
      
        if (message.content === '/join') {
          if (message.member.voice.channel) {
            connection = message.member.voice.channel.join();
            return message.channel.send('Подключено');   
          } else {
            return message.channel.send('Вы должны сначала подключится к голосовому чату')
          }
        }
      });
      client.on('message', async message =>{
        if(message.content === "/help"){
            return message.channel.send(' ``` /help - помощь по командам\n /join - присоединится к голосовому чату(Вы должны быть подключены к голосовому чату)\n /play - воспроизведение музыки ``` ');
        }
      });
      async function play(song) {
        let music = await ytdl(song, {filter: 'audioonly'})
    
        connection.playStream(music, {valume: 0.5})
        .on('end', () =>{
            songs.shift()
            if(songs.length > 0) play(song)
            else connection.disconnect()
        })
    }
      client.on('message', async message =>{
        if(message.content === "/play"){
           var song = "https://www.youtube.com/watch?v=2ncEBRUmc_w&list=RDw1IYWHHI2-E&index=2";
            if(song === 1){ play(song)}
            else{connection.disconnect()}
        }
      });


    правда, это очень грубо и не будет работать правильно, если у вас будет много подключений. сделайте объект, в котором они будут храниться по отдельности.
    Ответ написан