door = random.choice([1,2,3])
components = disnake.ui.Select(placeholder="Выбирайте...", options=[
disnake.SelectOption(label="1", value = "1", description="Выбрать первую дверь"),
disnake.SelectOption(label="2", value = "2", description="Выбрать вторую дверь"),
disnake.SelectOption(label="3", value = "3", description="Выбрать третью дверь")
])
await ctx.send(embed=disnake.Embed(title="Выбери правильную дверь",description="Правильная или нет, зависит от твоей удачи...",color=0x228b22), components=components)
try:
slct = await bot.wait_for("select_option", timeout=10) # Как я понял(т.к. нет никаких ошибок), ожидание этой строки напросто зависает.
print(slct.values[0])
if slct.values[0] == str(door):
await ctx.edit_original_response(embed=disnake.Embed(title="Вы выбрали правильную дверь!",description="Поздравляю!"),components=None)
else:
await ctx.edit_original_response(embed=disnake.Embed(title="Не верно...",description=f"Правильной дверью была {door}. В следующий раз повезёт!"))
except asyncio.TimeoutError:
await ctx.edit_original_response(embed=disnake.Embed(title="Таймаут истёк!"))
wait_for
, из за неправильного события. Исправил на message_interaction
@bot.slash_command(name="test", description="test command")
async def test(interaction: disnake.CommandInteraction):
door = random.choice([1, 2, 3])
components = disnake.ui.Select(placeholder="Выбирайте...", options=[
disnake.SelectOption(label="1", value="1", description="Выбрать первую дверь"),
disnake.SelectOption(label="2", value="2", description="Выбрать вторую дверь"),
disnake.SelectOption(label="3", value="3", description="Выбрать третью дверь")
])
await interaction.send(embed=disnake.Embed(title="Выбери правильную дверь",
description="Правильная или нет, зависит от твоей удачи...",
color=0x228b22),
components=components)
try:
slct = await bot.wait_for("message_interaction",
timeout=10)
print(slct.values[0])
if slct.values[0] == str(door):
await interaction.edit_original_response(
embed=disnake.Embed(title="Вы выбрали правильную дверь!",
description="Поздравляю!"),
components=None)
else:
await interaction.edit_original_response(embed=disnake.Embed(title="Не верно...",
description=f"Правильной дверью была {door}. В следующий раз повезёт!"),
components=None)
except asyncio.TimeoutError:
await interaction.edit_original_response(embed=disnake.Embed(title="Таймаут истёк!"),
components=None)
asyncio.TimeoutError
прилетает из строки await bot.wait_for(..)
ты задал таймаут 10 секунд и ждёшь пока пользователь сделает действие в течение 10 секунд...пользователь за 10 секунд ничего не успевает => тебе прилетает исключение. wait_for
не задан таймаут, она будет ждать сколько нужно, попробуй убрать таймаут и сделать действие select_options