Javascript 如果存在超过25个字段不一致节点,则发送另一条消息

Javascript 如果存在超过25个字段不一致节点,则发送另一条消息,javascript,node.js,discord,discord.js,bots,Javascript,Node.js,Discord,Discord.js,Bots,我正在用我的GTA V RP服务器的javascript制作一个discord bot,这个bot有一个命令,告诉你玩家的名字、id和ping,但是当玩家超过25个时,就会发生错误(RangeError:RichEmbeds可能不会超过25个字段)。我考虑过这个主意​​有超过25名玩家发送另一条消息给其他玩家 代码如下: exports.run = async (client, message, args) => { var util = require("../fivem

我正在用我的GTA V RP服务器的javascript制作一个discord bot,这个bot有一个命令,告诉你玩家的名字、id和ping,但是当玩家超过25个时,就会发生错误(RangeError:RichEmbeds可能不会超过25个字段)。我考虑过这个主意​​有超过25名玩家发送另一条消息给其他玩家

代码如下:

exports.run = async (client, message, args) => {

  var util = require("../fivem");
  message.delete();
  if (servers[message.guild.id].guild === message.guild.id) {
    try {
      var arg = `${servers[message.guild.id].ip}`
      /*    var args = `${servers[message.guild.id].ip}` */
      let api = `http://${arg}/players.json`
      let api2 = `http://${arg}/info.json`
      /*    if (!args) {return util.embed("Please Specify a Direct-IP address ex: `"+config.prefix+"players thatziv.ddns.net:30120`")}
         if (!message.content.includes(":")) {return util.embed("Please Specify a port ex: **"+config.prefix+"players thatziv.ddns.net__:30120__**")} */
      req(api2, function (err, response, main) {
        req(api, function (err, response, body) {
          if (err) {
            util.zembed("That server is offline or does not exist... \n**Console:**\n```js\n" + err + "```")
          }
          else {
            try {
              var start = JSON.parse(body)
              var start2 = JSON.parse(main)

              if (start == null || start == []) {
                var e = 0
              } else {
                var e = start.length;
              }
              var embed = new Discord.RichEmbed()
                .setColor(color)
                .setAuthor(state, icon)
                .setThumbnail(icon)
                .setDescription(`__**FamousLifeRP Players**__\n(First 25 players)\n**${e}** out of **${start2.vars.sv_maxClients}** Players.`)
              start.forEach(function (element) {
                var sv = `**${element.name}**\nID: **${element.id}** Ping: **${element.ping}**`;

                embed.addField(`**${element.name}**`, `ID: **${element.id}** Ping: **${element.ping}**`)
              })

              message.channel.send({ embed: embed });
              log(`Used Command [PLAYERS] in ${message.guild.name}`)
        
            } catch (err) {
              util.embed("That server is offline or does not exist...\n**Console:**\n```js\n" + err + "```")
            }
          }

        })

      })

    } catch (err) {
      util.embed("That server does not exist. \n**Console:**\n```js\n" + err + "```");
    }
  } else {
    return util.embed("Please **set** a Direct-Address for this server. ex: `" + config.prefix + "set thatziv.ddns.net:30120`\n***__Please make sure to include the address with port.__***")

  }
};



var exampleJSON = [
  {
    "endpoint": "[::ffff:5.15.226.104]:27594",
    "id": 294,
    "identifiers": [
      "steam:110000114ff0dc9",
      "license:12eaf8ef61955729188ff56b08e820c8a61bcbc3",
      "ip:5.15.226.104"
    ],
    "name": "Leonadro Di la Londra",
    "ping": 165
  }
]
这里是错误:

“该服务器处于脱机状态或不存在。。。 慰问:
RangeError:RichEmbeds不能超过25个字段。“

创建一个嵌入数组,在数组中循环。在循环中使用计数器。将字段按常规添加到嵌入。一旦计数器达到25,将一个新的嵌入对象推入嵌入数组,然后将新字段重定向到新添加的嵌入。重复此操作,直到完成添加所有字段。然后您可以将所有嵌入发送到通道。
(如果您有大量数据,可能需要注意消息速率限制)

我不打算为您编写所有代码,但它应该是这样的:

const嵌入=[];
设计数器=0;
start.forEach(e=>{
if(!embeds[Math.floor(counter/25)]{//检查数组中是否存在嵌入
push(newdiscord.MessageEmbed();
//添加嵌入,做任何你需要的标题,等等
}
嵌入[Math.floor(counter/25)].addField(“,”);//任何需要添加的内容
计数器++;
}
embeds.forEach(e=>{
message.channel.send(e);
//可能也会注意这一点,因为它们不会同步发送
//你可以试着答应我,不管怎么样
}

另外需要注意的是,您的代码片段似乎使用了不推荐的Discord.js版本,请使用最新版本(12.5.1)

我考虑过​​有超过25名玩家向其他玩家发送另一条消息。
-你也想过尝试编写代码吗?你能混合这两种代码吗?@TheRedyYT抱歉,巴德,这是一个帮助论坛,而不是“请为我编写全部代码”论坛