Я делаю музыкального бота для дискорда с нуля, он не будет воспроизводить музыку, но будет подключаться.
вот код, если вы хотите посмотреть на него: https://pastebin.com/vFeW4bWN
@app_commands.command()
@app_commands.describe(url='The Youtube Video Link')
async def play(self, interaction: discord.Interaction, *, url: str):
# Get the voice channel the user is in
User = interaction.user.voice.channel.id
UserChannel = interaction.client.get_channel(User)
# Check if user is in a voice channel
if UserChannel is not None:
# Join the voice channel
await UserChannel.connect()
# Stream the song
async with interaction.channel.typing():
player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True)
interaction.guild.voice_client.play(player, after=lambda e: print(f'Player error {e}') if e else None)
await interaction.response.send_message(f'Now Playing {player.title} Suga!')
# if User is not in Voice Channel, tells user to get into voice channel
else:
await interaction.response.send_message('You have to be in a voice channel to use me!')
согласно документации discord.py, Voice_Client должен иметь параметр воспроизведения, но, похоже, он не работает, и я не могу найти другого способа воспроизведения звука.
Во-первых, вы можете получить авторский канал по channel = interaction.user.voice.channel
Во-вторых, вы можете получить voice_client
через voice = await channel.connect()
Тогда вы можете сделать voice.play(...)
. И не забудьте установить ffmpeg, если хотите использовать его для воспроизведения музыки.