Как установить правильную продолжительность времени для команды mute в вашем коде?
Метод `Timeout` в Disnake (discord.py) не работает должным образом, потому что Disnake является форком библиотеки discord.py и имеет некоторые изменения и обновления в сравнении с оригинальной версией.
Для установки правильной продолжительности времени для команды mute в вашем коде, вы можете использовать функцию `sleep()` из модуля `asyncio`. Вот пример:
```python
import asyncio
@commands.command()
async def mute(self, ctx, member: discord.Member, time: int):
muted_role = discord.utils.get(ctx.guild.roles, name="Muted")
await member.add_roles(muted_role)
await ctx.send(f"{member.mention} has been muted for {time} seconds.")
await asyncio.sleep(time)
await member.remove_roles(muted_role)
await ctx.send(f"{member.mention} has been unmuted.")
```
Этот код добавляет роль "Muted" пользователю и удаляет ее после указанной продолжительности времени. Функция `sleep()` приостанавливает выполнение кода на указанное количество секунд, а затем продолжает выполнение.
Таймаут под капотом максимально простая функция, работать не так он не может:
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. Отформатируйте код вопроса через соответствующий тег.