Мне понадобилось сделать слэш команду в моем Дискорд боте, она должна была работать так:
1. вы пишете слэш команду - "/fangs"
2. открывается модальное окно
3.вы пишете нужные данные
4. бот обрабатывает и изменяет их, после чего отправляет их в виде сообщения в чат
но в итоге получилось это:
1. вы пишете слэш команду - "/fangs"
2. открывается модальное окно
3.бот отправляет данные которые были введены в прошлый раз
4.вы пишете нужные данные
5. бот обрабатывает и изменяет их, после чего отправляет их в виде сообщения в чат
как это исправить?
в пример я приведу упрощенный код, без изменения исходных данных:
import disnake
from disnake.ext import commands
from disnake import TextInputStyle
bot = commands.Bot(
command_prefix='!',
sync_commands_debug=True
)
class MyModal(disnake.ui.Modal):
def __init__(self):
# The details of the modal, and its components
components = [
disnake.ui.TextInput(
label="test0",
placeholder="введи свою мысль",
custom_id="test0",
style=TextInputStyle.short,
max_length=667,
),
disnake.ui.TextInput(
label="test1",
placeholder="Введи что-нибудь.",
custom_id="test1",
style=TextInputStyle.paragraph,
),
]
ilw ="lor"
super().__init__(
title="Create Tag",
custom_id=ilw,
components=components,
)
async def callback(self, inter: disnake.ModalInteraction):
A = inter.text_values.items()
print(A)
await inter.response.send_message(A)
@bot.slash_command(description="просто тест команды")
async def fangs(inter: disnake.AppCmdInter):
"""Sends a Modal to create a tag."""
await inter.response.send_modal(modal=MyModal())
bot.run("OTUwUTgyMom,i'm_hacker?zMzU3Nzc3Uw.nbCPFrRgrtmlu4eFHM")