Как установить правильную продолжительность времени для команды 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. Отформатируйте код вопроса через соответствующий тег.