Top.Mail.Ru
Ответы

Disnake , python найдите тут ошибка пожайлуста я не могу это исправить

По дате
По рейтингу
Аватар пользователя
Ученик
10мес

Вот что я заметил:

  • Определение переменной time:


Здесь переменная time изначально содержит строку (так как она приходит как аргумент в функцию timeout). Но позже в коде она используется как объект datetime. Это может вызвать путаницу.
Чтобы избежать путаницы, лучше назвать эту переменную как-нибудь по-другому, например, timeout_duration или timeout_time.

  • Проблема с типом переменной time:


Если time передается как строка (например, '10'), то когда вы создаете новый объект datetime, переменная time будет содержать объект datetime, а не строку.
Проблема в том, что вы используете ту же переменную time дважды в разных контекстах. После вычисления нового time, переменная уже не строка, а объект datetime, и использование её в строке для отправки сообщения может вызвать ошибку.

  • Обработка времени и конкатенация строк:


В строке await interaction.response.send_message(f"Timed out {member.mention for {time} for {reason}", ephemeral=True) у вас ошибка в синтаксисе. Здесь ошибка заключается в том, что неправильная структура f-строки.

Вот исправленный вариант вашего кода:

123456
 @commands.slash_command() 
async def timeout(self, interaction, member: disnake.Member, time: str, reason: str): 
    timeout_duration = datetime.datetime.now() + datetime.timedelta(minutes=int(time)) 
    await member.timeout(reason=reason, until=timeout_duration) 
    await interaction.response.send_message(f"Timed out {member.mention} for {time} minutes for {reason}", ephemeral=True) 
 

Обратите внимание, что я переименовал time в timeout_duration для ясности и добавил текст "minutes" в строку сообщения для уточнения.