feat(maria): ALLOW_SELF_CHAT — Maria raspunde doar in grupul de test, nu si in self-chat
`TEST_MODE_SELF_CHAT_ONLY` insemna „self-chat SI grupurile permise"; nu exista niciun fel de a spune „doar grupurile". `ALLOW_SELF_CHAT=false` (nou, implicit `true`) scoate chatul cu sine insusi din filtrul puntii. De ce: `SUPPORT_JID` e tot numarul propriu, deci escaladarile, reamintirile si raspunsurile suportului cadeau in acelasi chat cu intrebarile — Maria isi citea propriul canal de suport ca pe o discutie cu un client. Pus pe `false` in `~/.maria-bridge/env`, puntea repornita: raspunde acum doar in `120363409761730101@g.us` („Maria Test"). Se vede in `/status` (`allowSelfChat`) si in linia de conectare din log. Trimiterea catre suport nu e afectata — filtrul e doar pe mesajele primite. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
This commit is contained in:
@@ -28,6 +28,10 @@ const MEDIA_DIR = process.env.MARIA_BRIDGE_DIR
|
||||
: path.join(__dirname, 'media');
|
||||
const MAX_RECONNECT_ATTEMPTS = 5;
|
||||
const TEST_MODE_SELF_CHAT_ONLY = (process.env.TEST_MODE_SELF_CHAT_ONLY || 'true') !== 'false';
|
||||
// Self-chat-ul e comod la primele teste, dar acolo SUPPORT_JID e chiar propriul
|
||||
// numar: escaladarile si raspunsurile suportului ajung in acelasi chat cu
|
||||
// intrebarile clientului. Pe 'false' ramane doar ALLOWED_GROUP_JIDS.
|
||||
const ALLOW_SELF_CHAT = (process.env.ALLOW_SELF_CHAT || 'true') !== 'false';
|
||||
// Grupuri in care Maria are voie sa raspunda chiar si in modul self-chat. Testarea
|
||||
// intr-un grup dedicat scoate zgomotul din chatul „Eu" — dar numai grupurile de
|
||||
// aici trec, ca sa nu inceapa Maria sa vorbeasca in cele 197 de grupuri ale contului.
|
||||
@@ -192,7 +196,7 @@ async function startConnection() {
|
||||
// apare in credentiale dar nu si in remoteJid-ul mesajelor — il taiem.
|
||||
const rawLid = sock.user?.lid || sock.authState?.creds?.me?.lid || null;
|
||||
ownLid = rawLid ? `${rawLid.split(':')[0].split('@')[0]}@lid` : null;
|
||||
console.log(`[whatsapp] Connected as ${phoneNumber} (lid: ${ownLid || 'n/a'}, self-chat-only mode: ${TEST_MODE_SELF_CHAT_ONLY})`);
|
||||
console.log(`[whatsapp] Connected as ${phoneNumber} (lid: ${ownLid || 'n/a'}, self-chat-only mode: ${TEST_MODE_SELF_CHAT_ONLY}, self-chat: ${ALLOW_SELF_CHAT ? 'da' : 'oprit'}, grupuri: ${[...ALLOWED_GROUP_JIDS].join(', ') || '-'})`);
|
||||
}
|
||||
|
||||
if (connection === 'close') {
|
||||
@@ -237,6 +241,10 @@ async function startConnection() {
|
||||
// Mesajele aruncate se logheaza. Fara asta, un JID care nu se potriveste cu
|
||||
// ownJid (ex. formatul @lid) face bridge-ul sa taca fara nicio urma in log.
|
||||
const isAllowedGroup = isGroup && ALLOWED_GROUP_JIDS.has(msg.key.remoteJid);
|
||||
if (isSelfChat && !ALLOW_SELF_CHAT) {
|
||||
console.log(`[whatsapp] ignorat (self-chat oprit): remoteJid=${msg.key.remoteJid}`);
|
||||
continue;
|
||||
}
|
||||
if (TEST_MODE_SELF_CHAT_ONLY && !isSelfChat && !isAllowedGroup) {
|
||||
console.log(`[whatsapp] ignorat (nu e self-chat): remoteJid=${msg.key.remoteJid} ownJid=${ownJid} ownLid=${ownLid}`);
|
||||
continue;
|
||||
@@ -304,6 +312,7 @@ app.get('/status', (_req, res) => {
|
||||
connected,
|
||||
phone: phoneNumber,
|
||||
selfChatOnly: TEST_MODE_SELF_CHAT_ONLY,
|
||||
allowSelfChat: ALLOW_SELF_CHAT,
|
||||
allowedGroups: [...ALLOWED_GROUP_JIDS],
|
||||
lid: ownLid,
|
||||
qr: connected ? null : currentQR,
|
||||
|
||||
Reference in New Issue
Block a user