【问题标题】:discord.js - put code into embeddiscord.js - 将代码嵌入
【发布时间】:2018-05-03 21:06:46
【问题描述】:

我有以下代码:

    ("...............????......").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 中可行吗?如果是这样,请帮帮我!不知道如何实现这一目标。

:) 会

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案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:......................")`,

    然后它看起来像这样:

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

    尝试更具体地说明您真正想要展示的内容

    【讨论】:

      【解决方案2】:

      如果我对您的理解正确,您想将第一个 sn-p 代码发送到描述字段并对其进行编辑,试图使其成为动画?

      我之前没有尝试过编辑嵌入的消息,但这就是我要解决的问题。

      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】:

        您可以创建 lastMessage 的变量(在选择它之前可能需要延迟),而不是删除它并再次发送它,然后执行 message.edit()

        【讨论】:

          【解决方案4】:

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

          我确实包含了一系列动画步骤,例如 Emil Choparinov,以及一个 msgProgress 变量。机器人检测何时发送消息,并检查if (msg.content === '')。如果为真,它会将recievedEmbed 常量设置为msg.embeds[0]

          然后,将一个新的 const 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);
          

          希望这有帮助! ?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-04-26
            • 2021-09-08
            • 2021-02-07
            • 1970-01-01
            • 2020-12-05
            • 2021-07-23
            • 2020-07-14
            相关资源
            最近更新 更多