Fix Whatsapp link issue

This commit is contained in:
Darren Clarke 2024-07-19 11:25:35 +02:00
parent c32c26088f
commit 1512cca858
3 changed files with 203 additions and 18 deletions

View file

@ -6,24 +6,26 @@
"license": "AGPL-3.0-or-later",
"dependencies": {
"@adiwajshing/keyed-db": "0.2.4",
"@hapi/hapi": "^21.3.10",
"@hapi/boom": "^10.0.1",
"@hapi/hapi": "^21.3.10",
"@hapipal/schmervice": "^3.0.0",
"@hapipal/toys": "^4.0.0",
"@whiskeysockets/baileys": "^6.7.5",
"hapi-pino": "^12.1.0"
"hapi-pino": "^12.1.0",
"link-preview-js": "^3.0.5"
},
"devDependencies": {
"@types/node": "*",
"@link-stack/eslint-config": "*",
"@link-stack/jest-config": "*",
"@link-stack/typescript-config": "*",
"@types/node": "*",
"dotenv-cli": "^7.4.2",
"tsx": "^4.16.2",
"typescript": "^5.5.3"
},
"scripts": {
"build": "tsc -p tsconfig.json",
"dev": "tsx src/index.ts",
"dev": "dotenv -- tsx src/index.ts",
"start": "node build/main/index.js"
}
}

View file

@ -75,6 +75,7 @@ export default class WhatsappService extends Service {
const socket = makeWASocket({
...options,
auth: state,
generateHighQualityLinkPreview: false,
msgRetryCounterMap,
shouldIgnoreJid: (jid) =>
isJidBroadcast(jid) || isJidStatusBroadcast(jid),
@ -168,7 +169,11 @@ export default class WhatsappService extends Service {
message,
messageTimestamp,
} = webMessageInfo;
if (!fromMe && message && remoteJid !== "status@broadcast") {
const isValidMessage =
message &&
remoteJid !== "status@broadcast" &&
(!fromMe || (fromMe && !!message?.extendedTextMessage));
if (isValidMessage) {
const { audioMessage, documentMessage, imageMessage, videoMessage } =
message;
const isMediaMessage =
@ -210,20 +215,24 @@ export default class WhatsappService extends Service {
attachment = buffer.toString("base64");
}
// @ts-ignore
if (messageContent || attachment) {
const message =
webMessageInfo?.message?.conversation ??
webMessageInfo?.message?.extendedTextMessage?.text ??
webMessageInfo?.message?.imageMessage?.caption ??
webMessageInfo?.message?.videoMessage?.caption;
const conversation = message?.conversation;
const extendedTextMessage = message?.extendedTextMessage?.text;
const imageMessage = message?.imageMessage?.caption;
const videoMessage = message?.videoMessage?.caption;
const messageText = [
conversation,
extendedTextMessage,
imageMessage,
videoMessage,
].find((text) => text && text !== "");
const payload = {
to: botID,
from: webMessageInfo.key.remoteJid?.split("@")[0],
from: remoteJid?.split("@")[0],
messageId: id,
sentAt: new Date((messageTimestamp as number) * 1000).toISOString(),
message,
message: messageText,
attachment,
filename,
mimeType,
@ -296,7 +305,6 @@ export default class WhatsappService extends Service {
_lastReceivedDate: Date,
): Promise<proto.IWebMessageInfo[]> {
const connection = this.connections[botID]?.socket;
console.log({ connection });
const messages = await connection.loadAllUnreadMessages();
return messages;