Задать вопрос
@MoneySMile

Как фильтровать данные json на discord.js?

У меня есть такой код
Код
const { MessageEmbed } = require('discord.js');
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('./rules.json', 'utf8'))
//Каждое новое правило мы добавляем в конец.
//Наше правило, это просто строка
module.exports.properities = {
    name:["rules"]
}

module.exports.run = async (bot,message,member,args) => {
    message.delete()
    if(member.roles.cache.find(r => r.id === "773812025994117122")){
        switch(String(args[0]).toLowerCase()) {
            case 'add':
                let rule = {name: args.slice(1).join(" "), value: '\u200B'};
                if (data.rules.length < 25){
                    //Далее мы добавляем правило в конец.
                    data.rules.push({id: data.rules.length, rule: rule});
                    let add = new MessageEmbed()
                    .setAuthor('ADD')
                    .setColor("RED")
                    .setTimestamp()
                    .setTitle(`Вы успешно добавили новый пункт правил`)
                    message.channel.send(add)
                    .then(m => m.delete({timeout : 2000}))
                }else{
                    let add1 = new MessageEmbed()
                    .setAuthor('ADD')
                    .setColor("RED")
                    .setTimestamp()
                    .setTitle(`Правил слишком много`)
                    message.channel.send(add1)
                    .then(m => m.delete({timeout : 2000}))
                    //Максимальное кол. правил.
                }
                //сохраняем
            break;
            case 'edit':
                    let id = args[1];
                    let new_rule = {name: args.slice(2).join(" "), value: '\u200B'};
                if (id > 0 && id < data.rules.length){//Если указан номальный id, т.е будет такое правило и id > 0.
                    //Мы обращаемся к еллементу массива по id
                    //И изменяем rule на новый объект.
                    let edit = new MessageEmbed()
                    .setAuthor('Helix')
                    .setColor("RED")
                    .setTimestamp()
                    .setTitle(`Вы успешно изменили пункт правил: ${args[1]}`)
                    message.channel.send(edit)
                    data.rules[id - 1].rule = new_rule;
                }else{
                    let edit = new MessageEmbed()
                    .setAuthor('Helix')
                    .setColor("RED")
                    .setTimestamp()
                    .setTitle(`Вы не можете изменить это правило! Его нет!`)
                    message.channel.send(edit)
                }
            break;
        }
    }
fs.writeFile('./rules.json', JSON.stringify(data), (err) => {} );
//Теперь каждое новое правило будет добавлено в конец, достаточно просто указать какое у него будет сообщение.
}

для того чтобы сделать целую базу данных с правилами
База данных
{"rules":[{"id":0,"rule":{"name":"asdasdasd","value":"​"}},{"id":1,"rule":{"name":"asdkaisdaisodjoad","value":"​"}}]}

Данные которые я получаю
[
  { id: 0, rule: { name: 'asdasdasd', value: '​' } },
  { id: 1, rule: { name: 'asdkaisdaisodjoad', value: '​' } }
]

И мне нужно из этих данных получить такой вот embed
Screenshot_10.png?width=1085&height=701
Что мне нужно? Мне нужно сделать функцию которая будет обновлять это сообщение с правилами после добавления, удаления, редактирования каких либо правил. Так же хотел бы получить объяснения как фильтровать такие данные и раскладывать их по embed

Было бы неплохо пойти в дискорд (Money Smile#6081)
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы