如何使Embed读取邮件中的数据?

时间:2018-08-02 08:57:12

标签: discord discord.js

我正在尝试使Discord机器人发布公告。我想创建一个命令,该命令将从消息中读取数据并将其转换为嵌入式消息。

示例命令:!announce Title, Description, Link, Image

const Discord = require('discord.js');
const bot = new Discord.Client();

//listener
bot.on('ready', () => {
  bot.user.setGame('Hello!')
});

bot.on('message', (message) => {

if(message.content == 'text') {
    const embed = new Discord.RichEmbed()

    .setTitle("Title!")
    .setDescription("Description")
    .setImage("https://i.imgur.com/xxxxxxxx.png")
    .setURL("https://google.com")
    .addField("Text", true)

    //Nope
    .setThumbnail("https://i.imgur.com/Rmiwd1j.png")
    .setColor(0x00AE86)
    .setFooter("Footer", "https://i.imgur.com/xxxxxxxx.png")

    .setTimestamp()

    /*
     * Blank field, useful to create some space.
     */      
    message.channel.send({embed});

}});

bot.login('token');

我希望根据文字更改嵌入。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

首先,您需要检测命令:可以使用String.startsWith()来检测!announce

if (message.content.startsWith('!announce')) {...}

然后,您必须通过分割字符串来获取命令的其他部分:您可以使用逗号(如标题,说明,...)或任何想要的字符(I,在我的示例中将使用逗号)。
String.slice()将帮助您摆脱!announce部分,而String.split()将与其他部分一起创建一个数组。

此代码将从命令!announce Title, Description, http://example.com/, http://www.hardwarewhore.com/wp-content/uploads/2018/03/dcord.png生成this之类的嵌入

client.on("message", message => {
  if (message.content.startsWith('!announce')) {
    let rest_of_the_string = message.content.slice('!announce'.length); //removes the first part
    let array_of_arguments = rest_of_the_string.split(','); //[title, description, link, image]

    let embed = new Discord.RichEmbed()
      .setTitle(array_of_arguments[0])
      .setDescription(array_of_arguments[1])
      .setImage(array_of_arguments[3])
      .setURL(array_of_arguments[2])
      .addField("Text", true)
      .setThumbnail("https://i.imgur.com/Rmiwd1j.png")
      .setColor(0x00AE86)
      .setFooter("Footer", array_of_arguments[3])
      .setTimestamp();

    message.channel.send({ embed });
  }
});

我建议使用文本而不是描述,并提醒您.addField()的第二个参数是文本,而不是内联值