Я пытаюсь отправить файл mp3 с помощью бота-телеграммы.
Когда я запускаю его локально, используя узел в терминале, этот код прекрасно работает:
'use strict'
const Telegraf = require('telegraf')
const bot = new Telegraf('Token')
bot.command('audio', (ctx) => {
ctx.replyWithAudio({source: './media/song.mp3'})
})
const { PORT = 3000 } = process.env
bot.startWebhook('/', null, PORT)
Однако, когда я развертываю это как функцию AWS Lambda, я получаю следующую ошибку:
Apr 29th 12:24:12pm ERRO staging 4 events.js:183
Apr 29th 12:24:12pm ERRO staging 4 throw er; // Unhandled 'error' event
Apr 29th 12:24:12pm ERRO staging 4 ^
Apr 29th 12:24:12pm ERRO staging 4
Apr 29th 12:24:12pm ERRO staging 4 Error: write after end
Apr 29th 12:24:12pm ERRO staging 4 at write_ (_http_outgoing.js:622:15)
Apr 29th 12:24:12pm ERRO staging 4 at ServerResponse.write (_http_outgoing.js:617:10)
Apr 29th 12:24:12pm ERRO staging 4 at MultipartStream.ondata (_stream_readable.js:639:20)
Apr 29th 12:24:12pm ERRO staging 4 at emitOne (events.js:116:13)
Apr 29th 12:24:12pm ERRO staging 4 at MultipartStream.emit (events.js:211:7)
Apr 29th 12:24:12pm ERRO staging 4 at MultipartStream.Readable.read (_stream_readable.js:475:10)
Apr 29th 12:24:12pm ERRO staging 4 at flow (_stream_readable.js:846:34)
Apr 29th 12:24:12pm ERRO staging 4 at resume_ (_stream_readable.js:828:3)
Apr 29th 12:24:12pm ERRO staging 4 at _combinedTickCallback (internal/process/next_tick.js:138:11)
Apr 29th 12:24:12pm ERRO staging 4 at process._tickCallback (internal/process/next_tick.js:180:9)
Я почти уверен, что это потому, что я не понимаю, как хранятся файлы при развертывании лямбда-функции. Как каталоги сохраняются, чтобы я мог получить их? Это вообще возможно?
Мой пакет zip содержит следующие каталоги:
![Zip file](https://i.stack.imgur.com/PS1sQ.png)
Для этого бота я использовал apex up для развертывания и telegraf для написания кода.