#python #discord #discord.py #discord.py-rewrite
#python #Discord #discord.py
Вопрос:
Привет, ребята,
Я пытаюсь создать свой собственный музыкальный бот прямо сейчас.
Но у меня есть некоторые проблемы, и я надеюсь, что вы сможете мне помочь 🙂
Как выглядит мой код:
from discord import Game, Intents
from discord.ext import commands
from os import environ, listdir
from pafy import new
from discord import FFmpegPCMAudio
import asyncio
import urllib.parse, urllib.request, re
intents = Intents.all()
client = commands.Bot(command_prefix='?', intents=intents)
@client.event
async def on_ready():
print(f'Bot is ready to go!')
@client.command(pass_context=True)
async def play(ctx, url):
ffmpeg_opts = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
if not ctx.message.author.voice:
await ctx.send("**Please connect to a voice channel!**")
return
channel = ctx.author.voice.channel
voice = await channel.connect()
await ctx.send(f':pushpin: Music bot connected to {channel}n:mag_right: **Searching for** ``' url "``")
video = new(url)
audio = video.getbestaudio().url
voice.play(FFmpegPCMAudio(audio, **ffmpeg_opts))
voice.is_playing()
@client.command()
async def join(ctx):
if not ctx.message.author.voice:
await ctx.send("You are not connected to a voice channel!")
return
else:
channel = ctx.message.author.voice.channel
await ctx.send(f'Connected to ``{channel}``')
await channel.connect()
@client.command()
async def leave(ctx):
voice_client = ctx.message.guild.voice_client
user = ctx.message.author.mention
await voice_client.disconnect()
await ctx.send(f'Disconnected from {user}')
client.run(TOKEN)
Итак, теперь у меня две основные проблемы:
- Youtube-dl больше не поддерживается, поэтому я переключился на pafy
но я все еще получаю эту ошибку
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: OSError: ERROR: Unable to extract JS player URL; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Самое смешное, что я не получаю эту ошибку каждый раз, когда использую бота: (
и вторая проблема заключается в том, что мне нужно отключать бота каждый раз, когда я хочу записать песню.
Как я могу использовать что-то вроде очереди? — Я не хочу каждый раз отключать бота…
Спасибо!
Ответ №1:
youtube-dl больше не существует. В качестве альтернативы я бы рекомендовал использовать lavalink с библиотекой wavelink. Он получил гораздо больше функциональности.
Ответ №2:
Прежде всего удалите youtube-dl:
pip uninstall youtube-dl
Теперь о том, как я это сделал:
На Github появился новый Youtube-dl
Если вы используете Windows, установите его с помощью этой команды:
pip install -U git https://github.com/l1ving/youtube-dl
И все готово — иногда я получаю сообщение об ошибке типа
ОШИБКА: Не удалось извлечь URL-адрес JS player
но если это произойдет, вам просто нужно перезапустить бота, и он снова заработает