Randompuppys не получит изображения с Reddit на дискорд. js - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь получить Discord. js бот берет изображения из Reddit и публикует их в канале, но он постоянно говорит, что нет контента для отправки, мне было интересно, если кто-то может указать, что я сделал неправильно .

(я использую обработчик команд)

Код:

const randomPuppy = require('random-puppy');
const snekfetch = require('snekfetch');

module.exports = {
    name: "reddit",
    category: "info",
    description: "Sends subreddit images",
    run: async (client, Message, args, subreddit) => {
        let reddit = [
            "dankmemes",
            "meme"
          ]

          randomPuppy(subreddit).then(url => {
              snekfetch.get(url).then(async res => {
                  await Message.channel.send({
                      file: [{
                          attachment: res.body,
                          name: 'image.png'
                      }]
                  });
              }).catch(err => console.error(err));
          });
    }
}

1 Ответ

1 голос
/ 14 апреля 2020
  • Когда я пытался использовать random-puppy для получения изображений из r / dankmemes, многие из них были в формате GIF или видео. Убедитесь, что вы используете правильное расширение и увеличиваете restRequestTimeout, чтобы дать время для отправки файла.
  • Свойство file в Discord. js 'MessageOptions устарел в v11 и был удален в v12. Вместо этого следует использовать files.
  • snekfetch устарела , вместо этого следует использовать node-fetch .

Используйте это для инициализируйте ваш клиент, который установит тайм-аут на 1 минуту вместо 15 секунд по умолчанию:

const client = new Client({restRequestTimeout: 60000})

В вашем командном файле:

// returns .jpg, .png, .gif, .mp4 etc
// for more info see https://nodejs.org/api/path.html#path_path_extname_path
const {extname} = require('path')
const fetch = require('node-fetch')

/* ... */

// in your run function
// you can use thens if you want but I find this easier to read
try {
  const url = await randomPuppy(subreddit)
  const res = await fetch(url)
  await Message.channel.send({
    files: [{
      attachment: res.body,
      name: `image${extname(url)}`
    }]
  })
} catch (err) {
  console.error(err)
}
...