如何仅在特定时间窗口内允许命令?

时间:2018-03-08 02:23:05

标签: python-3.x python-asyncio discord discord.py

我试图让命令只在discord.py中的某个时间内工作,有什么办法可以创建选择语句或使用asyncio函数吗?以下是我的一些代码:

 @client.command(pass_context=True)
 async def pick(ctx):
    oneto5 = str(random.randrange(1, 5))
    await client.say("You recived " + oneto5 + " fish")

更新 这是我更新的代码,但它似乎给了我不可思议的输出。它没有正确迭代。

@client.command(pass_context=True)
async def pick(ctx):
sec = localtime().tm_sec
count = 0
print(sec)
while  (300 >= sec):
    if (1 <= lowFishRange <= 20):
        oneto5 = str(5)
        await client.say("You recived " + oneto5 + " fish")
        await asyncio.sleep(43200)
        return
    else:
        oneto5 = str(1)
        await client.say("You recived " + oneto5 + " fish")
        await asyncio.sleep(43200)
        return
else:
    await client.say("You seemed to have missed the mark, try again when a message appears...")
    await asyncio.sleep(43200)
    return

1 个答案:

答案 0 :(得分:3)

您可以使用struct_time获取localtime的当前时间。这会为您提供当地的小时,分​​钟等。然后您可以将这些与您的目标条件进行比较。例如,如果您只想在上午9点到下午5点之间允许命令,则可以执行

from time import localtime

@client.command(pass_context=True)
async def pick(ctx):
   hour = localtime().tm_hour
   if 9 <= hour < 17:
       oneto5 = str(random.randrange(1, 5))
       await client.say("You recived " + oneto5 + " fish")