Код, который вы ищете: asyncio.gather
. Это позволяет вам запускать несколько сопрограмм одновременно и ждать, пока все методы не будут возвращены.
Список возврата из набора находится в порядке входов, а не в порядке завершения задачи.
ret = await asyncio.gather(
client.wait_for_message(timeout=10, check=check1),
client.wait_for_message(timeout=10, check=check2),
client.wait_for_message(timeout=10, check=check3)
)
msg1, msg2, msg3 = *ret
# msg1 has the name
# msg2 has the artist
# msg3 has both
Поскольку перезаписанная версия discord.py имеет client.wait_for
, вместо сообщения None выдается ошибка, вместо этого вы можете сделать это.
ret = await asyncio.gather(
client.wait_for("message", timeout=10, check=check1),
client.wait_for("message", timeout=10, check=check2),
client.wait_for("message", timeout=10, check=check3),
return_exceptions = True
)
# Test for errors
ret = [r if not isinstance(r, Exception) else None for r in ret]
msg1, msg2, msg3 = *ret