Задать вопрос
@Barni_Rivle

Как сделать, чтобы в disnake модалах отправлялось кто его отправил?

Как сделать так, чтобы в сообщении, которое выводил модал, оставлялся ник того, кто отправил этот модал и чтобы ему писало одобрено или нет?

Вот код:

class Otveting(disnake.ui.View):
    def __init__(self):
        super().__init__()

        self.value = Optional[bool]


    @disnake.ui.button(label="✅", style=disnake.ButtonStyle.green, custom_id="✅")
    async def confirmi(self, ctx, button: disnake.ui.Button, inter: disnake.Interaction):
        user = bot.get_user(member.id)
        await inter.respone.user.send("Ваша заявка в персонал сервера одобренна!")
        self.value = True


    @disnake.ui.button(label="❌", style=disnake.ButtonStyle.green, custom_id="❌")
    async def canceli(self, ctx, button: disnake.ui.Button, inter: disnake.Interaction):
        user = bot.get_user(member.id)
        await inter.respone.user.send("Ваша заявка в персонал сервера отклонена!")
        self.value = False

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

Вторая часть кода:

class MyModal(disnake.ui.Modal):
    def __init__(self):
        # The details of the modal, and its components
        components = [
            disnake.ui.TextInput(
                label="Ваше имя и возраст",
                placeholder="Введите ваше имя и возраст",
                custom_id="Имя и возраст",
                style=TextInputStyle.short,
                max_length=20,
            ),
            disnake.ui.TextInput(
                label="Расскажите немного о себе",
                placeholder="Расскажите о ваших хороших качествах, чем занимайтесь?",
                custom_id="О себе",
                style=TextInputStyle.paragraph,
                max_length=140,
            ),
            disnake.ui.TextInput(
                label="Был ли у вас опыт ранее на данных должностях?",
                placeholder="Да/Нет",
                custom_id="Был ли опыт?",
                style=TextInputStyle.paragraph,
                max_length=3,
            ),
            disnake.ui.TextInput(
                label="Сколько времени готовы уделять серверу?",
                placeholder="Пример: 2-3 часа",
                custom_id="Пример онлайна",
                style=TextInputStyle.paragraph,
                max_length=9,
            ),
            disnake.ui.TextInput(
                label="Ваше знание правил от 1 до 10",
                placeholder="Пример: 10",
                custom_id="Знание правил",
                style=TextInputStyle.paragraph,
                max_length=2,
            ),
        ]
        super().__init__(title="Создать заявку в персонал сервера", components=components)

    # The callback received when the user input is completed.
    async def callback(self, inter: disnake.ModalInteraction):
        embed = disnake.Embed(
            title=f"Новая заявка в персонал сервера от -  ",
            color = 0xFF00FF,
            )
        for key, value in inter.text_values.items():
            embed.add_field(
                name=key.capitalize(),
                value=value[:1024],
                inline=False,
            )

        channel = bot.get_channel(1488203458329968730)
        viev = Otveting()
        await channel.send(embed=embed, view=viev)
        await inter.response.send_message("Заявка успешно подана ожидайте рассмотрения. С вами свяжутся.", ephemeral=True)
  • Вопрос задан
  • 23 просмотра
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    1C-программист: расширенный курс
    18 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Академия Эдюсон
    ИТ-директор
    8 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы