Не отображается слеш команда в списке команд. Сама команда реализована когом. Что нужно изменить в коде?

Ссылка скопирована
1 ответ
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.

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

Все ссылки выше ведут на официальную документацию, которая содержить понятные примеры использования. Перепишите все как два отдельных класса: первый содержит команды, второй отвечает за создание и взаимодействие с модальным окном.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Алексей Денисов Ответ

Для отображения синтаксиса кода всех языков программирования на сайте stackoverflow.com, вам необходимо воспользоваться тегом

. Этот тег позволяет отображать код с подсветкой синтаксиса для языка программирования PHP. 
 
Пример использования тега <pre lang="php">:
 
<pre lang="php">

. Этот тег позволяет отображать код с подсветкой синтаксиса для языка программирования PHP. Пример использования тега <pre lang="php">: <pre lang="php">

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

, для Python - 

 и т.д.

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

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно