从不和谐服务器读取嵌入消息的内容

时间:2017-09-06 11:11:31

标签: javascript discord

方案: 我正在尝试读取发布到服务器的嵌入消息中的各个字段,进行一些处理,并将结果记录到数据库中。

测试: 使用testBot发送相关消息时,一切都在使用普通文本消息时起作用,但是当一个"嵌入消息"使用(理论上使识别字段更容易处理等),我无法检索数据。我完全失去了如何访问"嵌入"来自消息对象。

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

Google并不是我的朋友,我找不到一个代码来读取"嵌入消息"这很奇怪。

无论如何,为了确保我看起来不像一个完整的海绵,我将包含"嵌入发件人机器人的工作代码"。有些人似乎在破解语法方面遇到了问题,所以它可能会对在这里搜索的其他人有用......

提前感谢您提供任何帮助。

找到的文档Docs for MessageEmbed 和;

Embed used within message class

测试代码嵌入发件人机器人:

  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 个答案:

答案 0 :(得分:2)

获得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!");
});