首页 > 解决方案 > 如何使消息减半以避免消息长度错误?

问题描述

当我的服务器机器人中有超过 25 个机器人无法根据消息发送长度能力发送消息时,如果长度为 2000 发送另一条带有机器人列表的消息,有什么办法吗?

client.on('message', message => {
    if(message.content === "-allbots") { 
    if(!message.channel.guild) return;
  let addone = 1;
const botcounts = message.guild.members.filter(m=>m.user.bot).map(m=>`\`\`${addone++}\`\` - <@${m.id}>`);
            message.channel.send(`**I Found ${message.guild.members.filter(m=>m.user.bot).size} bots ${botcounts.join('\n')}**`)

      .catch(err => {
            message.reply('message is more than 2000 charachter');
            console.error(err);
            })
          }
      })

标签: javascriptbotsdiscorddiscord.js

解决方案


Discord.js 可以自动为您完成。在使用该属性时传入一个MessageOptions对象。TextChannel.send()split

message.channel.send('Text longer than 2000 characters...', {
  split: {
    prepend: '...',
    append: '...'
  }
);

消息将如下所示:

first part...
...second part

编辑:

将其合并到您现有的代码中看起来类似于:

message.channel.send(
  `**I found ${botcounts.length} bot${botcounts.length !== 1 ? 's' : ''}.**
  ${botcounts.join('\n')}`,

  { split: true } // No "..." is added. See above for that usage. 
)
  .catch(console.error);

推荐阅读