title: How to write a Discord music bot without FFmpeg?
body: <p>I am writing a Discord music bot. No experience. I found a way on YouTube only through youtube _dl and FFmpeg. In this case, the bot first downloads video from YT in .mp3 format and only then broadcasts it to voice chat. How can I make the bot directly relay the video to the voice chat, rather than download it? Thank you in advance.</p>
  <pre><code>@client.command()
  async def play(ctx, url: str):
      song_there = os.path.isfile('song.mp3')
  
      try:
          if song_there:
              os.remove('song.mp3')
              print('[log] Старый файл удалён')
  
      except PermissionError:
          print('[log] Не удалось удалить файл')
  
      await ctx.send('Пожалуйста, ожидайте')
  
      voice = get(client.voice_clients, guild=ctx.guild)
  
      ydl_opts = {
          'format': 'bestaudio/best',
          'postprocessors': [{
              'key': 'FFmpegExtractAudio',
              'preferredcodec': 'mp3',
              'preferredquality': '192'
          }]
      }
  
      with youtube_dl.YoutubeDL(ydl_opts) as ydl:
          print('[log] Загружаю музыку...')
          ydl.download([url])
  
      for file in os.listdir('./'):
          if file.endswith('.mp3'):
              name = file
              print('[log] Переименовываю файл: {file}.')
              os.rename(file, 'song.mp3')
  
      voice.play(discord.FFmpegPCMAudio('song.mp3'), after=lambda e: print(
          f'[log] {name}, музыка закончила своё проигрывание.'))
      voice.source = discord.PCMVolumeTransformer(voice.source)
      voice.source.volume = 0.07
  
      song_name = name.rsplit('-', 2)
      await ctx.send(f'Сейчас проигрывается музыка: {song_name[0]}')
  </code></pre>