Discord Python重写问题-asyncio.sleep()

时间:2020-09-08 12:23:17

标签: python discord.py discord.py-rewrite

是否可以制作

asyncio.sleep()

如果输入的时间是1m,则睡眠60秒;如果输入的时间是1h,或者输入时间是24小时,睡眠60min,它将睡眠1天,如果是,我将需要一个示例,因为我需要它作为赠品代码。

2 个答案:

答案 0 :(得分:1)

asyncio.sleep()仅需几秒钟,您可以为此编写一个函数,将输入的时间转换为秒。

import re
from datetime import timedelta


time_units = {'s': 'seconds', 'm': 'minutes', 'h': 'hours', 'd': 'days', 'w': 'weeks'}


def to_seconds(s):
    return int(timedelta(**{
        time_units.get(m.group('unit').lower(), 'seconds'): int(m.group('val'))
        for m in re.finditer(r'(?P<val>\d+)(?P<unit>[smhdw]?)', s, flags=re.I)
    }).total_seconds())


@client.command()
async def giveaway(ctx, *, time):
    print(f"{ctx.message.content} --> {to_seconds(time)}")

输出:

>giveaway 1w --> 604800
>giveaway 30s --> 30
>giveaway 1d --> 86400
>giveaway 1h 25m --> 5100
>giveaway 5m 30s --> 330

答案 1 :(得分:0)

asyncio.sleep()总是需要几秒钟的延迟-请参见documentation。您可以轻松地编写一个函数,该函数将以任何单位花费任何时间并将其转换为秒。然后,您只需将该数字传递给asyncio.sleep()