Как получить RichEmbed из канала по значению поля? - PullRequest
1 голос
/ 21 апреля 2019

Итак, я создаю бота для своего канала Discord.Я создал специальную систему на основе запросов.Например, пользователь отправляет запрос на добавление в чат, который он хочет.Каждый запрос связан с уникальным идентификатором.Запрос формируется и отправляется на сервисный канал, где модератор может просмотреть эти запросы.Затем, как только запрос будет решен, модератор наберет что-то вроде .resolveRequest <ID>, и этот запрос будет скопирован и отправлен на канал «разрешенные запросы» .
Есть некоторый код, который я написал.

Генерация запроса:

if (command === "join-chat") {
        const data = fs.readFileSync('./requestID.txt');

        let requestID = parseInt(data, 10);

        const emb = new Discord.RichEmbed()
            .setTitle('New request')
            .setDescription('Request to add to chat')
            .addField('Who?', `**User ${msg.author.tag}**`)
            .addField('Which chat?', `**Chat: ${args[0]}**`)
            .setFooter('Request\'s ID: ' + requestID)
            .setColor('#fffb3a');

        let chan = client.channels.get('567959560900313108');
        chan.send(emb);

        requestID++;

        fs.writeFileSync('./requestID.txt', requestID.toString(10));
    }

Теперь .resolveRequest <ID>:

if (command === '.resolveRequest') {
        msg.channel.fetchMessages({limit : 100}) //getting last 100 messages
            .then((messages) => messages.forEach(element => { //for each message get an embed
                element.embeds.forEach(element => {
                    msg.channel.send(element.fields.find('value', args[0].toString(10))); //send a message containing the ID mentioned in 'args[0]' that was taken form the message
                })
            }));
    }

.join-chat <chat_name> работает без нареканий, но .resolveRequest <ID> не работает вообще, даже без ошибок.
Есть ли способ это исправить?

1 Ответ

1 голос
/ 22 апреля 2019

Использование .find('value', 'key') устарело, вместо этого используйте .find(thing => thing.value == 'key').

Также вы должны использовать базу данных для хранения вещей, но ваш код на самом деле не поврежден, вы просто проверяете: command === '.resolveRequest', что означает, что вам нужно запустить ..resolveRequest, как в переменной command префикс удаляется, поэтому измените его на: command === 'resolveRequest'

...