.send(embed=Embed())
class DropdownView(disnake.ui.View):
def __init__(self, right_door: int):
super().__init__(timeout=10)
self.right_door = str(right_door)
@disnake.ui.string_select(
placeholder="Выбирайте...",
min_values=1,
max_values=1,
options=[
disnake.SelectOption(label="1", value="1", description="Выбрать первую дверь"),
disnake.SelectOption(label="2", value="2", description="Выбрать вторую дверь"),
disnake.SelectOption(label="3", value="3", description="Выбрать третью дверь")
]
)
async def callback(self, string_select: disnake.ui.StringSelect, inter: disnake.MessageInteraction):
if string_select.values[0] == self.right_door:
await inter.send(
embed=disnake.Embed(title="Вы выбрали правильную дверь!",
description="Поздравляю!"),
ephemeral=True
)
else:
await inter.send(
embed=disnake.Embed(title="Не верно...",
description=f"Правильной дверью была {self.right_door}. В следующий раз повезёт!"),
ephemeral=True
)
self.stop()
@bot.slash_command(name="test", description="test command")
async def test(interaction: disnake.CommandInteraction):
door = random.choice([1, 2, 3])
view = DropdownView(door)
await interaction.send(embed=disnake.Embed(title="Выбери правильную дверь",
description="Правильная или нет, зависит от твоей удачи...",
color=0x228b22),
view=view, ephemeral=True)
if await view.wait():
await interaction.edit_original_response(
embed=disnake.Embed(title="Вы слишком долго выбирали!",
color=disnake.Color.red()
),
view=None)
else:
await interaction.delete_original_response()
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)
intents.messages = True
, они с 31 августа включили это вроде какawait context.send(..., ephemeral=True)
@bot.event
async def on_member_join(member):
await member.send("text")