Сделать поиск бота в массиве

Я пытаюсь создать бота, который берет информацию из файла info.json и переносит ее в виде богатой вставки в канал Discord.

Моя проблема, с которой я постоянно сталкиваюсь и, похоже, не могу найти решение самостоятельно, заключается в том, что мой информационный файл JSON содержит большое количество массивов, к которым необходимо получить доступ с помощью команды «префикс + имя игрока».

Пример массива в JSON:

{
  "playername": "riky",
  "age": 20,
  "height": 172
}

Поэтому, когда человек хочет найти, например, riky с помощью команды prefix + riky, бот должен вывести всю информацию, содержащуюся в riky: age, height и т. д.

Может ли кто-нибудь помочь мне с чем-то вроде этого?

Непонятно что за префикс, можете выложить структуру всего json?

gbalduzzi 20.03.2019 12:09

Я не пытаюсь быть грубым, просто полезным, этот пример не является массивом JSON, а просто JSON. У массива нет связи между ключом и значением, это просто список вещей. В JSON массив будет выглядеть так { "arrayData": ['one', 'two', 'three', 'four', 'something', 'foo', 'bar']}. В этом примере после того, как вы разобрали JSON в объект Javascript, ключом будет arrayData, а значением будет массив.

nzajt 20.03.2019 16:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
499
1

Ответы 1

Я использовал fs, чтобы получить ваш файл json. Я делаю цикл for, чтобы просмотреть все ваши массивы json и найти имя игрока, которое вы ввели в своей команде. Если бот находит массив с этим именем игрока, он присваивает возраст и рост новой переменной.

После этого вы можете создать свой RichEmbed и отправить его в канал.

Попробуйте использовать следующий код:

const fs = require('fs');
const Discord = require('discord.js');

const jsonFile = fs.readFile('PATH of your JSON');
const playerName = msg.content.split(' ').slice(1);

let age;
let hight;

for (var i = 0; i < jsonFile.length; i++) {
  if (jsonFile[i].playername === playerName) {
    age = jsonFile[i].age;
    hight = jsonFile[i].hight;
  }
}

if (!age || !height) return message.channel.send('Couldn\'t find this player!');

const embed = new Discord.RichEmbed()
  .setTitle(playername)
  .addField('Age', age)
  .addField('Hight', hight);

message.channel.send({ embed });

Другие вопросы по теме