показать оставшееся время asyncio.sleep - PullRequest
0 голосов
/ 02 июля 2018

У меня есть эта команда:

if message.content.lower().startswith("!activate"):
    if message.author.id not in tempo:
        await Bot.send_message(message.channel, "{} used the command".format(message.author.name))
        tempo.append(message.author.id)
        await asyncio.sleep(720)
        tempo.remove(message.author.id)
    else:
        await Bot.send_message(message.channel, "wait {} hours.".format(asyncio.sleep))

Мне бы хотелось, чтобы каждый раз, когда человек пытался использовать команду во второй раз, показывал, сколько осталось времени, прежде чем он сможет использовать ее снова, что-то вроде: «подождите 4 часа и 50 минут».

что мне делать?

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете просто сохранить время и рассчитать оставшееся время:

import time
tempo = {} # use a dict to store the time

if message.content.lower().startswith("!activate"):
    if message.author.id not in tempo:
        await Bot.send_message(message.channel, "{} used the command".format(
            message.author.name))
        tempo[message.author.id] = time.time() + 720 # store end time
        await asyncio.sleep(720)
        del tempo[message.author.id]
    else:
        await Bot.send_message(message.channel, "wait {} seconds.".format(
            tempo[message.author.id] - time.time()))
...