如何在没有代码等待discord.py的情况下等待消息



所以我正在制作一个不和机器人,本质上只是ping垃圾邮件给他们选择的人。我们的目标是让那个人上网,但一旦他们上网,我想让被垃圾邮件的人找到一种方法来阻止它,因为机器人已经成功地让那个人上线了。

我尝试使用client.wait_fo("message"(,但正如它所说,它会等待消息,直到收到消息才继续循环。有没有一种方法可以在等待消息的同时让循环仍然运行?

@client.command()
async def test(ctx):
ping = 10
while ping > 0:
msg = await client.wait_for("message")
if msg.content == "stop":
break
await ctx.send("test")
ping = ping - 1

您可以向wait_for添加超时

@client.command()
async def test(ctx):
ping = 10
while ping > 0:
try:
msg = await client.wait_for("message", timeout=2.0)  # seconds
except asyncio.TimeoutError:  # import asyncio if you haven't yet
# do something if we haven't received a message
else:
# received a message within n seconds
if msg.content == "stop":
break
await ctx.send("test")
ping = ping - 1

请记住,超时时间应超过1秒因为发送消息的速率限制是每个信道每5秒5个请求。

最新更新