maksam07, я делаю бан на время. в соц сети вк, для авторазбана. Функция примерно такая.
Таймер:
setTimeout(() => {
UnBan(id, chatid)
message.send(`✅ У [id${id}|пользователя] был снят бан. Пригласите его обратно в беседу для общения`)
}, delayToMilSeconds);
Берете текущее время - Date.now() к нему прибавляете время на которое выдаете бан (хоть минуту, хоть годы) и сохраняете это значение. Периодически (раз в сутки например) проверяете вышло время бана или нет, т.е. стало текущее время больше сохраненного - значит пора разбанивать. Еще можно сделать проверку разбана конкретного пользователя при его попытке зайти.
То что вы описываете с setTimeout дичь конечно, но при желании можно и её реализовать - сделать вложенные setTimeout.
Для такого используют базы данных - определяют временную метку, после которой пользователь будет разбанен и при ее достижении ограничения снимаются. Вешать тайм-ауты для этого неправильно - вдруг сервер приляжет отдохнуть и всё эти данные потеряются.