Deploy: 2026-05-23 23:12:12
This commit is contained in:
@@ -59,28 +59,6 @@ async function startSession(session_key, webhook_url) {
|
||||
const sessionFolder = path.join(SESSIONS_DIR, session_key);
|
||||
const { state, saveCreds } = await useMultiFileAuthState(sessionFolder);
|
||||
|
||||
// Initialize InMemoryStore for chat history
|
||||
const store = makeInMemoryStore({ logger: pino({ level: 'silent' }) });
|
||||
const storeFile = path.join(SESSIONS_DIR, `${session_key}_store.json`);
|
||||
if (fs.existsSync(storeFile)) {
|
||||
try {
|
||||
store.readFromFile(storeFile);
|
||||
console.log(`[Store] Loaded store from file for ${session_key}`);
|
||||
} catch (e) {
|
||||
console.error(`[Store] Failed to load store file for ${session_key}:`, e.message);
|
||||
}
|
||||
}
|
||||
|
||||
// Periodically save store to file every 10 seconds
|
||||
const storeInterval = setInterval(() => {
|
||||
try {
|
||||
store.writeToFile(storeFile);
|
||||
} catch (e) {
|
||||
console.error(`[Store] Failed to write store file for ${session_key}:`, e.message);
|
||||
}
|
||||
}, 10000);
|
||||
storeIntervals.set(session_key, storeInterval);
|
||||
|
||||
// Fetch the latest WhatsApp Web version to avoid 405 rejection
|
||||
let version;
|
||||
try {
|
||||
@@ -361,7 +339,7 @@ async function disconnectSession(session_key) {
|
||||
|
||||
const storeFile = path.join(SESSIONS_DIR, `${session_key}_store.json`);
|
||||
if (fs.existsSync(storeFile)) {
|
||||
try { fs.unlinkSync(storeFile); } catch (e) {}
|
||||
try { fs.unlinkSync(storeFile); } catch (e) { }
|
||||
}
|
||||
|
||||
const sock = sessions.get(session_key);
|
||||
@@ -391,10 +369,10 @@ function convertToOggOpus(base64Audio) {
|
||||
fs.writeFile(inputPath, Buffer.from(base64Audio, 'base64'), (err) => {
|
||||
if (err) return reject(err);
|
||||
exec(`ffmpeg -i ${inputPath} -c:a libopus -y ${outputPath}`, (execErr) => {
|
||||
fs.unlink(inputPath, () => {});
|
||||
fs.unlink(inputPath, () => { });
|
||||
if (execErr) return reject(execErr);
|
||||
fs.readFile(outputPath, (readErr, data) => {
|
||||
fs.unlink(outputPath, () => {});
|
||||
fs.unlink(outputPath, () => { });
|
||||
if (readErr) return reject(readErr);
|
||||
resolve(data.toString('base64'));
|
||||
});
|
||||
@@ -436,7 +414,7 @@ async function sendMessage(session_key, phone, message, mediaUrl = null, audioBa
|
||||
} else if (audioBase64) {
|
||||
let finalAudioBase64 = audioBase64;
|
||||
let finalMime = mimetype || 'audio/mp4';
|
||||
|
||||
|
||||
// If it's MP3, convert to OGG Opus to ensure iPhone PTT compatibility
|
||||
if (finalMime.includes('mpeg') || finalMime.includes('mp3')) {
|
||||
try {
|
||||
@@ -446,13 +424,13 @@ async function sendMessage(session_key, phone, message, mediaUrl = null, audioBa
|
||||
} catch (err) {
|
||||
console.error(`[Baileys] FFmpeg conversion failed:`, err.message);
|
||||
// Fallback to sending as normal audio if conversion fails
|
||||
finalMime = 'audio/mp4';
|
||||
finalMime = 'audio/mp4';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const buffer = Buffer.from(finalAudioBase64, 'base64');
|
||||
const isMp3 = finalMime.includes('mpeg') || finalMime.includes('mp3');
|
||||
|
||||
|
||||
sentMsg = await sock.sendMessage(jid, {
|
||||
audio: buffer,
|
||||
mimetype: finalMime,
|
||||
@@ -533,11 +511,11 @@ async function exportChatHistory(session_key) {
|
||||
for (const msg of messages) {
|
||||
const fromMe = msg.key.fromMe;
|
||||
const sender = fromMe ? 'المنصة (نبيه)' : name;
|
||||
|
||||
|
||||
const body = msg.message?.conversation ||
|
||||
msg.message?.extendedTextMessage?.text ||
|
||||
msg.message?.imageMessage?.caption ||
|
||||
msg.message?.videoMessage?.caption || '';
|
||||
msg.message?.extendedTextMessage?.text ||
|
||||
msg.message?.imageMessage?.caption ||
|
||||
msg.message?.videoMessage?.caption || '';
|
||||
|
||||
let dateStr = 'تاريخ غير معروف';
|
||||
if (msg.messageTimestamp) {
|
||||
|
||||
Reference in New Issue
Block a user