使不和谐的机器人能够一次处理多个输入
Making a discord bot able to handle several inputs at once
这是一个非常基本的问题,但问题就在这里。我正在尝试制作一个不和谐的机器人,它接收一条消息并将其延迟一段时间。但是,它一次只能处理一条消息,并且在该消息通过之前不会延迟任何其他消息。有没有办法让机器人可以一次处理所有消息?
这是函数的代码
@client.event
async def on_message(message):
if not message.author.bot:
await message.delete()
time.sleep(100)
await message.channel.send('{} : {}'.format(message.author.name,
message.content))
await client.process_commands(message)
这是因为 time.sleep()
会阻止代码并几乎停止一切工作,直到时间设置到期。你要用的是asyncio.sleep()
import asyncio
@client.event
async def on_message(message):
if not message.author.bot:
await message.delete()
await asyncio.sleep(100)
await message.channel.send('{} : {}'.format(message.author.name,
message.content))
await client.process_commands(message)
asyncio.sleep()
仍然允许您做您打算做的事情,但也允许机器人继续工作并接受更多 requests/tasks.
这是一个非常基本的问题,但问题就在这里。我正在尝试制作一个不和谐的机器人,它接收一条消息并将其延迟一段时间。但是,它一次只能处理一条消息,并且在该消息通过之前不会延迟任何其他消息。有没有办法让机器人可以一次处理所有消息? 这是函数的代码
@client.event
async def on_message(message):
if not message.author.bot:
await message.delete()
time.sleep(100)
await message.channel.send('{} : {}'.format(message.author.name,
message.content))
await client.process_commands(message)
这是因为 time.sleep()
会阻止代码并几乎停止一切工作,直到时间设置到期。你要用的是asyncio.sleep()
import asyncio
@client.event
async def on_message(message):
if not message.author.bot:
await message.delete()
await asyncio.sleep(100)
await message.channel.send('{} : {}'.format(message.author.name,
message.content))
await client.process_commands(message)
asyncio.sleep()
仍然允许您做您打算做的事情,但也允许机器人继续工作并接受更多 requests/tasks.