Таймаут под капотом максимально простая функция, работать не так он не может:
if not (duration is MISSING) ^ (until is MISSING):
raise ValueError("Exactly one of `duration` and `until` must be provided")
payload: Dict[str, Any] = {}
if duration is not MISSING:
if duration is None:
until = None
elif isinstance(duration, datetime.timedelta):
until = utils.utcnow() + duration
else:
until = utils.utcnow() + datetime.timedelta(seconds=duration)
# at this point `until` cannot be `MISSING`
payload["communication_disabled_until"] = utils.isoformat_utc(until)
data = await self._state.http.edit_member(self.id, user.id, reason=reason, **payload)
return Member(data=data, guild=self, state=self._state)
Поскольку ни в ней, ни в вашем коде нет упоминаний 4 часов, следовательно у вас вызывается какой-то другой код. Добавляйте принты и/или логирование и смотрите ваши данные.
P.S. Отформатируйте код вопроса через соответствующий тег.