Как сделать поиск бота discord, а затем воспроизвести ссылку только одной командой

#python #discord

Вопрос:

Ошибка была простой, две команды просто нужно было объединить в 1 команду, удалив 2-ю команду. Ошибка была легкой, вот код, если кому-то он нужен. Хотя это против сервисов Youtube, так что будьте осторожны

@client.command() асинхронная защита youtube(ctx, *, поиск):

 query_string = urllib.parse.urlencode({
    'search_query': search
})
htm_content = urllib.request.urlopen(
    'https://www.youtube.com/results?'   query_string
)
search_results = re.findall(r"watch?v=(S{11})", htm_content.read().decode())
await ctx.send('play www.youtube.com/watch?v='   search_results[0])

url = ("www.youtube.com/watch?v="   search_results[0])

song_there = os.path.isfile("song.mp3")
try:
    if song_there:
        os.remove("song.mp3")
except PermissionError:
    await ctx.send("You are not in a vc!")
    return

VoiceChannel = discord.utils.get(ctx.guild.voice_channels, name='🔊Voice Channel 1🔊')
await VoiceChannel.connect()
voice = discord.utils.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:
    ydl.download([url])
for file in os.listdir("./"):
    if file.endswith(".mp3"):
        os.rename(file, "song.mp3")
voice.play(discord.FFmpegPCMAudio("song.mp3"))
 

Комментарии:

1. Так что у меня недостаточно опыта, чтобы догадаться, как именно это исправить, но я решил добавить свои 2 цента. Можно ли добавить подкоманду для воспроизведения звука? Например, как только поиск будет завершен, вы импортируете другой скрипт, который затем вытащит загрузку и фактически начнет ее воспроизведение? Несмотря на это, мне интересно узнать, может ли кто-нибудь помочь с этим, так как это определенно то, что я хотел бы добавить в свой собственный бот Discord.

2. Спасибо за помощь. Все, что мне нужно было сделать, это сделать команду YouTube ведущей в команду воспроизведения без какой-либо команды воспроизведения. Я отредактировал сообщение с решением, спасибо за помощь.