这是我的代码:
import discord
import asyncio
async def ex(args, message, client, invoke):
await client.send_message(message.channel, "5 Minutes")
await asyncio.sleep(60)
await client.send_message(message.channel, "4 Minutes")
await asyncio.sleep(60)
await client.send_message(message.channel, "3 Minutes")
await asyncio.sleep(60)
await client.send_message(message.channel, "2 Minutes")
await asyncio.sleep(60)
await client.send_message(message.channel, "1 Minutes")
await asyncio.sleep(30)
await client.send_message(message.channel, "30 Seconds")
await asyncio.sleep(15)
await client.send_message(message.channel, "15 Seconds")
await asyncio.sleep(10)
await client.send_message(message.channel, "5 Seconds")
#Already Running Message
#await client.send_message(message.channel, embed=discord.Embed(color=discord.Color.red(), description="Countdown already running, please try again later!"))
我想做到这一点,因此倒计时只能一次运行一次。现在,您可以随时随地进行倒数计时。
答案 0 :(得分:1)
您可以使用一个全局变量来跟踪计数器是否在运行中。像这样:
counter_channel = None
async def ex(args, message, client, invoke):
global counter_channel
if counter_channel is not None:
await client.send_message(message.channel, "There is a counter in {}".format(counter_channel.mention))
return
counter_channel = message.channel
await client.send_message(message.channel, "5 Minutes")
await asyncio.sleep(60)
...
await client.send_message(message.channel, "5 Seconds")
await asyncio.sleep(5)
counter_channel = None
您还可以通过维护全局set
的通道或服务器ID来基于每个服务器或每个通道使用它们。