@mirnov_q

Как получить содержимое поле не в on_modal_submit?

Знаю что в on_modal_submit можно получить значение через inter.text_values, но я хочу чтобы после нажатие кнопки отправлялся embed, с записанный ранее значением в поле модалки, что-то типо
@commands.Cog.listener()
    async def on_modal_submit(self, inter: disnake.ModalInteraction):
        if inter.custom_id == "mcheckgift":
            gift_id = inter.text_values["giftid"]
            cursor.execute("SELECT gift FROM sold_gifts WHERE id=?", (gift_id,))
            gift_urldb = cursor.fetchone()[0]
            embed = disnake.Embed(title="Успешно!", description=f"Гифт-код является действительным\nРаспознано как: {plan}", color=0x77eb34)
            await inter.response.send_message(embed=embed, components=[
                disnake.ui.Button(label="Получить", style=disnake.ButtonStyle.green, custom_id="getgift"),
                disnake.ui.Button(label="Отмена", style=disnake.ButtonStyle.red, custom_id="cancelgift"),
            ])

    @commands.Cog.listener("on_button_click")
    async def menu_listener(self, inter: disnake.MessageInteraction):
        if inter.component.custom_id == "getgift":
            embed = disnake.Embed(title="Вы получили гифт", description=f"Ваш id гифт-кода: {gift_id}")
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121
Начни с документации
inter: disnake.ModalInteraction

inter: disnake.MessageInteraction


Тайпхинты в примере явно показывают, что вы в двух разных случаях зовете две разных сущности одним и тем же именем inter. Это не делает их одинаковыми объектами, у MessageInteraction отсутствуют атрибуты text_values и custom_id.
Если вы хотите что-то повесить на кнопку у нее как раз custom_id есть.
И listener для работы с кнопками не нужен, посмотрите документацию по View и Button
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект