所以我正在制作一个不和机器人,本质上只是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个请求。