diff --git a/packages/bot/core/tsconfig.json b/packages/bot/core/tsconfig.json index 61d15314..f59d8a0f 100644 --- a/packages/bot/core/tsconfig.json +++ b/packages/bot/core/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*.ts"] -} \ No newline at end of file +} diff --git a/packages/bot/discord/tsconfig.json b/packages/bot/discord/tsconfig.json index 61d15314..f59d8a0f 100644 --- a/packages/bot/discord/tsconfig.json +++ b/packages/bot/discord/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*.ts"] -} \ No newline at end of file +} diff --git a/packages/bot/signal/tsconfig.json b/packages/bot/signal/tsconfig.json index 61d15314..f59d8a0f 100644 --- a/packages/bot/signal/tsconfig.json +++ b/packages/bot/signal/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*.ts"] -} \ No newline at end of file +} diff --git a/packages/bot/telegram/tsconfig.json b/packages/bot/telegram/tsconfig.json index 61d15314..f59d8a0f 100644 --- a/packages/bot/telegram/tsconfig.json +++ b/packages/bot/telegram/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*.ts"] -} \ No newline at end of file +} diff --git a/packages/bot/whatsapp/src/index.ts b/packages/bot/whatsapp/src/index.ts index e1948341..66071c03 100644 --- a/packages/bot/whatsapp/src/index.ts +++ b/packages/bot/whatsapp/src/index.ts @@ -27,6 +27,20 @@ export interface IncomingMessage { } type MessageHandler = (msg: IncomingMessage) => void | Promise; +type WhatsAppTimestamp = number | string | { toNumber?: () => number }; + +function toUnixMs(timestamp: WhatsAppTimestamp | null | undefined): number { + if (typeof timestamp === "number") return timestamp * 1000; + if (typeof timestamp === "string") { + const numeric = Number(timestamp); + return Number.isFinite(numeric) ? numeric * 1000 : Date.now(); + } + + const numeric = timestamp?.toNumber?.(); + if (typeof numeric === "number" && Number.isFinite(numeric)) return numeric * 1000; + + return Date.now(); +} export class WhatsAppBot { private sock: WASocket | null = null; @@ -54,7 +68,8 @@ export class WhatsAppBot { for (const msg of messages) { if (!msg.message || msg.key.fromMe) continue; - const chatId = msg.key.remoteJid!; + const chatId = msg.key.remoteJid; + if (!chatId) continue; const isGroup = chatId.endsWith("@g.us"); const text = msg.message.conversation || @@ -65,7 +80,7 @@ export class WhatsAppBot { source: chatId, sourceName: msg.pushName || "User", text, - timestamp: msg.messageTimestamp * 1000, + timestamp: toUnixMs(msg.messageTimestamp), chatId, isGroup, attachments: [], @@ -125,4 +140,4 @@ export function loadConfig(env: Record): Config { allowedUsers: env.ALLOWED_USERS?.split(",").map((u) => u.trim()).filter(Boolean) || [], adminUsers: env.ADMIN_USERS?.split(",").map((u) => u.trim()).filter(Boolean) || [], }); -} \ No newline at end of file +} diff --git a/packages/bot/whatsapp/tsconfig.json b/packages/bot/whatsapp/tsconfig.json index 61d15314..f59d8a0f 100644 --- a/packages/bot/whatsapp/tsconfig.json +++ b/packages/bot/whatsapp/tsconfig.json @@ -1,8 +1,8 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./dist", "rootDir": "./src" }, "include": ["src/**/*.ts"] -} \ No newline at end of file +}