File uploads
Send and receive files across chat platforms.
Send files
Attach files to messages using the files property:
const reportBuffer = Buffer.from("PDF content");
await thread.post({
markdown: "Here's the report you requested:",
files: [
{
data: reportBuffer,
filename: "report.pdf",
mimeType: "application/pdf",
},
],
});Multiple files
await thread.post({
markdown: "Attached are the images:",
files: [
{ data: image1, filename: "screenshot1.png" },
{ data: image2, filename: "screenshot2.png" },
],
});Files without text
await thread.post({
markdown: "",
files: [{ data: buffer, filename: "document.xlsx" }],
});Receive files
Access attachments from incoming messages:
bot.onSubscribedMessage(async (thread, message) => {
for (const attachment of message.attachments ?? []) {
console.log(`File: ${attachment.name}, Type: ${attachment.mimeType}`);
if (attachment.fetchData) {
const data = await attachment.fetchData();
console.log(`Downloaded ${data.length} bytes`);
}
}
});Attachment properties
| Property | Type | Description |
|---|---|---|
type | string | Attachment type (e.g., "image", "file") |
url | string (optional) | Public URL |
name | string (optional) | Filename |
mimeType | string (optional) | MIME type |
size | number (optional) | File size in bytes |
width | number (optional) | Image width |
height | number (optional) | Image height |
fetchData | () => Promise<Buffer> (optional) | Download the file data |