Python Don';我不知道为什么'asyncio.Lock'不起作用

Python Don';我不知道为什么'asyncio.Lock'不起作用,python,python-3.x,locking,discord,discord.py,Python,Python 3.x,Locking,Discord,Discord.py,因此,每当有人键入命令!在聊天室频道中测试,它会将下面的相应字符串打印到聊天频道中。但是,我希望该命令一次只能使用一次,因此我希望锁定该命令,直到它完成: import discord, asyncio, time client = discord.Client() @client.event async def on_message(message): lock = Lock() # define Lock if message.content.lower().starts

因此,每当有人键入命令
!在聊天室频道中测试
,它会将下面的相应字符串打印到聊天频道中。但是,我希望该命令一次只能使用一次,因此我希望锁定该命令,直到它完成:

import discord, asyncio, time

client = discord.Client()

@client.event
async def on_message(message):
    lock = Lock() # define Lock
    if message.content.lower().startswith("!test") and not lock.locked():
        lock.acquire() # Lock the !test command so it can't be used now
        await client.send_message(message.channel,'test1rgews')
        await asyncio.sleep(1)
        await client.send_message(message.channel,'test2thewf')
        await asyncio.sleep(1)
        await client.send_message(message.channel,'test3rhtvw')
        await asyncio.sleep(1)
        await client.send_message(message.channel,'test4trjyr')
        await asyncio.sleep(1)
        await client.send_message(message.channel,'test5dmuye')
        await asyncio.sleep(10)
        lock.release() # Unlock the !test command now

client.run('clienttokenhere')

但是我得到了一个错误,上面写着
namererror:name'Lock'没有定义
,即使我将它定义为
Lock=Lock()

,但导入模块使用它们的名称是不够的。您必须使用
asyncio.Lock
或来自asyncio导入锁的

请不要破坏您的帖子。一旦您发布了一个问题,您就已经将内容授权给了Stack Overflow社区(在CC by SA许可下)。如果您想解除此帖子与您帐户的关联,请参阅。