Add bots files handling logic

This commit is contained in:
2026-10-21 17:56:09 +01:00
parent b0af4db1bf
commit d17a4a7bdd
97 changed files with 5843 additions and 41 deletions
@@ -4,7 +4,7 @@ import BunSQLite from "@moduletrace/bun-sqlite";
import grabMessagesMedia from "./grab-messages-media";
import grabMessagesReactions from "./grab-messages-reactions";
import grabMessagesReplies from "./grab-messages-replies";
import mediaToAttachment from "./media-to-attachment";
import mediaToAttachment, { grabAttachmentFileIds } from "./media-to-attachment";
type Params = {
session_id: number | string;
@@ -61,6 +61,14 @@ export default async function grabBotMessages({
: Promise.resolve(new Map()),
]);
/**
* Files that live in a bot's folder carry their `bot_files` id, so a
* chip opens the file rather than only its bytes.
*/
const file_ids = await grabAttachmentFileIds({
media_ids: [...media.values()].flat().map((file) => Number(file.id)),
});
return messages.map((message) => {
const id = Number(message.id);
const files = media.get(id);
@@ -69,7 +77,14 @@ export default async function grabBotMessages({
return {
...message,
...(files
? { attachments: files.map((file) => mediaToAttachment({ media: file })) }
? {
attachments: files.map((file) =>
mediaToAttachment({
media: file,
file_id: file_ids.get(Number(file.id)),
}),
),
}
: {}),
...(reply_to ? { reply_to } : {}),
...(user_id ? { reactions: reactions.get(id) || [] } : {}),