Как вернуть файл png с помощью FS

#node.js #file #discord.js #fs

Вопрос:

Я создавал бота DiscordJS, который будет возвращать файл, сохраненный в моей локальной папке, с помощью FS. Он может открывать и закрывать папки, но проблема в том, что мне нужно вернуть файл png, а не его имя. Прямо сейчас он возвращает только имя файла, а не сам файл. Есть ли какой-либо способ вернуть файл, а не его имя? При необходимости я добавлю сам код, однако, я думаю, что в коде нет необходимости, поскольку это скорее теоретический вопрос, чем практический вопрос.

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

1. На самом деле было бы очень полезно, если бы вы добавили сюда свой код, поскольку это улучшит наше понимание вашей конкретной проблемы. На самом деле, fs модуль от nodejs может возвращать данные файла в байтовых массивах, которые затем можно загрузить в discord, чтобы отобразить их в виде сообщения.

2. Не могли бы вы рассмотреть возможность немного углубиться, поскольку ваш вопрос рассматривается как непонятный вопрос, поскольку существует такая минимальная глубина объяснений, есть ли какие-либо фрагменты кода или какие-либо тестовые прогоны или ошибки, с которыми вы столкнулись?

Ответ №1:

Это просто сработало для меня локально, поскольку оно считывалось в файловом буфере и отправляло его в виде вложения на соответствующий канал сервера discord.

 const { Client, Intents } = require('discord.js')
const client = new Client({ intents: [Intents.FLAGS.GUILDS] })
const fs = require('fs')

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`)

  client.guilds.cache
    .get('760214655120965664')
    .channels.cache.get('760214655653117963')
    .send({
      content: 'anyFile',
      files: [
        { name: 'file.png', attachment: fs.readFileSync('./packages/client/public/fav.png') },
      ],
    })
})

client.login('yourtoken')
 

Результат:

изображение результата

Документация / Ссылка: https://discord.js.org/#/docs/main/stable/class/TextChannel?scrollTo=send