#Get a list of slash commands and text commands.

1 messages · Page 1 of 1 (latest)

winged scarab
#

Добрый день, подскажите, как получить список команд, двух типов?
А именно:

  • ApplicationCommandType.Slash
  • ApplicationCommandType.Message

На данный момент я их получаю, из

InteractionService.SlashCommands;
CommandService.Command;

Верный ли данный способ и единственный ли он?

sturdy imp
#

Зависит от того, что именно нужно

#

Сразу сказать - ApplicationCommandType.Message - это контекстные команды в контекстных меню мообщений

#

А CommandService используется для текстовых команд

winged scarab
#

Мне нужно получить список команд, чтобы их так сказать занести в базу данных. Для чего? Не думаю, что имеет смысл)

sturdy imp
#

ладно, не буду вопросы тогда задавать, интересная система ¯_(ツ)_/¯

#

В общем

winged scarab
sturdy imp
#

Если нужны просто модели команд без ID шников - то ваш вариант собсна нормальный вполне

winged scarab
#

Хм.. А возможно получить с ID?

#

Случайно не var discordCommands = (await client.GetGlobalApplicationCommandsAsync()); ?

sturdy imp
#

Именно оно

#

Оно как раз коллекцию возвращает, и из нeё можно с помощью Linq вытянуть нужного типа

winged scarab
#

Ага, значит вариант правильный. Тогда вопрос, возможно ли получить при выполение команды (текстовой) её наименование?
var command = _commandService.Search(context, argPos);

                `if (command.IsSuccess)
                {
                    await _commandAccessExecuteCommand.CheckAccess(message.Author.Id, command.Commands[0].Command.Name, ApplicationCommandType.Message, CancellationToken);
                }`
sturdy imp
#

.Where(x => x.Type == )

winged scarab
winged scarab
#

client.MessageReceived += async message =>
message, а именно SocketMessage, содержит в себе сообщение. Я как-то могу получить эту команду? Просто, как-то делать костыль, который будет вытягивать её название, а потом, искать в бд по именни. Как по мне, легче получить её ID, но вопрос КАК!?
Один из вариантов использовать туже инструкцию сверху. GetGlobalApplicationCommandsAsync, но верное ли данное решение?

sturdy imp
#

Вы немного путаете :))

#

Текстовые команды просто парсят текст из сообщения

#

А Application команды - они уже регистрируются и обрабатываются принципиально по другому

winged scarab
#

Стоп, так я выходит не могу текстовый команды получить с помощью: GetGlobalApplicationCommandsAsync?

sturdy imp
#

Нет

winged scarab
#

Ух...

sturdy imp
#

Этот метод вытягивает только слэш команды + user & message команды из контекстным меню

#

(которые во вкладке Приложения, если ПКМ сделать по сообщения/юзеру)

winged scarab
#

Эх, эх, эх.. Обидно...

sturdy imp
#

Текстовые команды же существуют только на стороне бота

winged scarab
#

Что-то запамятовал, данный вопрос.

sturdy imp
#

*100

#

100команд верхнего уровня+5юзер+5мессаге

winged scarab
#

И без разницы, какого типа? Slash или message?

#

Ааа, понял

#

Спасибо.

#

Тогда, остается вопрос, как текстовые мне получать)

sturdy imp
#

Только из комманд сервайса вытягивать как то

winged scarab
#

А так, как ID, им низя задать, буду Guid использовать.

#

Хорошо, а насчёт, как вытянуть команду из сообщения. Возможно?

winged scarab
sturdy imp
#

CommandService.Commands как раз

sturdy imp
winged scarab
#

Я думал, есть вариант более.. Что-ли приятный)

#

Но, спасибо.

sturdy imp
winged scarab
#