Код: Выделить всё
# Importing libraries
import discord
import os
import asyncio
import youtube_dl
import time
# Discord bot Initialization
intents = discord.Intents.default()
intents.members = True
intents.messages = True
client = discord.Client(intents=intents)
key = "" # Removed from example code, but is present in actual use
voice_clients = {}
yt_dl_opts = {'format': 'bestaudio/best'}
ytdl = youtube_dl.YoutubeDL(yt_dl_opts)
ffmpeg_options = {'options': "-vn"}
# This event happens when the bot gets run
@client.event
async def on_ready():
print(f"Bot logged in as {client.user}")
# This event happens when a message gets sent
@client.event
async def on_message(msg):
if msg.content.startswith("?play"):
voice_client = await msg.author.voice.channel.connect()
voice_clients[voice_client.guild.id] = voice_client
print(voice_clients)
url = msg.content.split()[1]
loop = asyncio.get_event_loop()
data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=False))
song = data['url']
player = discord.FFmpegPCMAudio(song, **ffmpeg_options,executable="/Users/Oyavo/Desktop/ffmpeg.exe")
voice_clients[msg.guild.id].play(player)
if msg.content.startswith("?pause"):
voice_clients[msg.guild.id].pause()
# This resumes the current song playing if it's been paused
if msg.content.startswith("?resume"):
voice_clients[msg.guild.id].resume()
# This stops the current playing song
if msg.content.startswith("?stop"):
voice_clients[msg.guild.id].stop()
await voice_clients[msg.guild.id].disconnect()
client.run(key)
Похоже, что voice_client не добавляется в voice_clients после подключения, однако добавление voice_channel вручную через client.get_channel(msg.author.id).play(player) приводит к той же ошибке, поэтому я не знаю, как действовать.
Я последовал предложениям в комментариях, установил PyNaCl, и FFmPeg, похоже, работает нормально при тестировании в одиночку. Есть ли какие-либо рекомендации, как определить проблему?
Подробнее здесь: https://stackoverflow.com/questions/792 ... subsequent