Отправка более одного изображения (Discord JS)

#javascript #node.js #discord.js

#javascript #node.js #discord.js

Вопрос:

Я попытался создать команду, которая отправляет более одного случайно выбранного изображения из массива изображений.

Следующий код работает, но он отправляет только одно изображение:

 client.on('message', (message) => {
  if (message.content.startsWith("es!jefelegion")) {
    let jefe = [...];
    let image = jefe[Math.floor(Math.random() * jefe.length)];

    console.log(image);
    message.channel.send(image.text, {
      files: [
        {
          attachment: image.link,
          name: 'name.jpg',
        },
      ],
    });
  }
});
 

Как я могу изменить это, чтобы заставить отправлять два или более изображений?

Ответ №1:

files Опция принимает массив, поэтому вы можете просто добавить туда больше элементов. Если вы хотите выбрать случайные изображения из списка, вы можете создать вспомогательную функцию, как pick() показано ниже.

 function pick(arr, size) {
  if (typeof size === 'undefined') {
    return arr[Math.floor(Math.random() * arr.length)];
  }

  if (size > arr.length) {
    size = arr.length;
  }

  const copy = arr.slice();
  const items = [];

  while (size--) {
    const i = Math.floor(Math.random() * copy.length);
    const item = copy.splice(i, 1)[0];
    items.push(item);
  }

  return items;
}

const images = [
  {
    attachment: './path/to/image1.jpg',
    name: 'Image #1',
  },
  {
    attachment: './path/to/image2.jpg',
    name: 'Image #2',
  },
  {
    attachment: './path/to/image3.jpg',
    name: 'Image #3',
  },
  // ... rest of images
];

message.channel.send('Wooo, more than one files 🎉', {
  files: pick(images, 3), // picks 3 random images from the `images` array
});
 

И вот результат:

бот

Комментарии:

1. Да, но я хочу отправить 2 или более случайных изображения с константой. Я имею в виду, что каждый раз, когда вы используете команду, бот отправляет вам два или более случайных разных изображения из const с тысячами изображений.