2017-05-30 61 views
0

所以我有這樣的事情:如何用啓動它的相同觸發器來停止無限循環?

import discord, asyncio 

client = discord.Client() 

@client.event 
async def on_message(message): 
    if message.content.lower().startswith("!test"): 
     await client.delete_message(message) 
     test1 = await client.send_message(message.channel, "%s test1" % (message.author.mention)) 
     await asyncio.sleep(1) 
     while True: 
      #newtest = await client.wait_for_message() 
      #if newtest.content.lower().startswith("!test"): 
       #return 0 
      #else: 
       test2 = await client.edit_message(test1, "%s test2" % (message.author.mention)) 
       await asyncio.sleep(1) 
       await client.edit_message(test2, "%s test1" % (message.author.mention)) 
       await asyncio.sleep(1) 

client.run('ClientTokenHere') 

它是什麼,如果有人類型!test到聊天頻道,該腳本將刪除!test消息,然後將消息發送到該說的人的聊天名稱後跟文字test1。然後腳本將編輯該消息在一秒鐘後說出test2,然後它將編輯相同的消息說test1,然後再次到test2等等永遠。

但是,我想這樣做,以便如果另一個用戶再次鍵入相同的命令!test,腳本將立即停止爲之前激活的用戶,並開始爲最近的用戶發佈命令。我注意到的線是我試圖實現這一目標的嘗試。我怎麼能做到這一點?

回答

0

您可以使用全局變量設置您所關注的用戶。如果用戶更改,則可以中止while循環並停止。