2017-09-06 84 views
2

方案阅读的嵌入信息的内容: 我想读取的嵌入信息各个领域发布到服务器,做了一些处理,并在数据库日志的结果。从不和谐服务器

测试: 使用testBot用于发送有关信息使用普通的文本消息时一切正常,但使用了“嵌入信息”时(理论上使它更容易识别处理等领域),我可以不检索数据。我完全丧失了如何访问消息对象中的“嵌入”。

我意识到它是关于现在我应该弹出一些代码供您检查,但我甚至没有这么远!阅读文档(链接到最后)我很确定这将是与这些类之一有关: - 消息。 嵌入 .x.y.z或MessageEmbed.x.y.x

谷歌已经不是我的朋友,我无法找到一个代码例子读取“嵌入消息”这是奇怪的。

无论如何,为了确保我看起来不像一个完整的海绵,我将包含“embed sender bot”的工作代码。有些人似乎有破解语法的问题,所以它可能用于其他人在这里搜索...

在此先感谢您的任何帮助,您可以给。

文档中找不到Docs for MessageEmbed ;及

Embed used within message class

代码测试嵌入发件人BOT:

const Discord = require("discord.js"); 
    const client = new Discord.Client(); 
    const config = require("./config.json"); 

    /* A simple bot to throw out a test "Embed message" when asked to. */ 

    client.on("message", (message) => { 
    if (!message.content.startsWith(config.prefix) || message.author.bot) 
    return; 

    if (message.content.startsWith(config.prefix + "emb")) { 
    console.log("Sending an embedd message"); 
    message.channel.send({embed: { 
    color: 3447003, 
    title: "This is an embed (Title)", 
    description: "Embed! (first line)\nsecond line of Desc\nthird line of 
    Desc", 
    footer: 
    { 
     text: "Footnote ©" 
    } 
    }}); 
} else if (message.content.startsWith(config.prefix + "test")) 
    { 
    message.reply("Bot active"); 


    }; 

}); 

    client.login(config.token); 

回答

1

一旦你有你Message对象,检查embeds属性获取包含它里面的所有MessageEmbeds的数组。然后,您可以读取任何属性的,如descriptionfields

下面是一些示例代码:

const Discord = new Discord.Client(); 
/* client.login, etc. etc. */ 

client.on('message', (msg) => { 
    msg.embeds.forEach((embed) => { 
     // add this embed to the database, using embed.description, embed.fields, etc. 
     // if there are no embeds, this code won't run. 
    }); 
    msg.reply("Embed sent!"); 
}); 
+0

由于手帖。 我已经设法绊倒正确的语法(比任何事情都更幸运!)当然,在你得到第一点后,其余的就落到了原地。我知道我只会收到一个消息嵌入到一个单一的消息我最终以此作为测试: - '尝试{(message.embeds [0] .description);} catch(err){return}; //工作只嵌入' 你的是一个更好的更圆和一般的答案;-) 再次感谢。 – MIke

+0

试图给你一个upvote,但显然是太新的网站,它显示;-)希望它注册 – MIke