Как выполнить функцию discord.py через определенное время?
Цель задачи - сделать систему мутов(именно чата, мут в войсе не нужен) в боте 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
Источник: Stack Overflow на русском