Discord JS: проверьте, находится ли ввод в строке - PullRequest
1 голос
/ 12 июля 2020

Привет! Я постараюсь сделать все возможное, чтобы объяснить эту проблему, которая у меня есть.

Корзина с некоторыми упомянутыми кодами и комментариями:

Codebin

В настоящее время я работаю над ботом Discord, где данные хранятся в файле. json (в виде строки).

  • Может быть, это следует преобразовать в массив вместо этого?

Пользователь пишет команду, и бот инициализирует последовательность, где он будет go с помощью нескольких параметров в зависимости от того, что найдено в string.

Я слишком долго боролся с этим (по крайней мере, 10 часов, и у меня сейчас нет идей), чтобы проверить ответ пользователя, чтобы увидеть, находится ли ввод, который он делает массив.

Если я напишу! color 76561197458345 - он запустит процесс, как показано ниже:

Текст

Как вы видите, доступные параметры для найденного Дино (Карнотавра): [Юта1, Юта2]

Это правильно, поскольку оно указано в качестве наиболее интересных вариантов для Карнотавра ниже в моем json

[
  {
    "name": "Acrocanthosaurus",
    "detailcrest": "[Utah1, Utah2]",
    "underbelly": "[Utah3, Utah4]",
    "body1": "[Utah5, Utah6]",
    "body2": "[Utah7, Utah8]",
    "body3": "[Utah9, Utah10]"
  },
  {
    "name": "Carnotaurus",
    "detailcrest": "[Utah1, Utah2]",
    "underbelly": "[Utah3, Utah4]",
    "body1": "[Utah5, Utah6]",
    "body2": "[Utah7, Utah8]",
    "body3": "[Utah9, Utah10]"
  }
]

Затем происходит то, что пользователь вводит данные на основе найденных опций (в данном случае - Юта1, Юта2).

Я хочу, чтобы бот проверьте ответ пользователя в чате, если его ответ существует в файле json.

Если ответить боту в чате с Utah1 - он перейдет к следующему вопросу (потому что он существует). Если ответить боту в чате с Pizza2 - он ответит (Не найдено, выберите доступные варианты)

TL; DR: Мне просто нужен способ проверить, отвечает ли пользователь (слово ) существует в строке. Если да: продолжить, если нет: ошибка

Я надеюсь, что кто-то может дать советы или, по крайней мере, sh в правильном направлении о том, как это сделать.

1 Ответ

0 голосов
/ 13 июля 2020

Я нашел простой, но, очевидно, не самый умный ответ на мое собственное решение - однако оно работает должным образом. *

"detailcrest": "Utah1, Utah2",

Для поиска в моей строке я применил функцию .split () (для разделения слов с помощью,)

const inputCheck = color.detailcrest.toLowerCase().split(',').includes(detailcrest);

Если я затем выполняю оператор if else, он возвращает true или false - для данного ввода, если он существует в файле json.

if (inputCheck === true) {
console.log("found")
} else {
console.log("False")
}

Очевидно, что это не самый разумный способ действовать профессионально

Но в моем маленький бот, он должен работать с ожидаемым.

  • Из-за ограничений я приму свой ответ как решение через два дня.
...