@NoGrisha
Точка.

Тест на discord.py. Как сделать?

Вот хочу создать команду тест в discord.py ну и думаю понятно в чём её смысл. Я хочу как-нибудь это сделать через Select menu из dislash.py. Вот как-то так:
from dislash import InteractionClient, SelectMenu, SelectOption
...
inter_client = InteractionClient(bot)
...
@bot.command()
async def test(ctx, correct = None, b = None,c = None ,d = None):
    await ctx.channel.purge(limit = 1)
    if correct == None and b == None:
        await ctx.send(f'{author.mention},Добавь верный вариант ответа и второй вариант ответа')
        return
    elif correct != None and b == None:
        await ctx.send(f'{author.mention} Добавь второй вариант ответа!')
        return
    elif correct != None and b != None and c == None:
        msg = await ctx.send(
            f"{author.mention}, Создал тест!\n{name}",
            components=[
                SelectMenu(
                    custom_id="t1",
                    placeholder="Выбери правильный ответ!",
                    max_values=2,
                    options=[
                        SelectOption(f"{correct}", "Ей"),
                        SelectOption(f"{b}", "Йе")
                    ]
                )
            ]
        )
        inter = await msg.wait_for_dropdown()
     
        labels = [option.label for option in inter.select_menu.selected_options]

        if len(labels) > 1:
            #Вот здесь надо отправить человеку в лс что надо выбрать один ответ

        elif correct in labels:
            #Вот здесь надо отправить тому кто выбрал правильный ответ в лс что он молодец!

        else:
            #Вот здесь надо отправить тому кто выбрал неправильный ответ в лс то что он ответил неправильно
    ...

И ещё надо сделать так чтобы это меню было многоразовым. Чтобы один человек выбрал и другой потом смог выбрать.
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
Ну для начала неплохо бы разделить задачу на части, не?
Отдельная команда для создания теста, которую можно вызывать не в общем канале (иначе все сразу и правильный ответ поймут, он же у тебя всегда первый).
Отдельная команда для показа теста, если требуется.
И отдельные обработчики ответов.

Плюс нужно запоминать в боте не только вопросы, но и кто из пользователей как ответил - это позволит понять, в каком случае можно игнорировать ответ, так как один ответ уже был дан.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы