#discord.py
Вопрос:
Я пытаюсь создать музыкального бота Discord. Когда кто-то это делает !воспроизведение (название песни), он будет искать название песни в Google и брать все ссылки с «youtube.com/watch» и скачай его. Прямо сейчас я понял, как сделать это локально в терминале. Проблема в том, что я не знаю, как спросить автора команды, какой выбор песни они хотят, если появится несколько ссылок с «youtube.com/watch» Вот мой код:
ytlinks = searchForLink(link, 10)
# ask which link
if len(ytlinks) > 1:
await ctx.send(str(ytlinks))
await ctx.send("Which link do you want to use?")
# want code here to take next message after the "Which link do you want to use?" and set to var "linkchoice"
linkchoice = ''
if (not int(linkchoice) <= 10) or (not int(linkchoice) >= 1):
await ctx.send("Not an integer or not valid option")
linkchoice = int(linkchoice) - 1
ytlinks = ytlinks[int(linkchoice)]
Комментарии:
1. вы знаете об
wait_for
этом ? discordpy.readthedocs.io/en/master/ext/commands/…2. @moinierer3000 Я довольно новичок в кодировании, поэтому я не уверен, как реализовать «wait_for» в команде. В документации он используется в событии on_message, как я могу использовать его в своем командном коде?
3. Конечно, я написал комментарий ниже с примером. Надеюсь, это поможет!
Ответ №1:
Как сказано в моем комментарии, вот базовый пример с вашим кодом о том, как вы можете реализовать wait_for
.
#just hardcoding some list for demonstration purposes
ytlinks = ["https://youtube.com/123", "https://youtube.com/456", "https://youtube.com/789"]
if len(ytlinks) > 1:
await ctx.send(str(ytlinks))
await ctx.send("Which link do you want to use?")
def check(message):
return message.author == ctx.author
try:
message = await self.bot.wait_for('message', timeout=60.0, check=check)
except asyncio.TimeoutError:
ctx.send("You took too long to respond!")
return
else:
linkchoice = message.content
if (not int(linkchoice) <= 10) or (not int(linkchoice) >= 1):
await ctx.send("Not an integer or not valid option")
return
await ctx.send(f"You chose link #{linkchoice}:n{ytlinks[int(linkchoice)-1]}")