embedMsg返回未定义

时间:2020-06-06 14:53:12

标签: javascript discord discord.js

我试图制作并嵌入并添加反应。 但是当console.log时嵌入的查找返回未定义 我试图让以下代码创建一个反应角色。 我可以成功创建嵌入,但无法添加所需的反应,因为它找不到嵌入

const Discord = require('discord.js')
module.exports.run = async (client,message,args,con)=>{
    message.channel.send("How many reaction role you want to create");
    answer = await message.channel.awaitMessages(answer => answer.author.id != client.user.id,{max: 1});
    const n = (answer.map(answers => answers.content).join())
    if(isNaN(n)) return message.channel.send("Enter a Number")
    message.channel.send("Enter the title");
    answer = await message.channel.awaitMessages(answer => answer.author.id != client.user.id,{max: 1});
    const embtitle = (answer.map(answers => answers.content).join())
    var a = []
    var b = []
    for(var i =0; i<n;i++){
        message.channel.send("Enter the emoji")
        answer = await message.channel.awaitMessages(answer => answer.author.id != client.user.id,{max: 1});
        a[i] = (answer.map(answers => answers.content).join())
        message.channel.send("Enter the role name")
        answer = await message.channel.awaitMessages(answer => answer.author.id != client.user.id,{max: 1});
        b[i] = (answer.map(answers => answers.content).join())
    }
    function embstr(){
        var finalString = '';
        for(var i =0;i<n;i++){
            
            finalString += a[i]+ ' '+b[i] +'\n';
        }
        return finalString;
    }
    
    
    const embed = new Discord.MessageEmbed()
        .setTitle(embtitle)
        .setColor("BLUE")
        .setDescription(embstr());
    message.channel.send(embed);
    const embedMsg = message.embeds.find(msg => msg.title === 'some');
                console.log(embedMsg)

    for(var i = 0;i<n;i++){
        var emoid = a[i].slice(1,-1)
        emoid = emoid.split(':')
        emoid = emoid[2];
        console.log(emoid);
        
                const embedMsg = message.embeds.find(msg => msg.title === embtitle);
                console.log(embedMsg)
                if(embedMsg){
                    message.react(emoid)
                }
            
            
            
            
        
    }
}

module.exports.config = {
    command: 'create'
}

1 个答案:

答案 0 :(得分:1)

而不是不断尝试查找这样发送的消息:

const embedMsg = message.embeds.find(msg => msg.title === 'some');

您可以简单地将发送的消息分配给一个变量,如下所示:

const embedMsg = await message.channel.send(embed); // I used await since I saw your function is asynchronous

然后以这种方式对消息做出反应:

await embedMsg.react('emote Name/ID/Whatever');

希望这会有所帮助:)