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

2024-06-17 12:08:39 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我制作了一个discord机器人,本质上就是ping向他们选择的人发送垃圾邮件。我们的目标是让那个人在线,但一旦他们在线,我想让那个收到垃圾邮件的人停止它,因为机器人已经成功让那个人在线

我尝试使用client.wait_for(“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

Tags: testclient消息message目标for垃圾邮件机器人
1条回答
网友
1楼 · 发布于 2024-06-17 12:08:39

您可以将超时添加到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个请求

相关问题 更多 >