Merge remote-tracking branch 'origin/main'

dev/supplier-email-drawer
Lei OT 6 months ago
commit d6613e40f1

@ -7,7 +7,7 @@ const {
makeInMemoryStore, makeInMemoryStore,
useMultiFileAuthState, useMultiFileAuthState,
downloadMediaMessage, downloadMediaMessage,
isJidUser isJidUser, isJidGroup
} = require('@whiskeysockets/baileys'); } = require('@whiskeysockets/baileys');
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
@ -20,12 +20,16 @@ const generateId = require('../../utils/generateId.util');
const NodeCache = require('node-cache'); const NodeCache = require('node-cache');
const P = require('pino'); const P = require('pino');
// https://baileys.whiskeysockets.io/
const createWhatsApp = async phone => { const createWhatsApp = async phone => {
let qrCode = null; let qrCode = null;
const channelId = generateId(); const channelId = generateId();
const whatsAppNo = phone; const whatsAppNo = phone;
// 缓存 msgId-externalId过期时间为 5 分钟 // 缓存 msgId-externalId过期时间为 5 分钟
const externalIdCache = new NodeCache({ stdTTL: 60*5 }); const externalIdCache = new NodeCache({ stdTTL: 60*5 });
// 缓存群信息,过期时间为 5 分钟
const groupSubjectCache = new NodeCache({ stdTTL: 60*60*24 });
const logger = P({ timestamp: () => `,"time":"${new Date().toJSON()}"` }, P.destination('./logs/wa-logs-' + phone + '_' + channelId + '.txt')); const logger = P({ timestamp: () => `,"time":"${new Date().toJSON()}"` }, P.destination('./logs/wa-logs-' + phone + '_' + channelId + '.txt'));
logger.level = 'trace'; logger.level = 'trace';
const msgRetryCounterCache = new NodeCache(); const msgRetryCounterCache = new NodeCache();
@ -81,6 +85,13 @@ const createWhatsApp = async phone => {
const messageType = Object.keys(msg.message)[0]; const messageType = Object.keys(msg.message)[0];
const remoteNo = decodeJid(msg.key.remoteJid); const remoteNo = decodeJid(msg.key.remoteJid);
const externalId = externalIdCache.get(msg.key.id); const externalId = externalIdCache.get(msg.key.id);
const isGroup = isJidGroup(msg.key.remoteJid);
let groupSubject = groupSubjectCache.get(msg.key.remoteJid)
if (isGroup && groupSubject === undefined) {
const groupMetadata = await waSocket.groupMetadata(msg.key.remoteJid);
groupSubject = groupMetadata.subject;
groupSubjectCache.set(msg.key.remoteJid, groupMetadata.subject)
}
if (msg.message?.conversation || msg.message?.extendedTextMessage?.text) { if (msg.message?.conversation || msg.message?.extendedTextMessage?.text) {
@ -100,6 +111,7 @@ const createWhatsApp = async phone => {
}, },
conversation: { conversation: {
type: isJidUser(msg.key.remoteJid) ? 'individual' : 'group', type: isJidUser(msg.key.remoteJid) ? 'individual' : 'group',
name: groupSubject,
}, },
customerProfile: { customerProfile: {
id: decodeJid(msg.key.participant), id: decodeJid(msg.key.participant),
@ -124,6 +136,7 @@ const createWhatsApp = async phone => {
}, },
conversation: { conversation: {
type: isJidUser(msg.key.remoteJid) ? 'individual' : 'group', type: isJidUser(msg.key.remoteJid) ? 'individual' : 'group',
name: groupSubject,
}, },
customerProfile: { customerProfile: {
id: decodeJid(msg.key.participant), id: decodeJid(msg.key.participant),
@ -156,8 +169,8 @@ const createWhatsApp = async phone => {
image: { image: {
mimetype: imageMessage.mimetype, mimetype: imageMessage.mimetype,
sha256: uint8ArrayToBase64(imageMessage.fileSha256), sha256: uint8ArrayToBase64(imageMessage.fileSha256),
caption: '', // 暂时为空 caption: imageMessage.caption,
filename: imageFilename, filePath: imageFilename,
link_original: imageMessage.url, link_original: imageMessage.url,
}, },
conversation: { conversation: {

Loading…
Cancel
Save