Не работает discord.py timeout
@bot.tree.command(name="мьют", description="Выдает мьют участнику")
async def мьют(interaction: discord.Interaction, участник: discord.Member, время: int, *, причина: str):
if interaction.user == bot.user:
embed = discord.Embed(title="Вы бот!", description="Вы не можете использовать эту команду, так как вы бот!", color=discord.Color.red())
interaction.response.send_message(embed=embed)
return
delta = datetime.timedelta(minutes=int(время))
await участник.timeout(datetime.timedelta(minutes=int(время)), reason=причина)
На ошибки, которые там есть, например, на то, что есть лишняя переменная не обращайте внимания, это лишь образец. Мне главное, чтобы просто работал timeout
Ответы (1 шт):
@bot.tree.command(name="мьют", description="Выдает мьют участнику", guild=guild_object)
async def мьют(interaction: discord.Interaction, участник: discord.Member, время: int, *, причина: str):
if interaction.user == bot.user:
embed = discord.Embed(title="Вы бот!", description="Вы не можете использовать эту команду, так как вы бот!", color=discord.Color.red())
await interaction.response.send_message(embed=embed)
return
delta = datetime.timedelta(minutes=int(время))
await участник.timeout(delta, reason=причина)
Обратите внимание на то, что в @bot.command.tree вы должны указать гильдию/список гильдий, в которые вы хотите добавить эту команду. (для одной гильдии guild=... для списка гильдий guilds=[...])
Так же функция interaction.response.send_message - должна быть указана через await (хз, как это указание правильно написать), т.е должно быть:
await interaction.response.send_message(embed=embed)
Помимо этого вы должны синхронизировать tree с гильдиями:
await bot.tree.sync(guild=guild_object)
Если после этого всего у вас появилась команда, но она не работает, то выдайте боту соответствующие разрешения на сервере и при инициализации бота в коде