如何通过字段值从渠道获取RichEmbed?

时间:2019-04-21 07:50:22

标签: javascript discord discord.js

因此,我正在为我的Discord频道创建漫游器。我根据请求创建了一个特殊的系统。例如,用户发送一个要添加到他想要的聊天中的请求。每个请求都与一个唯一的ID配对。请求被形成并发送到服务通道,主持人可以在其中看到这些请求。然后,请求得到解决后,主持人键入.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 个答案:

答案 0 :(得分:1)

不建议使用.find('value', 'key'),而应使用.find(thing => thing.value == 'key')

您还应该使用数据库来存储内容,但是您的代码实际上并没有损坏,只是您检查了以下内容:command === '.resolveRequest',这意味着您需要运行..resolveRequest,就像在{ {1}}变量会删除前缀,因此将其更改为:command