Discord.py подключен к голосовому каналу, не воспроизводит звук и не выполняет последующий кодPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Discord.py подключен к голосовому каналу, не воспроизводит звук и не выполняет последующий код

Сообщение Anonymous »

Я изучаю это руководство по музыкальному боту, однако кажется, что бот подключается только к голосовому каналу без воспроизведения звука.

Код: Выделить всё

# 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)
Команда print(voice_clients) не загружается, и привязка ее к другим командам при попытке их выполнения (например, ?resume) приводит к ошибке ключа из-за того, что словарь voice_clients пуст.< /p>
Похоже, что voice_client не добавляется в voice_clients после подключения, однако добавление voice_channel вручную через client.get_channel(msg.author.id).play(player) приводит к той же ошибке, поэтому я не знаю, как действовать.
Я последовал предложениям в комментариях, установил PyNaCl, и FFmPeg, похоже, работает нормально при тестировании в одиночку. Есть ли какие-либо рекомендации, как определить проблему?

Подробнее здесь: https://stackoverflow.com/questions/792 ... subsequent
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»