2017-05-29 3 views
0

Ainsi, lorsque quelqu'un tape la commande !test dans le canal chatroom, il imprime les chaînes ci-dessous dans le canal de discussion. Cependant, je veux que la commande à utiliser une seule fois à la fois, donc je veux verrouiller la commande jusqu'à ce qu'il soit terminé:Je ne sais pas pourquoi `asyncio.Lock` ne fonctionne pas

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') 

Mais je reçois une erreur qui dit NameError: name 'Lock' is not defined, même si je ne définissaient comme lock = Lock().

+0

Veuillez ne pas vandaliser vos messages. Une fois que vous avez publié une question, vous avez concédé sous licence le contenu à la communauté Stack Overflow en général (sous la licence CC-by-SA). Si vous souhaitez dissocier ce message de votre compte, voir [Quel est le chemin approprié pour une demande de dissociation?] (Http://meta.stackoverflow.com/questions/323395/what-is-the-proper-route- for-a-dissociation-request). – FelixSFD

Répondre

0

Il ne suffit pas d'importer des modules pour utiliser leurs noms. Vous devez utiliser asyncio.Lock ou from asyncio import Lock.