Как сделать сообщение наполовину, чтобы избежать ошибки длины сообщения? - PullRequest
0 голосов
/ 16 января 2020

когда у меня на сервере больше 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);
            })
          }
      })

Ответы [ 2 ]

1 голос
/ 16 января 2020

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);
0 голосов
/ 16 января 2020

Ну, вы могли бы сделать что-то вроде

messagesArray = []

if (message.length >= 2000) {
  let cutMessages = []

  // Here you have cut your messages
  //if they can pass 4k chars, you'll need a loop, if not, just use substr

  messagesArray.push(cutMessages)
}

if (messagesArray.length) 
  messagesArray.forEach( message => { console.log(message) })
else console.log(message)
...