Выбор в выборе select menu discord py

Рейтинг: 0Ответов: 1Опубликовано: 27.01.2023

Я хочу, чтобы после выбора первого варианта у меня был выбор между двумя другими вариантами, например вопрос в вопросе. Можно ли это сделать? Вот мой код:

import discord
from discord.ext import commands

class Dropdown(discord.ui.Select):
    def __init__(self):
        options = [
            discord.SelectOption(label='Акрополь', description='Будет отправлен баннер "Акрополь"', emoji='🏛️'),
            discord.SelectOption(label='Год Кролика', description='Будет отправлен баннер "Год Кролика"', emoji='🐇'),
            discord.SelectOption(label='Зевс', description='Будет отправлен баннер "Зевс"', emoji='⚡'),
        ]

        super().__init__(placeholder='Выберете ваш любимый цвет...', min_values=1, max_values=1, options=options)

    async def callback(self, interaction: discord.Interaction):
        if self.values[0] == 'Акрополь':
            await interaction.response.send_message('Баннер "Акрополь"',file=discord.File(r'C:\Users\Timir\AppData\Local\Discord\Akropol.png'))
        elif self.values[0] == 'Год Кролика':
            await interaction.response.send_message('Баннер "Год Кролика"',file=discord.File(r'C:\Users\Timir\AppData\Local\Discord\Kroll.png'))
        elif self.values[0] == 'Зевс':
            await interaction.response.send_message('Баннер "Зевс"', file=discord.File(r'C:\Users\Timir\AppData\Local\Discord\Zevs.png'))

class DropdownView(discord.ui.View):
    def __init__(self):
        super().__init__()
        self.add_item(Dropdown())

class Bot(commands.Bot):
    def __init__(self):
        intents = discord.Intents.default()
        intents.message_content = True

        super().__init__(command_prefix=commands.when_mentioned_or('$'), intents=intents)

    async def on_ready(self):
        print(f'Logged in as {self.user} (ID: {self.user.id})')
        print('------')


intents = discord.Intents.all()
bot = commands.Bot(command_prefix='+', intents=intents)


@bot.command()
async def banner(ctx):
    """Отправляет сообщение с выбранным баннером"""

    view = DropdownView()

    await ctx.send('Выберете нужный баннер:', view=view)







@bot.command()
async def Молодец(ctx):
    await ctx.send(f"{ctx.author.mention} молодец")


bot.run('bottoken')

Ответы

▲ 0Принят

Я думаю это можно сделать путем изменения сообщения на которое отреагировали:

await interaction.message.edit(view=DropdownView2())

Далее всё так же..

class DropdownView2(discord.ui.View):
    def __init__(self):
        super().__init__()
        self.add_item(Dropdown2())

И снова создаем нужные варианты:

class Dropdown2(discord.ui.Select):
    def __init__(self):
        options = [
            #варианты
        ]

        super().__init__(placeholder='Выберите один из следующих вариантов..', min_values=1, max_values=1, options=options)

    async def callback(self, interaction: discord.Interaction):
        #варианты