discord.js - 将代码放入嵌入

时间:2018-05-03 21:06:47

标签: javascript node.js discord discord.js

我有以下代码:

    (".....................").then(sentMessage => sentMessage.edit(".....................")).then(sentMessage => sentMessage.edit("....................")).then(sentMessage => sentMessage.edit("....................")).then(sentMessage => sentMessage.edit("....................")).then(sentMessage => sentMessage.edit("....................")).then(sentMessage => sentMessage.edit("..................")).then(sentMessage => sentMessage.edit(".........................")).then(sentMessage => sentMessage.edit("..:tired_face:.:red_car:......................")).then(sentMessage => sentMessage.edit("...:ghost::red_car:......................")

如何将其放入使用以下代码嵌入的discord.js中:

    message.channel.send({
        "embed": {
          "title": "Car",
          "description": - i want the above code to be here -,
          "color": 16763981,
          "footer": {
            "text": "Have a fun ride!"
          }
        }
      })
     }

discord.js有可能吗?如果是这样,请帮帮我!不知道如何实现这一目标。

:)将

4 个答案:

答案 0 :(得分:1)

我不知道你到底想要做什么。我想你制作的是动画,如果没有,你只想在你的嵌入中打印这段代码,只需将这段代码放在反引号中



description: `(".....................")
  .then(sentMessage => sentMessage.edit("....................."))
  .then(sentMessage => sentMessage.edit("...................."))
  .then(sentMessage => sentMessage.edit("...................."))
  .then(sentMessage => sentMessage.edit("...................."))
  .then(sentMessage => sentMessage.edit("...................."))
  .then(sentMessage => sentMessage.edit(".................."))
  .then(sentMessage => sentMessage.edit("........................."))
  .then(sentMessage => sentMessage.edit("..:tired_face:.:red_car:......................"))
  .then(sentMessage => sentMessage.edit("...:ghost::red_car:......................")`,




然后它看起来像这样:enter image description here

如果你想制作动画,你将不得不使用机器人来删除和重写动画的每一步的嵌入(如果我'你不能编辑嵌入。我没有错)

尝试更明确地了解真正想要展示的内容

答案 1 :(得分:0)

您可以创建lastMessage的变量(而不是将其再次发送),然后创建message.edit()

答案 2 :(得分:0)

如果我对您的理解正确,您想将第一段代码发送到description字段中并进行编辑,以使其成为动画吗?

我以前没有尝试编辑嵌入的消息,但这就是我要解决的方法。

const sendCarAnimation = async (message) => {

    // define the steps here
    const animationSteps = [
        ".....................",
        ".....................",
        "....................",
        "....................",
        "....................",
        "....................",
        "..................",
        ".........................",
        "..:tired_face:.:red_car:......................",
        "...:ghost::red_car:......................"
    ];

    // generate an embed using the RichEmbed functionality
    const embed = new Discord.RichEmbed()
        .setTitle('Car')
        .setDescription(animationSteps[0])
        .setColor(16763981)
        .setFooter('Have a fun ride!')

    // initialize the message with the first embed
    let messageState = await message.channel.send(embed);


    // loop through and edit the message 
    let isFirst = true;
    for(let currentStep of animationSteps) {
        if(isFirst) {
            isFirst = false;
            continue;
        }
        embed.setDescription(currentStep);
        messageState = await messageState.edit(embed);
    }
}

注意::这将需要执行很多请求,因此您很可能会受到不和谐的限制。因此,我认为这不是一个好主意。这是他们的documentation。您可能可以使用Discord.js的

提取一些棘手的代码
client.on('rateLimit', (rateLimitInfo) => {});

事件。 Documentation也与此链接。祝你好运!

答案 3 :(得分:0)

知道了!我要解决的问题是在启动时使用channel = client.user.guilds.cache.get("Guild id here").channels.cache.get("channel id")抢占了正确的频道,建立了一个刚刚说旧的嵌入,然后发送了嵌入。

我确实包括了一系列动画步骤,例如Emil Choparinov和一个msgProgress变量。该漫游器会检测何时发送邮件,并检查if (msg.content === '')。如果为true,则会将recievedEmbed常量设置为msg.embeds[0]

然后,使用旧的嵌入作为起点,将新的常量embed设置为新的Discord.MessageEmbed,并将标题设置为animationSteps[msgProgress]。然后,它调用msg.edit(embed),并将msgProgress变量更改为1。

还有一个client.on('messageUpdate', msg => {}),它具有相同的代码,除了在开始时,它检查msg progress> 9,如果是,则返回。这是代码:

require('dotenv').config();

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

var channel;

const genericEmbed = new Discord.MessageEmbed()
    .setTitle("old");

const animationSteps = [
    "...............:red_car:......",
    "............:red_car:.........",
    "........:red_car:............",
    ".....:red_car:...............",
    "..:red_car:..................",
    ":red_car:....................",
    ":open_mouth:....:red_car:..............",
    ".:cold_sweat:..:red_car:......................",
    "..:tired_face:.:red_car:......................",
    "...:ghost::red_car:......................"
];

var msgProgress = 0;

client.on('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
    channel = client.guilds.cache.get("753227876207165570").channels.cache.get("753227876207165573");
    console.log(channel);
    const firstEmbed = new Discord.MessageEmbed()
        .setTitle("old");

    channel.send(firstEmbed);
});

client.on('message', msg => {
    if (msg.content === '') {
        console.log("good");
        channel = msg.channel;

        const receivedEmbed = msg.embeds[0];
        const embed = new Discord.MessageEmbed(receivedEmbed)
            .setTitle(animationSteps[msgProgress]);

        msg.edit(embed);

        msgProgress++;
    }
});

client.on('messageUpdate', msg => {
    if (msgProgress > 9) {
        return;
    }

    if (msg.content === '') {
        console.log("good");
        channel = msg.channel;
        const receivedEmbed = msg.embeds[0];
        const embed = new Discord.MessageEmbed(receivedEmbed)
            .setTitle(animationSteps[msgProgress]);
        msg.edit(embed);

        msgProgress++;
    }
});

client.login(process.env.DISCORD_TOKEN);

希望这对您有所帮助! ?