简体   繁体   中英

How to get a RichEmbed from the channel by field value?

So, I'm creating the bot for my Discord channel. I created a special system based on requests. For example, the user sends a request to be added to the chat he wants. Each request is paired with a unique ID. The request is formed and sent to the service channel where the moderator can see those requests. Then, once the request is solved, moderator types something like .resolveRequest <ID> and this request is copied and posted to 'resolved requests' channel.
There is some code I wrote.

Generating request:

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));
    }

Now the .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> works flawlessly, but .resolveRequest <ID> does't work at all, even no errors.
Any way to fix it?

Using .find('value', 'key') is deprecated, use .find(thing => thing.value == 'key') instead.

Also you should use a DataBase to store things, but your Code actually is not broken, its just that you check for: command === '.resolveRequest' , wich means you need to run ..resolveRequest , as in the command variable the prefix gets cut away so change that to: command === 'resolveRequest'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM