total4c
@total4c
Ничего не умею

Как отменять первоначальный запуск таймера в Threading?

Здравствуйте! Хотелось бы узнать, как отменять первый запуск таймера при вызове функции.

У меня есть код, в котором я сделал команду мут на время, после того как пользователь попадает в словарь, вызывается функция начала таймера, но проблема в том, что, когда он вызывается, то срабатывает и потом уже начинает отсчет, хотелось бы узнать, как это исправить

Сам код:

def unmute(id, time):
    if int(id) not in mute.keys():
        try:
            raise Exception("User is not in mute!")
        except Exception:
            pass
    else:
        del mute[int(id)]
        vk.method("messages.send", {"peer_id": 2000000568, "message": f"С пользователя {get_name(id)} снят мут", "random_id": 0})

        timer = threading.Timer(time, unmute, [id, time])
        timer.start()

def main():
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW:
            if event.from_chat:
                text = event.text.lower().split()
                if (len(text) == 3) and (text[0] == "!mute"):
                    id = text[1]
                    id = id.split("|")[0]
                    id = id.replace("[id", "")
                    if "м" in text[2]:
                        duration = text[2].split("м")[0]; duration = int(duration * 60)
                    if "с" in text[2]:
                        duration = text[2].split("с")[0]; duration = int(duration)
                    mute.update({int(id): [get_name(id), int(duration)]})
                    vk.method("messages.send", {"peer_id": event.peer_id, "message": f"Пользователю {get_name(id)} выдан мут на {text[2]}", "random_id": 0})
                    print(mute)
                    unmute(int(id), int(duration))

if __name__ == '__main__':
    main()
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы