Как выполнить функцию discord.py через определенное время?

Рейтинг: 0Ответов: 0Опубликовано: 19.02.2023

Цель задачи - сделать систему мутов(именно чата, мут в войсе не нужен) в боте discord.py. Сам мут пользователю реализован через выдачу роли (права на роли отредактированы, чтобы юзер не мог писать в текстовых каналах). Так вот, выдать роль с мутом я могу, а как мне потом поменять роль юзеру через условные сутки? Пытался задействовать Threading.Timer(), он не справился с этим, исполнил функцию не через n времени, а моментально. Какие есть еще идеи? Пример кода:

async def on_message(self, message):
    if a == a: #все условия для мута сходятся:
        await message.author.remove_roles(utils.get(message.guild.roles, id=config.UNMUTE_ROLE)) #удаляю роль everyone
        await message.author.add_roles(utils.get(message.guild.roles, id=config.MUTE_ROLE_HOUR)) #выдаю роль с мутом на час
        Timer(3600, await message.author.remove_roles(utils.get(message.guild.roles, id=config.MUTE_ROLE_HOUR))) #и тут через 3600 сек пытаюсь удалить роль мута у пользователя
        Timer(3600, await message.author.add_roles(utils.get(message.guild.roles, id=config.UNMUTE_ROLE))) #и вернуть роль everyone

Ответы

Ответов пока нет.