Не отображается слеш команда в списке команд. Сама команда реализована когом. Что нужно изменить в коде?
import datetime import disnake from disnake.ext import commands from disnake import TextInputStyle intents = disnake.Intents.all() bot = commands.Bot(command_prefix="!", intents=intents) # Наследуем модальное окно class MyModal(disnake.ui.Modal, commands.Cog): def __init__(self, bot: commands.Bot): self.bot = bot # Детали модального окна и его компонентов components = [ disnake.ui.TextInput( label="Укажите время проведения мероприятия", placeholder="Укажите время в формате xx:xx", custom_id='time', min_length=5, max_length=5, ), disnake.ui.TextInput( label="Укажите дату провденеия мероприятия", placeholder="Укажите дату в формате xx.xx.xxxx", custom_id='date', min_length=10, max_length=10, ), ] super().__init__( title="Мероприятие "Дикая Эвакуация" ", custom_id="custom_id", components=components, ) # Обработка ответа, после отправки модального окна async def callback(self, inter: disnake.ModalInteraction): for key, value in inter.text_values.items(): embed = disnake.Embed(title="Мероприятие "Дикая Эвакуация"", description = f'Мероприятие пройдет в **{inter.text_values.get("time", " ")}, {inter.text_values.get("date", " " )}.**nПравила: https://forum.arizona-v.com/threads/30652/', colour=0xFFFFFF,) embed.set_footer (text="За победу в раунде фракция получит награду в размере $3.000.000", icon_url="https://media.discordapp.net/attachments/1222103795262291978/1222113292156145704/az-logo.png?ex=661508b2&is=660293b2&hm=e74fcd9e6e3f11e5166e26ed9f14f11725f5960bdf5ab061b38001dc6fa8dc9b&=&format=webp&quality=lossless", ) embed.set_image(url="https://images-ext-2.discordapp.net/external/lerhzXafW-D6pvLW8EKbobMiexJAg8sjsFSXqrrfx8c/https/images-ext-2.discordapp.net/external/Ke4qodlofOl46uJ9oRmO3VgtqktNVxY-GBkjBh0X6Fo/https/i.imgur.com/39n7XOR.png?format=webp&quality=lossless") await inter.response.send_message(embed=embed) @bot.slash_command(description="Запуск Дикой Эвакуации", test_guilds=[1222102533577900112]) async def event_start(inter: disnake.AppCmdInter): await inter.response.send_modal(modal=MyModal()) def setup(bot: commands.Bot): bot.add_cog(MyModal(bot)) |
import datetime import disnake from disnake.ext import commands from disnake import TextInputStyle intents = disnake.Intents.all() bot = commands.Bot(command_prefix="!", intents=intents) # Наследуем модальное окно class MyModal(disnake.ui.Modal, commands.Cog): def __init__(self, bot: commands.Bot): self.bot = bot # Детали модального окна и его компонентов components = [ disnake.ui.TextInput( label="Укажите время проведения мероприятия", placeholder="Укажите время в формате xx:xx", custom_id='time', min_length=5, max_length=5, ), disnake.ui.TextInput( label="Укажите дату провденеия мероприятия", placeholder="Укажите дату в формате xx.xx.xxxx", custom_id='date', min_length=10, max_length=10, ), ] super().__init__( title="Мероприятие "Дикая Эвакуация" ", custom_id="custom_id", components=components, ) # Обработка ответа, после отправки модального окна async def callback(self, inter: disnake.ModalInteraction): for key, value in inter.text_values.items(): embed = disnake.Embed(title="Мероприятие "Дикая Эвакуация"", description = f'Мероприятие пройдет в **{inter.text_values.get("time", " ")}, {inter.text_values.get("date", " " )}.**nПравила: https://forum.arizona-v.com/threads/30652/', colour=0xFFFFFF,) embed.set_footer (text="За победу в раунде фракция получит награду в размере $3.000.000", icon_url="https://media.discordapp.net/attachments/1222103795262291978/1222113292156145704/az-logo.png?ex=661508b2&is=660293b2&hm=e74fcd9e6e3f11e5166e26ed9f14f11725f5960bdf5ab061b38001dc6fa8dc9b&=&format=webp&quality=lossless", ) embed.set_image(url="https://images-ext-2.discordapp.net/external/lerhzXafW-D6pvLW8EKbobMiexJAg8sjsFSXqrrfx8c/https/images-ext-2.discordapp.net/external/Ke4qodlofOl46uJ9oRmO3VgtqktNVxY-GBkjBh0X6Fo/https/i.imgur.com/39n7XOR.png?format=webp&quality=lossless") await inter.response.send_message(embed=embed) @bot.slash_command(description="Запуск Дикой Эвакуации", test_guilds=[1222102533577900112]) async def event_start(inter: disnake.AppCmdInter): await inter.response.send_modal(modal=MyModal()) def setup(bot: commands.Bot): bot.add_cog(MyModal(bot))
Дополнительно:
Ответы:
Не надо так делать
Давайте распутывать этот узел:
Все классы расположенные в disnake.ui предназначены для упрощения создания компонентов. Не надо их с чем-то мешать, кроме миксинов, которые тоже предназначены для создания компонентов, например пагинации.
Ваше создание команды мало того, что почему-то лежит в колбеке, так еще в декораторе идет запрос объекта bot, а у вас во-первых внутри класса он лежит в self.bot, во-вторых регистрация команд в когах осуществляется через commands.slash_command.
Вся эта каша запускается только потому, что кусок кода с "командой" в рантайме никогда не вызывается. Ну и разумеется по этой же причине команда не видна.
Все ссылки выше ведут на официальную документацию, которая содержить понятные примеры использования. Перепишите все как два отдельных класса: первый содержит команды, второй отвечает за создание и взаимодействие с модальным окном.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для отображения синтаксиса кода всех языков программирования на сайте stackoverflow.com, вам необходимо воспользоваться тегом
. Этот тег позволяет отображать код с подсветкой синтаксиса для языка программирования PHP. Пример использования тега <pre lang="php">: <pre lang="php">
Если вы хотите отобразить код на других языках программирования, вы можете использовать аналогичный подход, указывая соответствующий язык в атрибуте lang. Например, для JavaScript кода используйте