Python 多个等待消息discord.py

Python 多个等待消息discord.py,python,discord.py,python-asyncio,Python,Discord.py,Python Asyncio,我要做的事:这与我正在制作一个多人游戏的情况类似。我希望同时获得多个用户输入,基本上是我发现的另一个问题()中的情况 我的问题:每次我都需要向不同的人发送消息。基本上,一场游戏可能有3名玩家,而另一场可能有5名玩家。最初的目的也是同时向用户的dms发送一条消息,并让他们回答那里的输入。我不确定如何定义我的代码中所需的等待时间的数量 代码尝试1: #齿轮内部 @commands.command() 异步def bagpie(self、ctx、*成员:discord.Member): 成员=列表(成

我要做的事:这与我正在制作一个多人游戏的情况类似。我希望同时获得多个用户输入,基本上是我发现的另一个问题()中的情况

我的问题:每次我都需要向不同的人发送消息。基本上,一场游戏可能有3名玩家,而另一场可能有5名玩家。最初的目的也是同时向用户的dms发送一条消息,并让他们回答那里的输入。我不确定如何定义我的代码中所需的
等待时间的数量

代码尝试1

#齿轮内部
@commands.command()
异步def bagpie(self、ctx、*成员:discord.Member):
成员=列表(成员)
如果ctx.author不在成员中:
members.append(ctx.author)
如果len(成员)>3:
返回
#核对
def check1(消息):
return msg.author==成员[0]
def check2(消息):
return msg.author==成员[1]
def check3(消息):
return msg.author==成员[2]
#正在使用检查等待多条消息
ret=等待asyncio.gather(
等待self.bot.wait_for(“消息”,超时=10,检查=check1),
等待self.bot.wait_for(“消息”,超时=10,检查=check2),
等待self.bot.wait_for(“消息”,超时=10,检查=check3),
return\u exceptions=True
)
#测试错误
ret=[r如果不存在(r,异常),则表示ret中的r没有]
msg1、msg2、msg3=ret#*ret将导致发生错误
#安装程序嵌入以发送最终产品
fin_string=“”
计数=0
msg_list=[msg1、msg2、msg3]
对于成员中的成员:
fin_string+=f“{member}表示:{msg_list[count]}”
计数+=1
embed=discord.embed(title=“这就是你说的!”,description=fin\u string)
等待ctx.send(嵌入=嵌入)
结果:正如您所看到的,尽管有输入,bot没有响应,而是恢复到超时

代码尝试2

#无法使此项在齿轮中工作,因此此项不在齿轮中
#检查它是否为dm,以及作者是否为成员
def正在检查(成员):
def内部检查(msg):
return msg.author.id==member.id,msg.guild为无
返回内部检查
#向成员发送消息并等待消息
异步def get_输入(成员):
等待成员发送(“请提供输入:”)
返回客户端。等待('message',check=is\u dm\u check(成员),超时=75)
@client.command()
异步def play_游戏(ctx,成员:commands.Greedy[discord.Member]=None):
如果不是成员:
等待ctx发送(“无玩家”)
返回
如果ctx.author不在成员中:
members.append(ctx.author)
responses=asyncio.gather(*映射(获取输入,成员))
对于成员,zip中的响应(成员,响应):
等待ctx.send(f“{member.notice}:{response.content}”)
结果:消息应该是同时发送的,但是它仍然抛出一个错误


您是否尝试过包含
while True
循环?您是否意识到您遗漏了几个
wait
循环?与其进行三次单独检查,不如将它们合并为一次检查<代码>定义检查(m):返回成员中的msg.author
@Dominik您指的是哪一个?我可以使用
while True
循环遍历所有成员,但这不会提供我所希望的同步效果。@ukaszKwieciński我不确定我会在哪里遗漏任何
等待
s,你能提到一些我可能遗漏它们的地方吗?