首页 > 解决方案 > 如何让机器人在多个嵌入中发送 2000 多个字符

问题描述

我正在尝试制作一个歌词命令,让机器人查找给定歌曲的标题并提供歌词。但有些歌曲有超过 2000 个字符(如说唱神)。因此,如果歌词的长度超过 2000 个字符(如 Rythm bot),我想将我的歌词分成两部分并发送两个嵌入,我不知道该怎么做。给予的任何帮助将不胜感激。(discord.js 版本 12.3.1)。我的代码:

const { MessageEmbed} = require('discord.js')
const lyricsFinder = require('lyrics-finder')

module.exports = {
  name: "lyrics",
  category: "info",
  description: "Provides you the lyrics of the song",
  usage: `lyrics <song name>`,
  aliases: ['l'],
  run: async (client, message, args) => {

    if (!args[0]) {
      let embed = new MessageEmbed()
      .setColor('RED')
      .setTitle(':x: Song title not provided!')
      return message.channel.send(embed)
    }
    let lyrics = await lyricsFinder(args.join(' ')) || "Not Found!";
    let embed = new MessageEmbed()
    .setColor('RANDOM')
    .setDescription(lyrics)
    message.channel.send(embed);
  }
}

但由于有些歌曲有超过 2000 个字符,它给了我这个错误:

DiscordAPIError: Invalid Form Body
content: Must be 2000 or fewer in length.
    at RequestHandler.execute (E:\my bots\HimalBeta\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async RequestHandler.push (E:\my bots\HimalBeta\node_modules\discord.js\src\rest\RequestHandler.js:39:14) {
  method: 'post',
  path: '/channels/763632986158923789/messages',
  code: 50035,
  httpStatus: 400
}

标签: javascriptdiscorddiscord.js

解决方案


你可以使用类似的东西

var str = 'abcdefghijkl';
console.log(str.match(/.{1,3}/g));

拆分文本。将 3 更改为 2000 并设置str为您的长字符串。然后只需遍历它们并将它们全部发送。(str.match(/.{1,3}/g)将返回一个字符串数组)


推荐阅读