По команде на выдачу мута заноси в таблицу БД ID пользователя и время, когда надо снять мут.
Также периодически (скажем, раз в несколько минут), выбирай из этой таблицы все записи, у которых время снятия мута меньше, чем текущее время. Если такие записи нашлись, снимаешь мут для пользователей, к которым они относятся, и удаляешь эти записи.
Перезапуск бота такая схема переживает без нужды в дополнительных телодвижениях.
Как сделать периодическую задачу, зависит от используемого языка и библиотеки - ты их не указал, кстати. Но это реализуемо в любом языке.