Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
76ae3e0f6b | ||
|
|
f37b6edaa6 | ||
|
|
7095f77f93 | ||
|
|
5853b778f2 | ||
|
|
6405725ce6 | ||
|
|
111d6141aa | ||
|
|
5560b3c8e6 | ||
|
|
d528d541ea | ||
|
|
ab6b51cc1f | ||
|
|
35aa4f2658 | ||
|
|
36db3c37e8 | ||
|
|
b0c9232153 | ||
|
|
0070fb9e5c | ||
|
|
aa33ac4b1d | ||
|
|
1c2bc5b395 | ||
|
|
f2fe18a4c5 | ||
|
|
87fdcbebf6 | ||
|
|
68a4f651ea | ||
|
|
243caa9626 | ||
|
|
863684b916 | ||
|
|
2d543f3728 | ||
|
|
47088cfbee | ||
|
|
66c75cbf79 | ||
|
|
b2c68d88ae | ||
|
|
675e998cba | ||
|
|
db1d20ae36 | ||
|
|
59b40dda4e |
No files matched your search
@@ -35,13 +35,13 @@ for-swagger:
|
||||
WHATSAPP_SWAGGER_CONFIG_ADVANCED=true . ${NVM_DIR}/nvm.sh && nvm exec yarn start
|
||||
|
||||
up-noweb:
|
||||
. ${NVM_DIR}/nvm.sh && nvm exec yarn up @adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-2025-07-04
|
||||
. ${NVM_DIR}/nvm.sh && nvm exec yarn up @adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-2025-09-21
|
||||
|
||||
up-noweb-libsignal:
|
||||
. ${NVM_DIR}/nvm.sh && nvm exec yarn up libsignal@github:devlikeapro/libsignal-node#fork-master
|
||||
|
||||
up-webjs:
|
||||
. ${NVM_DIR}/nvm.sh && nvm exec yarn up whatsapp-web.js@github:devlikeapro/whatsapp-web.js#fork-main-2025-06-09
|
||||
. ${NVM_DIR}/nvm.sh && nvm exec yarn up whatsapp-web.js@github:devlikeapro/whatsapp-web.js#fork-main-2025-09-10
|
||||
|
||||
start-proxy:
|
||||
docker run --rm -d --name squid-container -e TZ=UTC -p 3128:3128 ubuntu/squid:5.2-22.04_beta
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ services:
|
||||
# NOTE: Only if you're using PostgreSQL to save sessions
|
||||
# https://waha.devlike.pro/docs/how-to/storages/#media---postgresql
|
||||
# postgres:
|
||||
# image: postgres:17
|
||||
# image: postgres:17.6
|
||||
# restart: always
|
||||
# environment:
|
||||
# POSTGRES_USER: postgres
|
||||
|
||||
+2
-2
@@ -26,7 +26,7 @@
|
||||
"gows:proto": "yarn gows:proto:fetch && yarn gows:proto:build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-2025-07-04",
|
||||
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-2025-09-21",
|
||||
"@adiwajshing/keyed-db": "^0.2.4",
|
||||
"@aws-sdk/client-s3": "^3.633.0",
|
||||
"@aws-sdk/s3-request-presigner": "^3.633.0",
|
||||
@@ -101,7 +101,7 @@
|
||||
"sqlite3": "^5.1.7",
|
||||
"swagger-ui-express": "^4.1.4",
|
||||
"ulid": "^2.3.0",
|
||||
"whatsapp-web.js": "github:devlikeapro/whatsapp-web.js#fork-main-2025-06-09",
|
||||
"whatsapp-web.js": "github:devlikeapro/whatsapp-web.js#fork-main-2025-09-10",
|
||||
"write-file-atomic": "^6.0.0",
|
||||
"yaml": "^2.7.1"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { isJidGroup } from '@adiwajshing/baileys';
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { isLidUser } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import {
|
||||
Controller,
|
||||
Get,
|
||||
@@ -22,6 +21,7 @@ import {
|
||||
import { PaginationParams, SortOrder } from '@waha/structures/pagination.dto';
|
||||
|
||||
import { SessionManager } from '../core/abc/manager.abc';
|
||||
import { isLidUser } from '@waha/core/utils/jids';
|
||||
|
||||
@ApiSecurity('api_key')
|
||||
@Controller('api/:session/lids')
|
||||
|
||||
@@ -8,9 +8,11 @@ export function BullAuthMiddleware() {
|
||||
let password = process.env.WAHA_DASHBOARD_PASSWORD;
|
||||
if (process.env.WAHA_DASHBOARD_ENABLED) {
|
||||
const enabled = parseBool(process.env.WAHA_DASHBOARD_ENABLED);
|
||||
// Generate a random uuid4 username /password to prevent access
|
||||
username = 'admin';
|
||||
password = crypto.randomUUID();
|
||||
if (!enabled) {
|
||||
// Generate a random uuid4 username /password to prevent access
|
||||
username = 'admin';
|
||||
password = crypto.randomUUID();
|
||||
}
|
||||
}
|
||||
|
||||
return basicAuth({
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { isLidUser } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import { AttributeKey } from '@waha/apps/chatwoot/const';
|
||||
import { WhatsAppMessage } from '@waha/apps/chatwoot/storage';
|
||||
import { buildMessageId } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import { isLidUser } from '@waha/core/utils/jids';
|
||||
|
||||
export function GetJID(contact: any): string | null {
|
||||
return contact?.custom_attributes?.[AttributeKey.WA_JID];
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { isJidGroup, isJidStatusBroadcast } from '@adiwajshing/baileys';
|
||||
import { conversation_message_create } from '@figuro/chatwoot-sdk';
|
||||
import type { generic_id } from '@figuro/chatwoot-sdk/dist/models/generic_id';
|
||||
import type { message } from '@figuro/chatwoot-sdk/dist/models/message';
|
||||
@@ -22,7 +21,6 @@ import {
|
||||
WhatsAppMessage,
|
||||
} from '@waha/apps/chatwoot/storage';
|
||||
import { SessionManager } from '@waha/core/abc/manager.abc';
|
||||
import { toCusFormat } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import { parseMessageIdSerialized } from '@waha/core/utils/ids';
|
||||
import { RMutexService } from '@waha/modules/rmutex/rmutex.service';
|
||||
import { WAHAEvents } from '@waha/structures/enums.dto';
|
||||
@@ -36,7 +34,7 @@ import { Job } from 'bullmq';
|
||||
import { PinoLogger } from 'nestjs-pino';
|
||||
|
||||
import { TKey } from '@waha/apps/chatwoot/i18n/templates';
|
||||
import { isJidBroadcast } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import { isJidBroadcast, isJidGroup, toCusFormat } from '@waha/core/utils/jids';
|
||||
|
||||
export function ListenEventsForChatWoot() {
|
||||
return [
|
||||
@@ -152,7 +150,7 @@ export abstract class ChatWootWAHABaseConsumer extends AppConsumer {
|
||||
.ContactConversationService()
|
||||
.ConversationById(info.conversationId);
|
||||
} else {
|
||||
const conversation = await container
|
||||
conversation = await container
|
||||
.ContactConversationService()
|
||||
.InboxNotifications();
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { proto } from '@adiwajshing/baileys';
|
||||
import { Processor } from '@nestjs/bullmq';
|
||||
import { JOB_CONCURRENCY } from '@waha/apps/app_sdk/constants';
|
||||
import { SendAttachment } from '@waha/apps/chatwoot/client/types';
|
||||
@@ -21,7 +22,6 @@ import { Job } from 'bullmq';
|
||||
import { PinoLogger } from 'nestjs-pino';
|
||||
import { TKey } from '@waha/apps/chatwoot/i18n/templates';
|
||||
import { JobLink } from '@waha/apps/app_sdk/JobUtils';
|
||||
import { proto } from '@adiwajshing/baileys';
|
||||
import * as lodash from 'lodash';
|
||||
import { parseVCardV3, SimpleVCardInfo } from '@waha/core/vcard';
|
||||
|
||||
@@ -95,12 +95,15 @@ class MessageAnyHandler extends MessageBaseHandler<WAMessage> {
|
||||
_: proto.Message | null,
|
||||
): Promise<ChatWootMessagePartial | null> {
|
||||
const attachments = await this.getAttachments(payload);
|
||||
const content = this.l
|
||||
let content = this.l
|
||||
.key(TKey.WA_TO_CW_MESSAGE)
|
||||
.render({ payload: payload });
|
||||
if (isEmptyString(content) && attachments.length == 0) {
|
||||
return null;
|
||||
}
|
||||
if (isEmptyString(content)) {
|
||||
content = null;
|
||||
}
|
||||
return {
|
||||
content: WhatsappToMarkdown(content),
|
||||
attachments: attachments,
|
||||
|
||||
@@ -16,13 +16,13 @@ import {
|
||||
MessageMappingService,
|
||||
} from '@waha/apps/chatwoot/storage';
|
||||
import { SessionManager } from '@waha/core/abc/manager.abc';
|
||||
import { toCusFormat } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import { RMutexService } from '@waha/modules/rmutex/rmutex.service';
|
||||
import { WAHAEvents } from '@waha/structures/enums.dto';
|
||||
import { WAHAWebhookMessageRevoked } from '@waha/structures/webhooks.dto';
|
||||
import { Job } from 'bullmq';
|
||||
import { PinoLogger } from 'nestjs-pino';
|
||||
import { TKey } from '@waha/apps/chatwoot/i18n/templates';
|
||||
import { toCusFormat } from '@waha/core/utils/jids';
|
||||
|
||||
@Processor(QueueName.WAHA_MESSAGE_REVOKED, { concurrency: JOB_CONCURRENCY })
|
||||
export class WAHAMessageRevokedConsumer extends ChatWootWAHABaseConsumer {
|
||||
|
||||
@@ -20,6 +20,8 @@ import { WAHAWebhookSessionStatus } from '@waha/structures/webhooks.dto';
|
||||
import { Job } from 'bullmq';
|
||||
import { PinoLogger } from 'nestjs-pino';
|
||||
import { TKey } from '@waha/apps/chatwoot/i18n/templates';
|
||||
import { sleep } from '@nestjs/terminus/dist/utils';
|
||||
import { waitUntil } from '@waha/utils/promiseTimeout';
|
||||
|
||||
@Processor(QueueName.WAHA_SESSION_STATUS, { concurrency: JOB_CONCURRENCY })
|
||||
export class WAHASessionStatusConsumer extends ChatWootWAHABaseConsumer {
|
||||
@@ -49,6 +51,9 @@ export class WAHASessionStatusConsumer extends ChatWootWAHABaseConsumer {
|
||||
}
|
||||
}
|
||||
|
||||
const RECOVER_TIME_MS = 10_000;
|
||||
const CHECK_STATUS_INTERVAL_MS = 2_000;
|
||||
|
||||
export class SessionStatusHandler {
|
||||
constructor(
|
||||
private repo: ContactConversationService,
|
||||
@@ -57,22 +62,41 @@ export class SessionStatusHandler {
|
||||
) {}
|
||||
|
||||
async handle(data: WAHAWebhookSessionStatus) {
|
||||
const conversation = await this.repo.InboxNotifications();
|
||||
// Report session status
|
||||
const emoji = SessionStatusEmoji(data.payload.status);
|
||||
const activity = this.l.key(TKey.APP_SESSION_STATUS_CHANGE).r({
|
||||
emoji: emoji,
|
||||
session: data.session,
|
||||
status: data.payload.status,
|
||||
});
|
||||
await conversation.activity(activity);
|
||||
|
||||
const payload = data.payload;
|
||||
let text = '';
|
||||
const current = payload.statuses?.at(-1);
|
||||
const previous = payload.statuses?.at(-2);
|
||||
const older = payload.statuses?.at(-3);
|
||||
switch (payload.status) {
|
||||
case WAHASessionStatus.STARTING:
|
||||
// WORKING => STARTING [=> WORKING]
|
||||
if (previous?.status == WAHASessionStatus.WORKING) {
|
||||
// if previous is WORKING - wait, give time to recover
|
||||
const recovered = await waitUntil(
|
||||
async () => {
|
||||
const response = await this.waha.get(data.session);
|
||||
return response.status == WAHASessionStatus.WORKING;
|
||||
},
|
||||
CHECK_STATUS_INTERVAL_MS,
|
||||
RECOVER_TIME_MS,
|
||||
);
|
||||
if (recovered) {
|
||||
// Current status is WORKING, no needs for an alert
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WAHASessionStatus.WORKING:
|
||||
// WORKING => STARTING => WORKING
|
||||
if (
|
||||
previous?.status == WAHASessionStatus.STARTING &&
|
||||
older?.status == WAHASessionStatus.WORKING
|
||||
) {
|
||||
if (current?.timestamp - previous?.timestamp < RECOVER_TIME_MS) {
|
||||
// Session got recovered fast, no needs to notify about that
|
||||
return;
|
||||
}
|
||||
}
|
||||
text = this.l.key(TKey.APP_SESSION_STATUS_WORKING).r({
|
||||
name: data.me?.pushName || 'Unknown',
|
||||
id: data.me?.id || 'No phone number',
|
||||
@@ -88,6 +112,18 @@ export class SessionStatusHandler {
|
||||
case WAHASessionStatus.SCAN_QR_CODE:
|
||||
text = this.l.key(TKey.APP_SESSION_SCAN_QR_CODE).r();
|
||||
}
|
||||
//
|
||||
// Report Status Change if required
|
||||
//
|
||||
const conversation = await this.repo.InboxNotifications();
|
||||
const emoji = SessionStatusEmoji(data.payload.status);
|
||||
const activity = this.l.key(TKey.APP_SESSION_STATUS_CHANGE).r({
|
||||
emoji: emoji,
|
||||
session: data.session,
|
||||
status: data.payload.status,
|
||||
});
|
||||
await conversation.activity(activity);
|
||||
|
||||
if (text) {
|
||||
const message: conversation_message_create = {
|
||||
content: text,
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
import {
|
||||
isJidGroup,
|
||||
isJidNewsletter,
|
||||
isJidStatusBroadcast,
|
||||
} from '@adiwajshing/baileys';
|
||||
import {
|
||||
isJidBroadcast,
|
||||
isLidUser,
|
||||
} from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import {
|
||||
public_contact_create_update_payload,
|
||||
public_contact_create_update_payload as Contact,
|
||||
} from '@figuro/chatwoot-sdk';
|
||||
import { public_contact_create_update_payload as Contact } from '@figuro/chatwoot-sdk';
|
||||
import { ContactInfo } from '@waha/apps/chatwoot/client/ContactConversationService';
|
||||
import { AttributeKey } from '@waha/apps/chatwoot/const';
|
||||
import { Locale } from '@waha/apps/chatwoot/i18n/locale';
|
||||
@@ -18,6 +6,13 @@ import { WAHASessionAPI } from '@waha/apps/chatwoot/session/WAHASelf';
|
||||
import { Channel } from '@waha/structures/channels.dto';
|
||||
import { CacheAsync } from '@waha/utils/Cache';
|
||||
import { TKey } from '@waha/apps/chatwoot/i18n/templates';
|
||||
import {
|
||||
isJidBroadcast,
|
||||
isJidGroup,
|
||||
isJidNewsletter,
|
||||
isJidStatusBroadcast,
|
||||
isLidUser,
|
||||
} from '@waha/core/utils/jids';
|
||||
|
||||
/**
|
||||
* Base WhatsApp contact info class
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇦🇪 العربية (Arabic)'
|
||||
app.inbox.contact.name: 'تكامل واتساب (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 إعادة المحاولة في {{attempts.nextDelay}} ثانية...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **نجاح**
|
||||
المحاولة: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
التفاصيل: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: تعذر استلام رسالة من واتس
|
||||
whatsapp.message.removing.error: تعذر إزالة رسالة من واتساب
|
||||
job.scheduled.error.header: فشل تنفيذ المهمة المجدولة
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *أرسلت من واتساب*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *أرسلت عبر API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *تم حذف هذه الرسالة في واتساب*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *تم تعديلها في واتساب*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*تفاعل* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*تمت إزالة التفاعل*
|
||||
|
||||
whatsapp.contact.group.suffix: 'مجموعة'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'قائمة البث'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'الحالة'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **متصل: جلسة واتساب إلى صندوق وارد ChatWoot**
|
||||
|
||||
✅ تم توصيل جلسة واتساب **{{{name}}}** بنجاح بصندوق وارد ChatWoot هذا.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
لنبدأ! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **غير متصل: جلسة واتساب من صندوق وارد ChatWoot**
|
||||
|
||||
❌ تم قطع اتصال جلسة واتساب **{{{name}}}** من صندوق وارد ChatWoot هذا.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
لإعادة الاتصال، يرجى الاتصال بالمسؤول الخاص بك.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **تم التحديث: إعدادات جلسة واتساب**
|
||||
|
||||
✅ تم تحديث إعدادات جلسة واتساب **{{{name}}}**.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
يمكنك إدارة **تكامل واتساب** عن طريق إرسال أحد الأوامر التالية:
|
||||
|
||||
🖥️ **الجلسة**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **تم تعطيل أوامر الخادم**.
|
||||
|
||||
أرسل **help** للحصول على قائمة الأوامر المتاحة.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
أرسل **help** للحصول على قائمة الأوامر المتاحة.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} تم تغيير حالة جلسة "{{{session}}}" إلى {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} حالة جلسة **{{{session}}}** هي **{{{status}}}**
|
||||
**حساب واتساب:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ صندوق وارد ChatWoot هذا مرتبط بـ **حساب واتساب** وجاهز لإرسال واستقبال الرسائل!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **صندوق وارد ChatWoot هذا مرتبط بحساب واتساب ولكنه غير جاهز لإرسال واستقبال الرسائل!**
|
||||
|
||||
يرجى التحقق من حالة الجلسة ومحاولة إعادة تشغيلها أو تسجيل الخروج ومسح رمز QR مرة أخرى.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **امسح رمز QR على هاتفك لربط حساب واتساب بصندوق وارد ChatWoot هذا!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**الإصدار:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
يتم إعادة تشغيل الخادم بسلاسة...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
يتم إعادة تشغيل الخادم بالقوة...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ تم إلغاء تفويض الحساب بنجاح!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **إصدار جديد متاح!**
|
||||
|
||||
الإصدار الحالي: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 تحقق مما هو جديد في [**🆕 سجل التغييرات**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **ادعم WAHA!**
|
||||
|
||||
أنت تستخدم إصدار **WAHA Core** المجاني. إذا وجدت هذا المشروع مفيدًا، فيرجى التفكير في دعم تطويره.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 ادعمنا**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **جهات الاتصال المشتركة**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **الموقع المشترك**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **هذا النوع من الرسائل غير مدعوم في ChatWoot.**
|
||||
📱 يرجى فتح **WhatsApp** لعرضه.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇧🇩 বাংলা (Bengali)'
|
||||
app.inbox.contact.name: 'হোয়াটসঅ্যাপ ইন্টিগ্রেশন (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 {{attempts.nextDelay}} সেকেন্ডের মধ্যে পুনরায় চেষ্টা করা হচ্ছে...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **সফল হয়েছে**
|
||||
প্রচেষ্টা: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
বিবরণ: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: হোয়াটসঅ্যাপ থেক
|
||||
whatsapp.message.removing.error: হোয়াটসঅ্যাপ থেকে বার্তা সরাতে পারেনি
|
||||
job.scheduled.error.header: নির্ধারিত কাজ সম্পাদন করতে ব্যর্থ হয়েছে
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *হোয়াটসঅ্যাপ থেকে পাঠানো হয়েছে*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *API এর মাধ্যমে পাঠানো হয়েছে*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *এই বার্তাটি হোয়াটসঅ্যাপে মুছে ফেলা হয়েছে*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *হোয়াটসঅ্যাপে সম্পাদিত*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*প্রতিক্রিয়া দিয়েছেন* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*প্রতিক্রিয়া সরানো হয়েছে*
|
||||
|
||||
whatsapp.contact.group.suffix: 'গ্রুপ'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'প্রচার তালিকা'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'স্ট্যাটাস'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **সংযুক্ত: হোয়াটসঅ্যাপ সেশন থেকে ChatWoot ইনবক্স**
|
||||
|
||||
✅ হোয়াটসঅ্যাপ সেশন **{{{name}}}** সফলভাবে এই ChatWoot ইনবক্সের সাথে সংযুক্ত করা হয়েছে।
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
চলুন শুরু করা যাক! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **সংযোগ বিচ্ছিন্ন: হোয়াটসঅ্যাপ সেশন থেকে ChatWoot ইনবক্স**
|
||||
|
||||
❌ হোয়াটসঅ্যাপ সেশন **{{{name}}}** এই ChatWoot ইনবক্স থেকে সংযোগ বিচ্ছিন্ন করা হয়েছে।
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
পুনরায় সংযোগ করতে, অনুগ্রহ করে আপনার প্রশাসকের সাথে যোগাযোগ করুন।
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **আপডেট করা হয়েছে: হোয়াটসঅ্যাপ সেশন সেটিংস**
|
||||
|
||||
✅ হোয়াটসঅ্যাপ সেশন **{{{name}}}** এর সেটিংস আপডেট করা হয়েছে।
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
আপনি নিম্নলিখিত কমান্ডগুলির একটি পাঠিয়ে **হোয়াটসঅ্যাপ ইন্টিগ্রেশন** পরিচালনা করতে পারেন:
|
||||
|
||||
🖥️ **সেশন**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **সার্ভার কমান্ড ন
|
||||
|
||||
উপলব্ধ কমান্ডের তালিকা পেতে **help** পাঠান।
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
উপলব্ধ কমান্ডগুলির তালিকা পেতে **help** পাঠান।
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} "{{{session}}}" সেশন {{{status}}} স্ট্যাটাসে পরিবর্তিত হয়েছে
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** সেশনের স্ট্যাটাস **{{{status}}}**
|
||||
**হোয়াটসঅ্যাপ অ্যাকাউন্ট:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ এই ChatWoot ইনবক্স **হোয়াটসঅ্যাপ অ্যাকাউন্টের** সাথে সংযুক্ত এবং বার্তা পাঠাতে ও গ্রহণ করতে প্রস্তুত!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **এই ChatWoot ইনবক্স হোয়াটসঅ্যাপ অ্যাকাউন্টের সাথে সংযুক্ত কিন্তু বার্তা পাঠাতে ও গ্রহণ করতে প্রস্তুত নয়!**
|
||||
|
||||
অনুগ্রহ করে সেশনের স্ট্যাটাস পরীক্ষা করুন এবং এটি পুনরায় চালু করার চেষ্টা করুন অথবা লগআউট করুন এবং QR কোড আবার স্ক্যান করুন।
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **এই ChatWoot ইনবক্সের সাথে হোয়াটসঅ্যাপ অ্যাকাউন্ট লিঙ্ক করতে আপনার ফোনে QR কোড স্ক্যান করুন!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**সংস্করণ:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
সার্ভার সুন্দরভাবে পুনরায় চালু হচ্ছে...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
সার্ভার জোর করে পুনরায় চালু হচ্ছে...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ অ্যাকাউন্ট সফলভাবে অননুমোদিত করা হয়েছে!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **নতুন সংস্করণ উপলব্ধ!**
|
||||
|
||||
বর্তমান সংস্করণ: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 [**🆕 পরিবর্তন লগ**]({{{changelogUrl}}}) এ নতুন কি আছে তা দেখুন
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **WAHA সমর্থন করুন!**
|
||||
|
||||
আপনি বিনামূল্যের **WAHA Core** সংস্করণ ব্যবহার করছেন। যদি আপনি এই প্রকল্পটি উপযোগী মনে করেন, তবে এর বিকাশকে সমর্থন করার কথা বিবেচনা করুন।
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 আমাদের সমর্থন করুন**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **শেয়ার করা যোগাযোগ**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **শেয়ার করা লোকেশন**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **এই ধরনের বার্তা ChatWoot-এ সমর্থিত নয়।**
|
||||
📱 এটি দেখতে অনুগ্রহ করে **WhatsApp** খুলুন।
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇩🇪 Deutsch (German)'
|
||||
app.inbox.contact.name: 'WhatsApp Integration (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Wiederholung in {{attempts.nextDelay}} Sekunden...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Erfolgreich**
|
||||
Versuch: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Details: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -33,33 +33,33 @@ whatsapp.message.removing.error:
|
||||
Nachricht konnte nicht von WhatsApp entfernt werden
|
||||
job.scheduled.error.header: Geplante Aufgabe konnte nicht ausgeführt werden
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Von WhatsApp gesendet*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Über API gesendet*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Diese Nachricht wurde in WhatsApp gelöscht*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *In WhatsApp bearbeitet*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Reagiert mit* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Reaktion entfernt*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Gruppe'
|
||||
@@ -68,7 +68,7 @@ whatsapp.contact.broadcast.suffix: 'Broadcast-Liste'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **VERBUNDEN: WhatsApp-Sitzung mit ChatWoot Inbox**
|
||||
|
||||
✅ WhatsApp-Sitzung **{{{name}}}** wurde erfolgreich mit dieser ChatWoot Inbox verbunden.
|
||||
@@ -86,7 +86,7 @@ app.connected.message: |
|
||||
|
||||
Lassen Sie uns beginnen! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **GETRENNT: WhatsApp-Sitzung von ChatWoot Inbox**
|
||||
|
||||
❌ WhatsApp-Sitzung **{{{name}}}** wurde von dieser ChatWoot Inbox getrennt.
|
||||
@@ -95,12 +95,12 @@ app.disconnected.message: |
|
||||
|
||||
Um eine erneute Verbindung herzustellen, wenden Sie sich bitte an Ihren Administrator.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **AKTUALISIERT: WhatsApp-Sitzungseinstellungen**
|
||||
|
||||
✅ Einstellungen für WhatsApp-Sitzung **{{{name}}}** wurden aktualisiert.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Sie können die **WhatsApp Integration** verwalten, indem Sie einen der folgenden Befehle senden:
|
||||
|
||||
🖥️ **Sitzung**:
|
||||
@@ -128,32 +128,32 @@ app.commands.server.disabled: ⛔ **Serverbefehle sind deaktiviert**.
|
||||
|
||||
Senden Sie **help**, um die Liste der verfügbaren Befehle zu erhalten.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Senden Sie **help**, um die Liste der verfügbaren Befehle zu erhalten.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} Sitzung "{{{session}}}" hat den Status zu {{{status}}} gewechselt
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** Sitzungsstatus ist **{{{status}}}**
|
||||
**WhatsApp-Konto:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ Diese ChatWoot Inbox ist mit dem **WhatsApp-Konto** verknüpft und bereit zum Senden und Empfangen von Nachrichten!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **Diese ChatWoot Inbox ist mit dem WhatsApp-Konto verknüpft, aber NICHT bereit zum Senden und Empfangen von Nachrichten!**
|
||||
|
||||
Bitte überprüfen Sie den Sitzungsstatus und versuchen Sie, sie neu zu starten oder melden Sie sich ab und scannen Sie den QR-Code erneut.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **Scannen Sie den QR-Code auf Ihrem Telefon, um das WhatsApp-Konto mit dieser ChatWoot Inbox zu verknüpfen!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Version:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -164,16 +164,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
Server wird ordnungsgemäß neu gestartet...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
Server wird erzwungen neu gestartet...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Konto erfolgreich abgemeldet!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **Neue Version verfügbar!**
|
||||
|
||||
Aktuelle Version: **{{{currentVersion}}}**
|
||||
@@ -181,7 +181,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Sehen Sie, was neu ist im [**🆕 Änderungsprotokoll**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **Unterstützen Sie WAHA!**
|
||||
|
||||
Sie verwenden die kostenlose **WAHA Core** Version. Wenn Sie dieses Projekt nützlich finden, erwägen Sie bitte, seine Entwicklung zu unterstützen.
|
||||
@@ -190,20 +190,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Unterstützen Sie uns**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Geteilte Kontakte**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -214,7 +214,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Geteilter Standort**
|
||||
@@ -232,7 +232,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Dieser Nachrichtentyp wird in ChatWoot nicht unterstützt.**
|
||||
📱 Bitte öffne **WhatsApp**, um ihn anzusehen.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ locale.name: '🇺🇸 English (English)'
|
||||
app.inbox.contact.name: 'WhatsApp Integration (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Retrying in {{attempts.nextDelay}} seconds...
|
||||
@@ -21,7 +21,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Succeeded**
|
||||
Attempt: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Details: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -31,33 +31,33 @@ whatsapp.message.receiving.error: Couldn't receive a message from WhatsApp
|
||||
whatsapp.message.removing.error: Couldn't remove a message from WhatsApp
|
||||
job.scheduled.error.header: Scheduled job failed to execute
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Sent from WhatsApp*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Sent via API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *This message was deleted in WhatsApp*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *Edited in WhatsApp*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Reacted* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Reaction removed*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Group'
|
||||
@@ -66,20 +66,20 @@ whatsapp.contact.broadcast.suffix: 'Broadcast List'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Shared Contact(s)**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -90,7 +90,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Shared Location**
|
||||
@@ -108,13 +108,13 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **This message type is not supported in ChatWoot.**
|
||||
📱 Please open **WhatsApp** to view it.
|
||||
|
||||
Details: [{{{details.text}}}]({{{details.url}}})
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **CONNECTED: WhatsApp Session to ChatWoot Inbox**
|
||||
|
||||
✅ WhatsApp session **{{{name}}}** has been successfully connected to this ChatWoot Inbox.
|
||||
@@ -132,7 +132,7 @@ app.connected.message: |
|
||||
|
||||
Let's get started! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **DISCONNECTED: WhatsApp Session from ChatWoot Inbox**
|
||||
|
||||
❌ WhatsApp session **{{{name}}}** has been disconnected from this ChatWoot Inbox.
|
||||
@@ -141,12 +141,12 @@ app.disconnected.message: |
|
||||
|
||||
To reconnect, please contact your administrator.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **UPDATED: WhatsApp Session Settings**
|
||||
|
||||
✅ Settings for WhatsApp session **{{{name}}}** have been updated.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
You can manage **WhatsApp Integration** by sending one of the following commands:
|
||||
|
||||
🖥️ **Session**:
|
||||
@@ -174,32 +174,32 @@ app.commands.server.disabled: ⛔ **Server commands are disabled**.
|
||||
|
||||
Send **help** to get the list of available commands.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Send **help** to get the list of available commands.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} "{{{session}}}" session switched to {{{status}}} status
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** session status is in **{{{status}}}**
|
||||
**WhatsApp Account:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ This ChatWoot Inbox is linked to **WhatsApp Account** and ready to send and receive messages!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **This ChatWoot Inbox is linked to WhatsApp Account but NOT ready to send and receive messages!**
|
||||
|
||||
Please check the session status and try restarting it or logout and scan the QR code again.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **Scan the QR code on your phone to link WhatsApp Account with this ChatWoot Inbox!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Version:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -210,16 +210,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
Server is rebooting gracefully...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
Server is force rebooting...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Account unauthorized successfully!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **New Version Available!**
|
||||
|
||||
Current version: **{{{currentVersion}}}**
|
||||
@@ -227,7 +227,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Check out what's new in the [**🆕 Changelog**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **Support WAHA!**
|
||||
|
||||
You're using the free **WAHA Core** version. If you find this project useful, please consider supporting its development.
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇪🇸 Español (Spanish)'
|
||||
app.inbox.contact.name: 'Integración de WhatsApp (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Reintentando en {{attempts.nextDelay}} segundos...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Éxito**
|
||||
Intento: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Detalles: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: No se pudo recibir un mensaje de WhatsApp
|
||||
whatsapp.message.removing.error: No se pudo eliminar un mensaje de WhatsApp
|
||||
job.scheduled.error.header: La tarea programada no se pudo ejecutar
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Enviado desde WhatsApp*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Enviado a través de API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Este mensaje fue eliminado en WhatsApp*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *Editado en WhatsApp*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Reaccionó con* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Reacción eliminada*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grupo'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'Lista de difusión'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Estado'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **CONECTADO: Sesión de WhatsApp a Bandeja de Entrada de ChatWoot**
|
||||
|
||||
✅ La sesión de WhatsApp **{{{name}}}** ha sido conectada exitosamente a esta Bandeja de Entrada de ChatWoot.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
¡Comencemos! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **DESCONECTADO: Sesión de WhatsApp de Bandeja de Entrada de ChatWoot**
|
||||
|
||||
❌ La sesión de WhatsApp **{{{name}}}** ha sido desconectada de esta Bandeja de Entrada de ChatWoot.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
Para reconectar, por favor contacta a tu administrador.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **ACTUALIZADO: Configuración de Sesión de WhatsApp**
|
||||
|
||||
✅ La configuración para la sesión de WhatsApp **{{{name}}}** ha sido actualizada.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Puedes gestionar la **Integración de WhatsApp** enviando uno de los siguientes comandos:
|
||||
|
||||
🖥️ **Sesión**:
|
||||
@@ -128,32 +128,32 @@ app.commands.server.disabled: ⛔ **Los comandos del servidor están
|
||||
|
||||
Envía **help** para obtener la lista de comandos disponibles.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Envía **help** para obtener la lista de comandos disponibles.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} La sesión "{{{session}}}" cambió al estado {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} El estado de la sesión **{{{session}}}** es **{{{status}}}**
|
||||
**Cuenta de WhatsApp:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ ¡Esta Bandeja de Entrada de ChatWoot está vinculada a la **Cuenta de WhatsApp** y lista para enviar y recibir mensajes!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **¡Esta Bandeja de Entrada de ChatWoot está vinculada a la Cuenta de WhatsApp pero NO está lista para enviar y recibir mensajes!**
|
||||
|
||||
Por favor, comprueba el estado de la sesión e intenta reiniciarla o cierra sesión y escanea el código QR de nuevo.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **¡Escanea el código QR en tu teléfono para vincular la Cuenta de WhatsApp con esta Bandeja de Entrada de ChatWoot!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Versión:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -164,16 +164,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
El servidor se está reiniciando de forma segura...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
El servidor se está reiniciando forzadamente...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ ¡Cuenta desautorizada con éxito!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **¡Nueva Versión Disponible!**
|
||||
|
||||
Versión actual: **{{{currentVersion}}}**
|
||||
@@ -181,7 +181,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Mira qué hay de nuevo en el [**🆕 Registro de Cambios**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **¡Apoya a WAHA!**
|
||||
|
||||
Estás usando la versión gratuita **WAHA Core**. Si encuentras útil este proyecto, por favor considera apoyar su desarrollo.
|
||||
@@ -190,20 +190,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Apóyanos**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Contacto(s) compartido(s)**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -214,7 +214,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Ubicación compartida**
|
||||
@@ -232,7 +232,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Este tipo de mensaje no es compatible con ChatWoot.**
|
||||
📱 Por favor, abre **WhatsApp** para verlo.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇮🇷 فارسی (Persian)'
|
||||
app.inbox.contact.name: 'ادغام واتساپ (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 تلاش مجدد در {{attempts.nextDelay}} ثانیه...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **موفقیتآمیز**
|
||||
تلاش: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
جزئیات: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: دریافت پیام از واتساپ امک
|
||||
whatsapp.message.removing.error: حذف پیام از واتساپ امکانپذیر نبود
|
||||
job.scheduled.error.header: اجرای کار زمانبندی شده ناموفق بود
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *ارسال شده از واتساپ*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *ارسال شده از طریق API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *این پیام در واتساپ حذف شده است*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *ویرایش شده در واتساپ*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*واکنش* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*واکنش حذف شد*
|
||||
|
||||
whatsapp.contact.group.suffix: 'گروه'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'فهرست انتشار'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'وضعیت'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **متصل: جلسه واتساپ به صندوق ورودی ChatWoot**
|
||||
|
||||
✅ جلسه واتساپ **{{{name}}}** با موفقیت به این صندوق ورودی ChatWoot متصل شده است.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
بیایید شروع کنیم! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **قطع اتصال: جلسه واتساپ از صندوق ورودی ChatWoot**
|
||||
|
||||
❌ جلسه واتساپ **{{{name}}}** از این صندوق ورودی ChatWoot قطع شده است.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
برای اتصال مجدد، لطفاً با مدیر خود تماس بگیرید.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **بهروزرسانی: تنظیمات جلسه واتساپ**
|
||||
|
||||
✅ تنظیمات جلسه واتساپ **{{{name}}}** بهروزرسانی شده است.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
شما میتوانید **ادغام واتساپ** را با ارسال یکی از دستورات زیر مدیریت کنید:
|
||||
|
||||
🖥️ **جلسه**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **دستورات سرور غیرفعال اس
|
||||
|
||||
برای دریافت فهرست دستورات، **help** را ارسال کنید.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
برای دریافت لیست دستورات موجود، **help** را ارسال کنید.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} جلسه "{{{session}}}" به وضعیت {{{status}}} تغییر کرد
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} وضعیت جلسه **{{{session}}}** در **{{{status}}}** است
|
||||
**حساب واتساپ:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ این صندوق ورودی ChatWoot به **حساب واتساپ** متصل است و آماده ارسال و دریافت پیام است!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **این صندوق ورودی ChatWoot به حساب واتساپ متصل است اما آماده ارسال و دریافت پیام نیست!**
|
||||
|
||||
لطفاً وضعیت جلسه را بررسی کنید و سعی کنید آن را مجدداً راهاندازی کنید یا خارج شوید و کد QR را دوباره اسکن کنید.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **کد QR را در تلفن خود اسکن کنید تا حساب واتساپ را با این صندوق ورودی ChatWoot پیوند دهید!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**نسخه:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
سرور در حال راهاندازی مجدد نرم است...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
سرور در حال راهاندازی مجدد اجباری است...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ حساب با موفقیت غیرمجاز شد!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **نسخه جدید در دسترس است!**
|
||||
|
||||
نسخه فعلی: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 موارد جدید را در [**🆕 تغییرات**]({{{changelogUrl}}}) مشاهده کنید
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **از WAHA پشتیبانی کنید!**
|
||||
|
||||
شما از نسخه رایگان **WAHA Core** استفاده میکنید. اگر این پروژه را مفید میدانید، لطفاً حمایت از توسعه آن را در نظر بگیرید.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 از ما حمایت کنید**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **مخاطب(ها)ی بهاشتراکگذاشتهشده**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **موقعیت مکانی بهاشتراکگذاشتهشده**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **این نوع پیام در ChatWoot پشتیبانی نمیشود.**
|
||||
📱 لطفاً برای مشاهده آن **WhatsApp** را باز کنید.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇫🇷 Français (French)'
|
||||
app.inbox.contact.name: 'Intégration WhatsApp (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Nouvelle tentative dans {{attempts.nextDelay}} secondes...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Réussi**
|
||||
Tentative : {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Détails : [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: Impossible de recevoir un message de WhatsApp
|
||||
whatsapp.message.removing.error: Impossible de supprimer un message de WhatsApp
|
||||
job.scheduled.error.header: La tâche planifiée n'a pas pu être exécutée
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Envoyé depuis WhatsApp*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Envoyé via API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Ce message a été supprimé dans WhatsApp*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *Modifié dans WhatsApp*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*A réagi avec* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Réaction supprimée*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Groupe'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'Liste de diffusion'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Statut'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **CONNECTÉ : Session WhatsApp à la Boîte de Réception ChatWoot**
|
||||
|
||||
✅ La session WhatsApp **{{{name}}}** a été connectée avec succès à cette Boîte de Réception ChatWoot.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
Commençons ! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **DÉCONNECTÉ : Session WhatsApp de la Boîte de Réception ChatWoot**
|
||||
|
||||
❌ La session WhatsApp **{{{name}}}** a été déconnectée de cette Boîte de Réception ChatWoot.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
Pour vous reconnecter, veuillez contacter votre administrateur.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **MIS À JOUR : Paramètres de Session WhatsApp**
|
||||
|
||||
✅ Les paramètres de la session WhatsApp **{{{name}}}** ont été mis à jour.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Vous pouvez gérer l'**Intégration WhatsApp** en envoyant l'une des commandes suivantes :
|
||||
|
||||
🖥️ **Session** :
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **Les commandes serveur sont désactivées**.
|
||||
|
||||
Envoyez **help** pour obtenir la liste des commandes disponibles.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Envoyez **help** pour obtenir la liste des commandes disponibles.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} La session "{{{session}}}" est passée au statut {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} Le statut de la session **{{{session}}}** est **{{{status}}}**
|
||||
**Compte WhatsApp :**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ Cette Boîte de Réception ChatWoot est liée au **Compte WhatsApp** et prête à envoyer et recevoir des messages !
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **Cette Boîte de Réception ChatWoot est liée au Compte WhatsApp mais N'EST PAS prête à envoyer et recevoir des messages !**
|
||||
|
||||
Veuillez vérifier l'état de la session et essayer de la redémarrer ou déconnectez-vous et scannez à nouveau le code QR.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **Scannez le code QR sur votre téléphone pour lier le Compte WhatsApp à cette Boîte de Réception ChatWoot !**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Version :**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
Le serveur redémarre en douceur...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
Le serveur redémarre de force...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Compte déconnecté avec succès !
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **Nouvelle Version Disponible !**
|
||||
|
||||
Version actuelle : **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Découvrez les nouveautés dans le [**🆕 Journal des modifications**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **Soutenez WAHA !**
|
||||
|
||||
Vous utilisez la version gratuite **WAHA Core**. Si vous trouvez ce projet utile, veuillez envisager de soutenir son développement.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Soutenez-nous**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Contact(s) partagé(s)**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Position partagée**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Ce type de message n’est pas pris en charge dans ChatWoot.**
|
||||
📱 Veuillez ouvrir **WhatsApp** pour l’afficher.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇮🇱 עברית (Hebrew)'
|
||||
app.inbox.contact.name: 'אינטגרציית וואטסאפ (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 מנסה שוב בעוד {{attempts.nextDelay}} שניות...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **הצליח**
|
||||
ניסיון: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
פרטים: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: לא ניתן לקבל הודעה מוואטס
|
||||
whatsapp.message.removing.error: לא ניתן להסיר הודעה מוואטסאפ
|
||||
job.scheduled.error.header: המשימה המתוזמנת נכשלה בביצוע
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *נשלח מוואטסאפ*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *נשלח דרך API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *הודעה זו נמחקה בוואטסאפ*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *נערך בוואטסאפ*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*הגיב* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*התגובה הוסרה*
|
||||
|
||||
whatsapp.contact.group.suffix: 'קבוצה'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'רשימת שידור'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'סטטוס'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **מחובר: הפעלת וואטסאפ לתיבת הדואר הנכנס של ChatWoot**
|
||||
|
||||
✅ הפעלת וואטסאפ **{{{name}}}** חוברה בהצלחה לתיבת הדואר הנכנס של ChatWoot.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
בוא נתחיל! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **מנותק: הפעלת וואטסאפ מתיבת הדואר הנכנס של ChatWoot**
|
||||
|
||||
❌ הפעלת וואטסאפ **{{{name}}}** נותקה מתיבת הדואר הנכנס של ChatWoot.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
כדי להתחבר מחדש, אנא פנה למנהל המערכת שלך.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **עודכן: הגדרות הפעלת וואטסאפ**
|
||||
|
||||
✅ ההגדרות עבור הפעלת וואטסאפ **{{{name}}}** עודכנו.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
אתה יכול לנהל **אינטגרציית וואטסאפ** על ידי שליחת אחת מהפקודות הבאות:
|
||||
|
||||
🖥️ **הפעלה**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **פקודות השרת מושבתות**.
|
||||
|
||||
שלחו **help** כדי לקבל את רשימת הפקודות הזמינות.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
שלח **help** כדי לקבל את רשימת הפקודות הזמינות.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} הפעלה "{{{session}}}" עברה לסטטוס {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} סטטוס ההפעלה **{{{session}}}** הוא **{{{status}}}**
|
||||
**חשבון וואטסאפ:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ תיבת הדואר הנכנס של ChatWoot מקושרת ל**חשבון וואטסאפ** ומוכנה לשלוח ולקבל הודעות!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **תיבת הדואר הנכנס של ChatWoot מקושרת לחשבון וואטסאפ אך אינה מוכנה לשלוח ולקבל הודעות!**
|
||||
|
||||
אנא בדוק את סטטוס ההפעלה ונסה להפעיל אותה מחדש או התנתק וסרוק את קוד ה-QR שוב.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **סרוק את קוד ה-QR בטלפון שלך כדי לקשר את חשבון הוואטסאפ לתיבת הדואר הנכנס של ChatWoot!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**גרסה:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
השרת מופעל מחדש בצורה חלקה...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
השרת מופעל מחדש בכוח...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ החשבון בוטל בהצלחה!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **גרסה חדשה זמינה!**
|
||||
|
||||
גרסה נוכחית: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 בדוק מה חדש ב[**🆕 יומן שינויים**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **תמוך ב-WAHA!**
|
||||
|
||||
אתה משתמש בגרסת **WAHA Core** החינמית. אם אתה מוצא פרויקט זה שימושי, אנא שקול לתמוך בפיתוח שלו.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 תמוך בנו**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **אנשי קשר משותפים**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **מיקום משותף**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **סוג הודעה זה אינו נתמך ב-ChatWoot.**
|
||||
📱 אנא פתח/י את **WhatsApp** כדי לצפות בזה.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇮🇳 हिंदी (Hindi)'
|
||||
app.inbox.contact.name: 'व्हाट्सएप इंटीग्रेशन (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 {{attempts.nextDelay}} सेकंड में पुनः प्रयास कर रहा है...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **सफल**
|
||||
प्रयास: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
विवरण: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: व्हाट्सएप से संद
|
||||
whatsapp.message.removing.error: व्हाट्सएप से संदेश हटा नहीं सका
|
||||
job.scheduled.error.header: निर्धारित कार्य निष्पादित करने में विफल रहा
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *व्हाट्सएप से भेजा गया*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *API के माध्यम से भेजा गया*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *यह संदेश व्हाट्सएप में हटा दिया गया था*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *व्हाट्सएप में संपादित*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*प्रतिक्रिया दी* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*प्रतिक्रिया हटा दी गई*
|
||||
|
||||
whatsapp.contact.group.suffix: 'समूह'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'प्रसारण सूची'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'स्थिति'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **कनेक्टेड: व्हाट्सएप सत्र से ChatWoot इनबॉक्स**
|
||||
|
||||
✅ व्हाट्सएप सत्र **{{{name}}}** सफलतापूर्वक इस ChatWoot इनबॉक्स से जुड़ गया है।
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
चलिए शुरू करते हैं! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **डिस्कनेक्टेड: व्हाट्सएप सत्र से ChatWoot इनबॉक्स**
|
||||
|
||||
❌ व्हाट्सएप सत्र **{{{name}}}** इस ChatWoot इनबॉक्स से डिस्कनेक्ट हो गया है।
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
फिर से कनेक्ट करने के लिए, कृपया अपने प्रशासक से संपर्क करें।
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **अपडेटेड: व्हाट्सएप सत्र सेटिंग्स**
|
||||
|
||||
✅ व्हाट्सएप सत्र **{{{name}}}** की सेटिंग्स अपडेट की गई हैं।
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
आप निम्न कमांड में से एक भेजकर **व्हाट्सएप इंटीग्रेशन** का प्रबंधन कर सकते हैं:
|
||||
|
||||
🖥️ **सेशन**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **सर्वर कमांड अक्ष
|
||||
|
||||
उपलब्ध कमांड की सूची पाने के लिए **help** भेजें।
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
उपलब्ध कमांड की सूची प्राप्त करने के लिए **help** भेजें।
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} "{{{session}}}" सत्र {{{status}}} स्थिति में बदल गया
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** सत्र की स्थिति **{{{status}}}** में है
|
||||
**व्हाट्सएप खाता:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ यह ChatWoot इनबॉक्स **व्हाट्सएप खाते** से जुड़ा हुआ है और संदेश भेजने और प्राप्त करने के लिए तैयार है!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **यह ChatWoot इनबॉक्स व्हाट्सएप खाते से जुड़ा हुआ है लेकिन संदेश भेजने और प्राप्त करने के लिए तैयार नहीं है!**
|
||||
|
||||
कृपया सत्र की स्थिति जांचें और इसे पुनरारंभ करने का प्रयास करें या लॉग आउट करें और QR कोड फिर से स्कैन करें।
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **इस ChatWoot इनबॉक्स के साथ व्हाट्सएप खाता जोड़ने के लिए अपने फोन पर QR कोड स्कैन करें!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**संस्करण:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
सर्वर सुचारू रूप से पुनरारंभ हो रहा है...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
सर्वर जबरदस्ती पुनरारंभ हो रहा है...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ खाता सफलतापूर्वक अनधिकृत किया गया!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **नया संस्करण उपलब्ध!**
|
||||
|
||||
वर्तमान संस्करण: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 [**🆕 चेंजलॉग**]({{{changelogUrl}}}) में क्या नया है देखें
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **WAHA का समर्थन करें!**
|
||||
|
||||
आप मुफ्त **WAHA Core** संस्करण का उपयोग कर रहे हैं। यदि आपको यह प्रोजेक्ट उपयोगी लगता है, तो कृपया इसके विकास का समर्थन करने पर विचार करें।
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 हमें समर्थन दें**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **साझा संपर्क**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **साझा स्थान**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **इस प्रकार का संदेश ChatWoot में समर्थित नहीं है।**
|
||||
📱 इसे देखने के लिए कृपया **WhatsApp** खोलें।
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇮🇩 Bahasa Indonesia (Indonesian)'
|
||||
app.inbox.contact.name: 'Integrasi WhatsApp (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Mencoba lagi dalam {{attempts.nextDelay}} detik...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Berhasil**
|
||||
Percobaan: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Detail: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: Tidak dapat menerima pesan dari WhatsApp
|
||||
whatsapp.message.removing.error: Tidak dapat menghapus pesan dari WhatsApp
|
||||
job.scheduled.error.header: Tugas terjadwal gagal dijalankan
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Dikirim dari WhatsApp*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Dikirim melalui API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Pesan ini telah dihapus di WhatsApp*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *Diedit di WhatsApp*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Bereaksi* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Reaksi dihapus*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grup'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'Daftar Siaran'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **TERHUBUNG: Sesi WhatsApp ke Kotak Masuk ChatWoot**
|
||||
|
||||
✅ Sesi WhatsApp **{{{name}}}** telah berhasil terhubung ke Kotak Masuk ChatWoot ini.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
Mari kita mulai! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **TERPUTUS: Sesi WhatsApp dari Kotak Masuk ChatWoot**
|
||||
|
||||
❌ Sesi WhatsApp **{{{name}}}** telah terputus dari Kotak Masuk ChatWoot ini.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
Untuk menghubungkan kembali, silakan hubungi administrator Anda.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **DIPERBARUI: Pengaturan Sesi WhatsApp**
|
||||
|
||||
✅ Pengaturan untuk sesi WhatsApp **{{{name}}}** telah diperbarui.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Anda dapat mengelola **Integrasi WhatsApp** dengan mengirimkan salah satu perintah berikut:
|
||||
|
||||
🖥️ **Sesi**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **Perintah server dinonaktifkan**.
|
||||
|
||||
Kirim **help** untuk melihat daftar perintah yang tersedia.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Kirim **help** untuk mendapatkan daftar perintah yang tersedia.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} Sesi "{{{session}}}" beralih ke status {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} Status sesi **{{{session}}}** adalah **{{{status}}}**
|
||||
**Akun WhatsApp:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ Kotak Masuk ChatWoot ini terhubung ke **Akun WhatsApp** dan siap untuk mengirim dan menerima pesan!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **Kotak Masuk ChatWoot ini terhubung ke Akun WhatsApp tetapi TIDAK siap untuk mengirim dan menerima pesan!**
|
||||
|
||||
Silakan periksa status sesi dan coba mulai ulang atau keluar dan pindai kode QR lagi.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **Pindai kode QR di ponsel Anda untuk menghubungkan Akun WhatsApp dengan Kotak Masuk ChatWoot ini!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Versi:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
Server sedang dimulai ulang dengan anggun...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
Server sedang dipaksa untuk dimulai ulang...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Akun berhasil tidak diotorisasi!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **Versi Baru Tersedia!**
|
||||
|
||||
Versi saat ini: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Lihat apa yang baru di [**🆕 Changelog**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **Dukung WAHA!**
|
||||
|
||||
Anda menggunakan versi **WAHA Core** gratis. Jika Anda merasa proyek ini bermanfaat, harap pertimbangkan untuk mendukung pengembangannya.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Dukung Kami**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Kontak yang dibagikan**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Lokasi yang dibagikan**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Jenis pesan ini tidak didukung di ChatWoot.**
|
||||
📱 Silakan buka **WhatsApp** untuk melihatnya.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇵🇰 ਪੰਜਾਬੀ (Punjabi)'
|
||||
app.inbox.contact.name: 'ਵਟਸਐਪ ਇੰਟੀਗ੍ਰੇਸ਼ਨ (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 {{attempts.nextDelay}} ਸਕਿੰਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **ਸਫਲ**
|
||||
ਕੋਸ਼ਿਸ਼: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
ਵੇਰਵੇ: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: ਵਟਸਐਪ ਤੋਂ ਸੁਨੇਹਾ
|
||||
whatsapp.message.removing.error: ਵਟਸਐਪ ਤੋਂ ਸੁਨੇਹਾ ਹਟਾ ਨਹੀਂ ਸਕਿਆ
|
||||
job.scheduled.error.header: ਨਿਰਧਾਰਿਤ ਕੰਮ ਚਲਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *ਵਟਸਐਪ ਤੋਂ ਭੇਜਿਆ ਗਿਆ*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *API ਰਾਹੀਂ ਭੇਜਿਆ ਗਿਆ*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *ਇਹ ਸੁਨੇਹਾ ਵਟਸਐਪ ਵਿੱਚ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਸੀ*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *ਵਟਸਐਪ ਵਿੱਚ ਸੰਪਾਦਿਤ ਕੀਤਾ ਗਿਆ*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*ਪ੍ਰਤੀਕਿਰਿਆ ਕੀਤੀ* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*ਪ੍ਰਤੀਕਿਰਿਆ ਹਟਾਈ ਗਈ*
|
||||
|
||||
whatsapp.contact.group.suffix: 'ਗਰੁੱਪ'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'ਪ੍ਰਸਾਰਣ ਸੂਚੀ'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'ਸਥਿਤੀ'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **ਕਨੈਕਟ ਕੀਤਾ: ਵਟਸਐਪ ਸੈਸ਼ਨ ਤੋਂ ChatWoot ਇਨਬਾਕਸ**
|
||||
|
||||
✅ ਵਟਸਐਪ ਸੈਸ਼ਨ **{{{name}}}** ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਇਸ ChatWoot ਇਨਬਾਕਸ ਨਾਲ ਜੋੜਿਆ ਗਿਆ ਹੈ।
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
ਆਓ ਸ਼ੁਰੂ ਕਰੀਏ! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **ਡਿਸਕਨੈਕਟ ਕੀਤਾ: ਵਟਸਐਪ ਸੈਸ਼ਨ ਤੋਂ ChatWoot ਇਨਬਾਕਸ**
|
||||
|
||||
❌ ਵਟਸਐਪ ਸੈਸ਼ਨ **{{{name}}}** ਇਸ ChatWoot ਇਨਬਾਕਸ ਤੋਂ ਡਿਸਕਨੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ।
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
ਮੁੜ ਕਨੈਕਟ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **ਅਪਡੇਟ ਕੀਤਾ: ਵਟਸਐਪ ਸੈਸ਼ਨ ਸੈਟਿੰਗਾਂ**
|
||||
|
||||
✅ ਵਟਸਐਪ ਸੈਸ਼ਨ **{{{name}}}** ਲਈ ਸੈਟਿੰਗਾਂ ਅਪਡੇਟ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕਮਾਂਡਾਂ ਵਿੱਚੋਂ ਇੱਕ ਭੇਜ ਕੇ **ਵਟਸਐਪ ਇੰਟੀਗ੍ਰੇਸ਼ਨ** ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਦੇ ਹੋ:
|
||||
|
||||
🖥️ **ਸੈਸ਼ਨ**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **ਸਰਵਰ ਕਮਾਂਡ ਅਯੋਗ
|
||||
|
||||
ਉਪਲਬਧ ਕਮਾਂਡਾਂ ਦੀ ਸੂਚੀ ਲਈ **help** ਭੇਜੋ।
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
ਉਪਲਬਧ ਕਮਾਂਡਾਂ ਦੀ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ **help** ਭੇਜੋ।
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} "{{{session}}}" ਸੈਸ਼ਨ {{{status}}} ਸਥਿਤੀ 'ਤੇ ਬਦਲ ਗਿਆ
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** ਸੈਸ਼ਨ ਸਥਿਤੀ **{{{status}}}** ਵਿੱਚ ਹੈ
|
||||
**ਵਟਸਐਪ ਖਾਤਾ:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ ਇਹ ChatWoot ਇਨਬਾਕਸ **ਵਟਸਐਪ ਖਾਤੇ** ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ ਅਤੇ ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ ਹੈ!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **ਇਹ ChatWoot ਇਨਬਾਕਸ ਵਟਸਐਪ ਖਾਤੇ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ ਪਰ ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਤਿਆਰ ਨਹੀਂ ਹੈ!**
|
||||
|
||||
ਕਿਰਪਾ ਕਰਕੇ ਸੈਸ਼ਨ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਲੌਗਆਉਟ ਕਰੋ ਅਤੇ QR ਕੋਡ ਦੁਬਾਰਾ ਸਕੈਨ ਕਰੋ।
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **ਵਟਸਐਪ ਖਾਤੇ ਨੂੰ ਇਸ ChatWoot ਇਨਬਾਕਸ ਨਾਲ ਜੋੜਨ ਲਈ ਆਪਣੇ ਫੋਨ 'ਤੇ QR ਕੋਡ ਸਕੈਨ ਕਰੋ!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**ਵਰਜਨ:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
ਸਰਵਰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਮੁੜ ਚਾਲੂ ਹੋ ਰਿਹਾ ਹੈ...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
ਸਰਵਰ ਜ਼ਬਰਦਸਤੀ ਮੁੜ ਚਾਲੂ ਹੋ ਰਿਹਾ ਹੈ...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ ਖਾਤਾ ਸਫਲਤਾਪੂਰਵਕ ਅਣਅਧਿਕਾਰਤ ਕੀਤਾ ਗਿਆ!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **ਨਵਾਂ ਵਰਜਨ ਉਪਲਬਧ!**
|
||||
|
||||
ਮੌਜੂਦਾ ਵਰਜਨ: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 [**🆕 ਬਦਲਾਅ ਲੌਗ**]({{{changelogUrl}}}) ਵਿੱਚ ਨਵਾਂ ਕੀ ਹੈ ਦੇਖੋ
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **WAHA ਦਾ ਸਮਰਥਨ ਕਰੋ!**
|
||||
|
||||
ਤੁਸੀਂ ਮੁਫਤ **WAHA Core** ਵਰਜਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ। ਜੇ ਤੁਹਾਨੂੰ ਇਹ ਪ੍ਰੋਜੈਕਟ ਲਾਭਦਾਇਕ ਲੱਗਦਾ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੇ ਵਿਕਾਸ ਦਾ ਸਮਰਥਨ ਕਰਨ 'ਤੇ ਵਿਚਾਰ ਕਰੋ।
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 ਸਾਡਾ ਸਮਰਥਨ ਕਰੋ**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **ਸਾਂਝੇ ਕੀਤੇ ਸੰਪਰਕ**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **ਸਾਂਝੀ ਸਥਿਤੀ**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **ਇਹ ਸੁਨੇਹੇ ਦੀ ਕਿਸਮ ChatWoot ਵਿੱਚ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ।**
|
||||
📱 ਇਸਨੂੰ ਦੇਖਣ ਲਈ ਕਿਰਪਾ ਕਰਕੇ **WhatsApp** ਖੋਲ੍ਹੋ।
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇧🇷🇵🇹 Português (Portuguese)'
|
||||
app.inbox.contact.name: 'Integração WhatsApp (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Tentando novamente em {{attempts.nextDelay}} segundos...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Sucesso**
|
||||
Tentativa: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Detalhes: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -33,33 +33,33 @@ whatsapp.message.removing.error:
|
||||
Não foi possível remover uma mensagem do WhatsApp
|
||||
job.scheduled.error.header: Falha ao executar tarefa agendada
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Enviado do WhatsApp*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Enviado via API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Esta mensagem foi excluída no WhatsApp*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *Editado no WhatsApp*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Reagiu com* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Reação removida*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grupo'
|
||||
@@ -68,7 +68,7 @@ whatsapp.contact.broadcast.suffix: 'Lista de transmissão'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Status'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **CONECTADO: Sessão do WhatsApp para Caixa de Entrada do ChatWoot**
|
||||
|
||||
✅ A sessão do WhatsApp **{{{name}}}** foi conectada com sucesso a esta Caixa de Entrada do ChatWoot.
|
||||
@@ -86,7 +86,7 @@ app.connected.message: |
|
||||
|
||||
Vamos começar! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **DESCONECTADO: Sessão do WhatsApp da Caixa de Entrada do ChatWoot**
|
||||
|
||||
❌ A sessão do WhatsApp **{{{name}}}** foi desconectada desta Caixa de Entrada do ChatWoot.
|
||||
@@ -95,12 +95,12 @@ app.disconnected.message: |
|
||||
|
||||
Para reconectar, entre em contato com seu administrador.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **ATUALIZADO: Configurações da Sessão do WhatsApp**
|
||||
|
||||
✅ As configurações para a sessão do WhatsApp **{{{name}}}** foram atualizadas.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Você pode gerenciar a **Integração WhatsApp** enviando um dos seguintes comandos:
|
||||
|
||||
🖥️ **Sessão**:
|
||||
@@ -128,32 +128,32 @@ app.commands.server.disabled: ⛔ **Os comandos do servidor estão desativados**
|
||||
|
||||
Envie **help** para obter a lista de comandos disponíveis.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Envie **help** para obter a lista de comandos disponíveis.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} A sessão "{{{session}}}" mudou para o status {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} O status da sessão **{{{session}}}** é **{{{status}}}**
|
||||
**Conta do WhatsApp:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ Esta Caixa de Entrada do ChatWoot está vinculada à **Conta do WhatsApp** e pronta para enviar e receber mensagens!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **Esta Caixa de Entrada do ChatWoot está vinculada à Conta do WhatsApp, mas NÃO está pronta para enviar e receber mensagens!**
|
||||
|
||||
Por favor, verifique o status da sessão e tente reiniciá-la ou saia e escaneie o código QR novamente.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **Escaneie o código QR no seu telefone para vincular a Conta do WhatsApp a esta Caixa de Entrada do ChatWoot!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Versão:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -164,16 +164,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
O servidor está reiniciando suavemente...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
O servidor está reiniciando forçadamente...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Conta desautorizada com sucesso!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **Nova Versão Disponível!**
|
||||
|
||||
Versão atual: **{{{currentVersion}}}**
|
||||
@@ -181,7 +181,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Confira o que há de novo no [**🆕 Registro de Alterações**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **Apoie o WAHA!**
|
||||
|
||||
Você está usando a versão gratuita **WAHA Core**. Se você acha este projeto útil, considere apoiar seu desenvolvimento.
|
||||
@@ -190,20 +190,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Apoie-nos**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Contato(s) compartilhado(s)**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -214,7 +214,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Localização compartilhada**
|
||||
@@ -232,7 +232,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Esse tipo de mensagem não é suportado no ChatWoot.**
|
||||
📱 Por favor, abra o **WhatsApp** para visualizá-la.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇷🇺 Русский (Russian)'
|
||||
app.inbox.contact.name: 'WhatsApp Интеграция (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Повторная попытка через {{attempts.nextDelay}} секунд...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Успешно**
|
||||
Попытка: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Подробности: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: Не удалось получить сооб
|
||||
whatsapp.message.removing.error: Не удалось удалить сообщение из WhatsApp
|
||||
job.scheduled.error.header: Запланированная задача не выполнена
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Отправлено из WhatsApp*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Отправлено через API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Это сообщение было удалено в WhatsApp*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *Отредактировано в WhatsApp*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Реакция* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Реакция удалена*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Группа'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'Список рассылки'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Статус'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **ПОДКЛЮЧЕНО: Сессия WhatsApp к ChatWoot Inbox**
|
||||
|
||||
✅ Сессия WhatsApp **{{{name}}}** была успешно подключена к этому ChatWoot Inbox.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
Давайте начнем! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **ОТКЛЮЧЕНО: Сессия WhatsApp от ChatWoot Inbox**
|
||||
|
||||
❌ Сессия WhatsApp **{{{name}}}** была отключена от этого ChatWoot Inbox.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
Для переподключения, пожалуйста, обратитесь к вашему администратору.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **ОБНОВЛЕНО: Настройки сессии WhatsApp**
|
||||
|
||||
✅ Настройки для сессии WhatsApp **{{{name}}}** были обновлены.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Вы можете управлять **WhatsApp Интеграцией**, отправив одну из следующих команд:
|
||||
|
||||
🖥️ **Сессия**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **Команды сервера отключе
|
||||
|
||||
Отправьте **help**, чтобы получить список доступных команд.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Отправьте **help**, чтобы получить список доступных команд.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} Сессия "{{{session}}}" переключилась в статус {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} Статус сессии **{{{session}}}** - **{{{status}}}**
|
||||
**Аккаунт WhatsApp:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ Этот ChatWoot Inbox связан с **аккаунтом WhatsApp** и готов отправлять и получать сообщения!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **Этот ChatWoot Inbox связан с аккаунтом WhatsApp, но НЕ готов отправлять и получать сообщения!**
|
||||
|
||||
Пожалуйста, проверьте статус сессии и попробуйте перезапустить её или выйдите и отсканируйте QR-код снова.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **Отсканируйте QR-код на вашем телефоне, чтобы связать аккаунт WhatsApp с этим ChatWoot Inbox!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Версия:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
Сервер корректно перезагружается...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
Сервер принудительно перезагружается...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Аккаунт успешно деавторизован!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **Доступна новая версия!**
|
||||
|
||||
Текущая версия: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Узнайте, что нового в [**🆕 Списке изменений**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **Поддержите WAHA!**
|
||||
|
||||
Вы используете бесплатную версию **WAHA Core**. Если вы находите этот проект полезным, пожалуйста, рассмотрите возможность поддержать его разработку.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Поддержать нас**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Переданные контакты**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Переданное местоположение**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Этот тип сообщения не поддерживается в ChatWoot.**
|
||||
📱 Пожалуйста, откройте **WhatsApp**, чтобы просмотреть.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇹🇷 Türkçe (Turkish)'
|
||||
app.inbox.contact.name: 'WhatsApp Entegrasyonu (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 {{attempts.nextDelay}} saniye içinde tekrar deneniyor...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Başarılı**
|
||||
Deneme: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Detaylar: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: WhatsApp'tan mesaj alınamadı
|
||||
whatsapp.message.removing.error: WhatsApp'tan mesaj kaldırılamadı
|
||||
job.scheduled.error.header: Zamanlanmış görev yürütülemedi
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *WhatsApp'tan gönderildi*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *API aracılığıyla gönderildi*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Bu mesaj WhatsApp'ta silindi*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *WhatsApp'ta düzenlendi*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Tepki verdi* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Tepki kaldırıldı*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Grup'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'Yayın Listesi'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Durum'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **BAĞLANDI: WhatsApp Oturumu ChatWoot Gelen Kutusuna**
|
||||
|
||||
✅ WhatsApp oturumu **{{{name}}}** bu ChatWoot Gelen Kutusuna başarıyla bağlandı.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
Hadi başlayalım! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **BAĞLANTI KESİLDİ: WhatsApp Oturumu ChatWoot Gelen Kutusundan**
|
||||
|
||||
❌ WhatsApp oturumu **{{{name}}}** bu ChatWoot Gelen Kutusundan bağlantısı kesildi.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
Yeniden bağlanmak için, lütfen yöneticinizle iletişime geçin.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **GÜNCELLENDİ: WhatsApp Oturum Ayarları**
|
||||
|
||||
✅ WhatsApp oturumu **{{{name}}}** için ayarlar güncellendi.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Aşağıdaki komutlardan birini göndererek **WhatsApp Entegrasyonu**nu yönetebilirsiniz:
|
||||
|
||||
🖥️ **Oturum**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **Sunucu komutları devre dışı**.
|
||||
|
||||
Kullanılabilir komutların listesini almak için **help** gönderin.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Kullanılabilir komutların listesini almak için **help** gönderin.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} "{{{session}}}" oturumu {{{status}}} durumuna geçti
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** oturum durumu **{{{status}}}** içinde
|
||||
**WhatsApp Hesabı:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ Bu ChatWoot Gelen Kutusu **WhatsApp Hesabına** bağlı ve mesaj gönderip almaya hazır!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **Bu ChatWoot Gelen Kutusu WhatsApp Hesabına bağlı ancak mesaj gönderip almaya hazır DEĞİL!**
|
||||
|
||||
Lütfen oturum durumunu kontrol edin ve yeniden başlatmayı deneyin veya çıkış yapın ve QR kodu tekrar tarayın.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **WhatsApp Hesabını bu ChatWoot Gelen Kutusuna bağlamak için telefonunuzda QR kodu tarayın!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Sürüm:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
Sunucu nazikçe yeniden başlatılıyor...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
Sunucu zorla yeniden başlatılıyor...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Hesap başarıyla yetkilendirilmedi!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **Yeni Sürüm Mevcut!**
|
||||
|
||||
Mevcut sürüm: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 [**🆕 Değişiklik Günlüğü**]({{{changelogUrl}}}) içinde yenilikleri kontrol edin
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **WAHA'yı Destekleyin!**
|
||||
|
||||
Ücretsiz **WAHA Core** sürümünü kullanıyorsunuz. Bu projeyi faydalı buluyorsanız, lütfen geliştirilmesini desteklemeyi düşünün.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Bizi Destekleyin**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Paylaşılan Kişi(ler)**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Paylaşılan Konum**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Bu mesaj türü ChatWoot’ta desteklenmiyor.**
|
||||
📱 Görüntülemek için lütfen **WhatsApp’ı** açın.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇺🇦 Українська (Ukrainian)'
|
||||
app.inbox.contact.name: 'Інтеграція WhatsApp (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 Повторна спроба через {{attempts.nextDelay}} секунд...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **Успішно**
|
||||
Спроба: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
Деталі: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: Не вдалося отримати пові
|
||||
whatsapp.message.removing.error: Не вдалося видалити повідомлення з WhatsApp
|
||||
job.scheduled.error.header: Заплановане завдання не вдалося виконати
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Надіслано з WhatsApp*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *Надіслано через API*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *Це повідомлення було видалено у WhatsApp*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *Відредаговано у WhatsApp*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*Реакція* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*Реакцію видалено*
|
||||
|
||||
whatsapp.contact.group.suffix: 'Група'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'Список розсилки'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'Статус'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **ПІДКЛЮЧЕНО: Сесія WhatsApp до Вхідних ChatWoot**
|
||||
|
||||
✅ Сесія WhatsApp **{{{name}}}** була успішно підключена до цих Вхідних ChatWoot.
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
Давайте почнемо! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **ВІДКЛЮЧЕНО: Сесія WhatsApp від Вхідних ChatWoot**
|
||||
|
||||
❌ Сесія WhatsApp **{{{name}}}** була відключена від цих Вхідних ChatWoot.
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
Щоб повторно підключитися, зверніться до свого адміністратора.
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **ОНОВЛЕНО: Налаштування сесії WhatsApp**
|
||||
|
||||
✅ Налаштування для сесії WhatsApp **{{{name}}}** були оновлені.
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
Ви можете керувати **Інтеграцією WhatsApp**, надіславши одну з наступних команд:
|
||||
|
||||
🖥️ **Сесія**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **Команди сервера вимкнен
|
||||
|
||||
Надішліть **help**, щоб отримати список доступних команд.
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
Надішліть **help**, щоб отримати список доступних команд.
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} Сесія "{{{session}}}" перейшла у статус {{{status}}}
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} Статус сесії **{{{session}}}** - **{{{status}}}**
|
||||
**Обліковий запис WhatsApp:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ Ці Вхідні ChatWoot пов'язані з **Обліковим записом WhatsApp** і готові надсилати та отримувати повідомлення!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **Ці Вхідні ChatWoot пов'язані з Обліковим записом WhatsApp, але НЕ готові надсилати та отримувати повідомлення!**
|
||||
|
||||
Будь ласка, перевірте статус сесії та спробуйте перезапустити її або вийдіть і відскануйте QR-код знову.
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **Відскануйте QR-код на вашому телефоні, щоб пов'язати Обліковий запис WhatsApp з цими Вхідними ChatWoot!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**Версія:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
Сервер плавно перезавантажується...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
Сервер примусово перезавантажується...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ Обліковий запис успішно деавторизовано!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **Доступна нова версія!**
|
||||
|
||||
Поточна версія: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 Перевірте, що нового у [**🆕 Журналі змін**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **Підтримайте WAHA!**
|
||||
|
||||
Ви використовуєте безкоштовну версію **WAHA Core**. Якщо ви вважаєте цей проект корисним, будь ласка, розгляньте можливість підтримати його розробку.
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 Підтримайте нас**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **Надісланий контакт(и)**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **Надіслана локація**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **Цей тип повідомлення не підтримується в ChatWoot.**
|
||||
📱 Будь ласка, відкрийте **WhatsApp**, щоб переглянути.
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇵🇰 اردو (Urdu)'
|
||||
app.inbox.contact.name: 'واٹس ایپ انٹیگریشن (WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 {{attempts.nextDelay}} سیکنڈ میں دوبارہ کوشش کر رہا ہے...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **کامیاب ہوا**
|
||||
کوشش: {{{attempts.current}}} / {{{attempts.max}}}
|
||||
تفصیلات: [{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: واٹس ایپ سے پیغام موصول ن
|
||||
whatsapp.message.removing.error: واٹس ایپ سے پیغام ہٹا نہیں سکا
|
||||
job.scheduled.error.header: شیڈول کردہ کام انجام دینے میں ناکام رہا
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *واٹس ایپ سے بھیجا گیا*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *API کے ذریعے بھیجا گیا*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *یہ پیغام واٹس ایپ میں حذف کر دیا گیا تھا*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *واٹس ایپ میں ترمیم کی گئی*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*ردعمل دیا* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*ردعمل ہٹا دیا گیا*
|
||||
|
||||
whatsapp.contact.group.suffix: 'گروپ'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: 'براڈکاسٹ فہرست'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: 'سٹیٹس'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **منسلک: واٹس ایپ سیشن ChatWoot انبکس سے**
|
||||
|
||||
✅ واٹس ایپ سیشن **{{{name}}}** کامیابی سے اس ChatWoot انبکس سے منسلک ہو گیا ہے۔
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
آئیے شروع کریں! 🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **منقطع: واٹس ایپ سیشن ChatWoot انبکس سے**
|
||||
|
||||
❌ واٹس ایپ سیشن **{{{name}}}** اس ChatWoot انبکس سے منقطع ہو گیا ہے۔
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
دوبارہ منسلک ہونے کے لیے، براہ کرم اپنے منتظم سے رابطہ کریں۔
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **اپڈیٹ شدہ: واٹس ایپ سیشن کی ترتیبات**
|
||||
|
||||
✅ واٹس ایپ سیشن **{{{name}}}** کی ترتیبات اپڈیٹ کر دی گئی ہیں۔
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
آپ درج ذیل کمانڈز میں سے ایک بھیج کر **واٹس ایپ انٹیگریشن** کا انتظام کر سکتے ہیں:
|
||||
|
||||
🖥️ **سیشن**:
|
||||
@@ -125,32 +125,32 @@ app.commands.server.disabled: ⛔ **سرور کمانڈز غیر فعال ہیں
|
||||
|
||||
دستیاب کمانڈز کی فہرست حاصل کرنے کے لیے **help** بھیجیں۔
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
دستیاب کمانڈز کی فہرست حاصل کرنے کے لیے **help** بھیجیں۔
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} "{{{session}}}" سیشن {{{status}}} حالت میں تبدیل ہو گیا
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** سیشن کی حالت **{{{status}}}** میں ہے
|
||||
**واٹس ایپ اکاؤنٹ:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ یہ ChatWoot انبکس **واٹس ایپ اکاؤنٹ** سے منسلک ہے اور پیغامات بھیجنے اور موصول کرنے کے لیے تیار ہے!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **یہ ChatWoot انبکس واٹس ایپ اکاؤنٹ سے منسلک ہے لیکن پیغامات بھیجنے اور موصول کرنے کے لیے تیار نہیں ہے!**
|
||||
|
||||
براہ کرم سیشن کی حالت چیک کریں اور اسے دوبارہ شروع کرنے کی کوشش کریں یا لاگ آؤٹ کریں اور QR کوڈ دوبارہ اسکین کریں۔
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **اس ChatWoot انبکس کے ساتھ واٹس ایپ اکاؤنٹ کو منسلک کرنے کے لیے اپنے فون پر QR کوڈ اسکین کریں!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**ورژن:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -161,16 +161,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
سرور آرام سے دوبارہ شروع ہو رہا ہے...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
سرور زبردستی دوبارہ شروع ہو رہا ہے...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ اکاؤنٹ کامیابی سے غیر مجاز ہو گیا!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **نیا ورژن دستیاب ہے!**
|
||||
|
||||
موجودہ ورژن: **{{{currentVersion}}}**
|
||||
@@ -178,7 +178,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 [**🆕 تبدیلیوں کی فہرست**]({{{changelogUrl}}}) میں نیا کیا ہے دیکھیں
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **WAHA کی حمایت کریں!**
|
||||
|
||||
آپ مفت **WAHA Core** ورژن استعمال کر رہے ہیں۔ اگر آپ کو یہ پروجیکٹ مفید لگتا ہے، تو براہ کرم اس کی ترقی کی حمایت کرنے پر غور کریں۔
|
||||
@@ -187,20 +187,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 ہماری حمایت کریں**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **شیئر کیے گئے رابطہ(رابطے)**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -211,7 +211,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **شیئر کی گئی لوکیشن**
|
||||
@@ -229,7 +229,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **ChatWoot میں اس قسم کا پیغام معاونت یافتہ نہیں ہے۔**
|
||||
📱 اسے دیکھنے کے لیے براہ کرم **WhatsApp** کھولیں۔
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ locale.name: '🇨🇳 中文(Simplified Chinese)'
|
||||
app.inbox.contact.name: 'WhatsApp 集成(WAHA)'
|
||||
app.inbox.contact.avatar.url: 'https://raw.githubusercontent.com/devlikeapro/waha/core/logo.png'
|
||||
|
||||
job.report.error: |
|
||||
job.report.error: |-
|
||||
⚠️ **{{{header}}}**
|
||||
{{#attempts.nextDelay}}
|
||||
🔄 将在 {{attempts.nextDelay}} 秒后重试...
|
||||
@@ -20,7 +20,7 @@ job.report.error: |
|
||||
```
|
||||
{{/error}}
|
||||
|
||||
job.report.succeeded: |
|
||||
job.report.succeeded: |-
|
||||
✅ **成功**
|
||||
尝试:{{{attempts.current}}} / {{{attempts.max}}}
|
||||
详情:[{{{details.text}}}]({{{details.url}}})
|
||||
@@ -30,33 +30,33 @@ whatsapp.message.receiving.error: 无法接收来自 WhatsApp 的消息
|
||||
whatsapp.message.removing.error: 无法从 WhatsApp 中删除消息
|
||||
job.scheduled.error.header: 计划任务执行失败
|
||||
|
||||
message.from.whatsapp: |
|
||||
message.from.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *通过 WhatsApp 发送*
|
||||
|
||||
message.from.api: |
|
||||
message.from.api: |-
|
||||
{{{text}}}
|
||||
|
||||
📱 *通过 API 发送*
|
||||
|
||||
message.removed.in.whatsapp: |
|
||||
message.removed.in.whatsapp: |-
|
||||
❌ *此消息已在 WhatsApp 中被删除*
|
||||
|
||||
message.edited.in.whatsapp: |
|
||||
message.edited.in.whatsapp: |-
|
||||
{{{text}}}
|
||||
|
||||
✏️ *已在 WhatsApp 中编辑*
|
||||
|
||||
whatsapp.group.message: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.group.message: |-
|
||||
👥 *{{{participant}}}*
|
||||
|
||||
whatsapp.reaction.added: |
|
||||
{{{text}}}
|
||||
|
||||
whatsapp.reaction.added: |-
|
||||
*已反应* {{{emoji}}}
|
||||
|
||||
whatsapp.reaction.removed: |
|
||||
whatsapp.reaction.removed: |-
|
||||
*已移除反应*
|
||||
|
||||
whatsapp.contact.group.suffix: '群组'
|
||||
@@ -65,7 +65,7 @@ whatsapp.contact.broadcast.suffix: '广播列表'
|
||||
# Aka Stories
|
||||
whatsapp.contact.status.name: '状态'
|
||||
|
||||
app.connected.message: |
|
||||
app.connected.message: |-
|
||||
🔗 **已连接:WhatsApp 会话到 ChatWoot 收件箱**
|
||||
|
||||
✅ WhatsApp 会话 **{{{name}}}** 已成功连接到此 ChatWoot 收件箱。
|
||||
@@ -83,7 +83,7 @@ app.connected.message: |
|
||||
|
||||
开始吧!🚀
|
||||
|
||||
app.disconnected.message: |
|
||||
app.disconnected.message: |-
|
||||
🔌 **已断开:从 ChatWoot 收件箱断开 WhatsApp 会话**
|
||||
|
||||
❌ WhatsApp 会话 **{{{name}}}** 已与此 ChatWoot 收件箱断开。
|
||||
@@ -92,12 +92,12 @@ app.disconnected.message: |
|
||||
|
||||
如需重新连接,请联系你的管理员。
|
||||
|
||||
app.updated.message: |
|
||||
app.updated.message: |-
|
||||
🔄 **已更新:WhatsApp 会话设置**
|
||||
|
||||
✅ WhatsApp 会话 **{{{name}}}** 的设置已更新。
|
||||
|
||||
app.commands.list: |
|
||||
app.commands.list: |-
|
||||
你可以通过发送以下命令来管理**WhatsApp 集成**:
|
||||
|
||||
🖥️ **会话**:
|
||||
@@ -127,32 +127,32 @@ app.commands.server.disabled: ⛔ **服务器命令已禁用**。
|
||||
|
||||
发送 **help** 获取可用命令列表。
|
||||
|
||||
app.help.reminder: |
|
||||
app.help.reminder: |-
|
||||
发送 **help** 获取可用命令列表。
|
||||
|
||||
app.session.status.change: |
|
||||
app.session.status.change: |-
|
||||
{{{emoji}}} "{{{session}}}" 会话已切换为 {{{status}}} 状态
|
||||
|
||||
app.session.current.status: |
|
||||
app.session.current.status: |-
|
||||
{{{emoji}}} **{{{session}}}** 会话状态为 **{{{status}}}**
|
||||
**WhatsApp 账号:**
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.working: |
|
||||
app.session.status.working: |-
|
||||
✅ 此 ChatWoot 收件箱已链接到**WhatsApp 账号**,可以正常收发消息!
|
||||
|
||||
📱 **{{{name}}} ({{{id}}})**
|
||||
|
||||
app.session.status.error: |
|
||||
app.session.status.error: |-
|
||||
⚠️ **此 ChatWoot 收件箱已链接到 WhatsApp 账号,但尚未准备好收发消息!**
|
||||
|
||||
请检查会话状态,尝试重启,或登出后重新扫描二维码。
|
||||
|
||||
app.session.scan.qr.code: |
|
||||
app.session.scan.qr.code: |-
|
||||
⚠️ **请在手机上扫描二维码,将 WhatsApp 账号与此 ChatWoot 收件箱关联!**
|
||||
|
||||
app.server.version.and.status: |
|
||||
app.server.version.and.status: |-
|
||||
**版本:**
|
||||
```
|
||||
{{{version}}}
|
||||
@@ -163,16 +163,16 @@ app.server.version.and.status: |
|
||||
{{{status}}}
|
||||
```
|
||||
|
||||
app.server.reboot: |
|
||||
app.server.reboot: |-
|
||||
服务器正在优雅重启...
|
||||
|
||||
app.server.reboot.force: |
|
||||
app.server.reboot.force: |-
|
||||
服务器正在强制重启...
|
||||
|
||||
app.logout.success: |
|
||||
app.logout.success: |-
|
||||
✅ 账号已成功取消授权!
|
||||
|
||||
waha.new.version.available: |
|
||||
waha.new.version.available: |-
|
||||
🔄 **有新版本可用!**
|
||||
|
||||
当前版本:**{{{currentVersion}}}**
|
||||
@@ -180,7 +180,7 @@ waha.new.version.available: |
|
||||
|
||||
👉 查看[**🆕 更新日志**]({{{changelogUrl}}})
|
||||
|
||||
waha.core.version.used: |
|
||||
waha.core.version.used: |-
|
||||
❤️ **支持 WAHA!**
|
||||
|
||||
你正在使用免费的 **WAHA Core** 版本。如果你觉得该项目有帮助,请考虑支持其开发。
|
||||
@@ -189,20 +189,20 @@ waha.core.version.used: |
|
||||
|
||||
[**🎁 支持我们**]({{{supportUrl}}})
|
||||
|
||||
chatwoot.to.whatsapp.message.text: |
|
||||
chatwoot.to.whatsapp.message.text: |-
|
||||
{{{ content }}}
|
||||
|
||||
chatwoot.to.whatsapp.message.media.caption: |
|
||||
chatwoot.to.whatsapp.message.media.caption: |-
|
||||
{{#singleAttachment}}
|
||||
{{#content}}
|
||||
{{{ content }}}
|
||||
{{/content}}
|
||||
{{/singleAttachment}}
|
||||
|
||||
whatsapp.to.chatwoot.message: |
|
||||
whatsapp.to.chatwoot.message: |-
|
||||
{{{payload.body}}}
|
||||
|
||||
whatsapp.to.chatwoot.message.contacts: |
|
||||
whatsapp.to.chatwoot.message.contacts: |-
|
||||
👤 **共享联系人**
|
||||
|
||||
{{#contacts}}
|
||||
@@ -213,7 +213,7 @@ whatsapp.to.chatwoot.message.contacts: |
|
||||
|
||||
{{/contacts}}
|
||||
|
||||
whatsapp.to.chatwoot.message.location: |
|
||||
whatsapp.to.chatwoot.message.location: |-
|
||||
{{#message}}
|
||||
{{#locationMessage}}
|
||||
📍 **共享位置**
|
||||
@@ -231,7 +231,7 @@ whatsapp.to.chatwoot.message.location: |
|
||||
{{/liveLocationMessage}}
|
||||
{{/message}}
|
||||
|
||||
whatsapp.to.chatwoot.message.unsupported: |
|
||||
whatsapp.to.chatwoot.message.unsupported: |-
|
||||
⚠️ **ChatWoot 不支持此消息类型。**
|
||||
📱 请打开 **WhatsApp** 查看。
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { proto } from '@adiwajshing/baileys';
|
||||
import { ChatWootCommandsConfig } from '@waha/apps/chatwoot/dto/config.dto';
|
||||
import { WAMessage } from '@waha/structures/responses.dto';
|
||||
import { proto } from '@adiwajshing/baileys';
|
||||
import { SimpleVCardInfo } from '@waha/core/vcard';
|
||||
|
||||
export enum TKey {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { WhatsAppMessage } from '@waha/apps/chatwoot/storage';
|
||||
import { toCusFormat } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import { WAHAEngine } from '@waha/structures/enums.dto';
|
||||
import { getEngineName } from '@waha/version';
|
||||
import { Message as MessageInstance } from 'whatsapp-web.js/src/structures';
|
||||
import { toCusFormat } from '@waha/core/utils/jids';
|
||||
|
||||
interface IEngineHelper {
|
||||
WhatsAppMessageKeys(message: any): WhatsAppMessage;
|
||||
|
||||
@@ -26,6 +26,9 @@ export function MarkdownToWhatsApp(text: string): string {
|
||||
|
||||
export function WhatsappToMarkdown(text: string): string {
|
||||
if (!text) {
|
||||
return text;
|
||||
}
|
||||
if (text == '') {
|
||||
return '';
|
||||
}
|
||||
return (
|
||||
|
||||
+35
-11
@@ -1,4 +1,3 @@
|
||||
import { isJidBroadcast } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import {
|
||||
CoreMediaConverter,
|
||||
IMediaConverter,
|
||||
@@ -7,6 +6,7 @@ import { MessagesForRead } from '@waha/core/utils/convertors';
|
||||
import {
|
||||
IgnoreJidConfig,
|
||||
isJidNewsletter,
|
||||
isJidBroadcast,
|
||||
JidFilter,
|
||||
} from '@waha/core/utils/jids';
|
||||
import {
|
||||
@@ -53,10 +53,13 @@ import {
|
||||
delay,
|
||||
filter,
|
||||
of,
|
||||
pairwise,
|
||||
retry,
|
||||
scan,
|
||||
share,
|
||||
Subject,
|
||||
switchMap,
|
||||
timestamp,
|
||||
} from 'rxjs';
|
||||
import { distinctUntilChanged, map } from 'rxjs/operators';
|
||||
import { MessageId } from 'whatsapp-web.js';
|
||||
@@ -115,7 +118,10 @@ import {
|
||||
VideoStatus,
|
||||
VoiceStatus,
|
||||
} from '../../structures/status.dto';
|
||||
import { WASessionStatusBody } from '../../structures/webhooks.dto';
|
||||
import {
|
||||
SessionStatusPoint,
|
||||
WASessionStatusBody,
|
||||
} from '../../structures/webhooks.dto';
|
||||
import {
|
||||
AvailableInPlusVersion,
|
||||
NotImplementedByEngineError,
|
||||
@@ -202,7 +208,7 @@ export abstract class WhatsappSession {
|
||||
engineConfig,
|
||||
ignore,
|
||||
}: SessionParams) {
|
||||
this.status$ = new BehaviorSubject(null);
|
||||
this.status$ = new BehaviorSubject(WAHASessionStatus.STOPPED);
|
||||
|
||||
this.name = name;
|
||||
this.proxyConfig = proxyConfig;
|
||||
@@ -233,8 +239,6 @@ export abstract class WhatsappSession {
|
||||
|
||||
this.events2.get(WAHAEvents.SESSION_STATUS).switch(
|
||||
this.status$
|
||||
// initial value is null
|
||||
.pipe(filter(Boolean))
|
||||
// Wait for WORKING status to get all the info
|
||||
// https://github.com/devlikeapro/waha/issues/409
|
||||
.pipe(
|
||||
@@ -252,12 +256,32 @@ export abstract class WhatsappSession {
|
||||
distinctUntilChanged(
|
||||
(prev, curr) => prev === curr && curr === WAHASessionStatus.WORKING,
|
||||
),
|
||||
)
|
||||
// Populate the session info
|
||||
.pipe(
|
||||
map<WAHASessionStatus, WASessionStatusBody>((status) => {
|
||||
return { name: this.name, status: status };
|
||||
}),
|
||||
// attach current time (ms)
|
||||
timestamp(),
|
||||
map(
|
||||
({ value, timestamp }) =>
|
||||
({
|
||||
status: value,
|
||||
timestamp: timestamp,
|
||||
}) as SessionStatusPoint,
|
||||
),
|
||||
// keep the last 3 entries
|
||||
scan<SessionStatusPoint, SessionStatusPoint[]>(
|
||||
(statuses, status: SessionStatusPoint) => {
|
||||
const next = [...statuses, status];
|
||||
return next.length > 3 ? next.slice(-3) : next;
|
||||
},
|
||||
[],
|
||||
),
|
||||
// shape final payload
|
||||
map(
|
||||
(statuses) =>
|
||||
({
|
||||
name: this.name,
|
||||
status: statuses.at(-1)?.status, // current
|
||||
statuses: statuses,
|
||||
}) as WASessionStatusBody,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { toCusFormat } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import { Label, LabelChatAssociation } from '@waha/structures/labels.dto';
|
||||
|
||||
import * as gows from './types';
|
||||
import { toCusFormat } from '@waha/core/utils/jids';
|
||||
|
||||
/**
|
||||
* Converts a GOWS LabelEdit event to a Label DTO
|
||||
|
||||
@@ -1,14 +1,4 @@
|
||||
import {
|
||||
aggregateMessageKeysNotFromMe,
|
||||
getContentType,
|
||||
getUrlFromDirectPath,
|
||||
isJidGroup,
|
||||
jidNormalizedUser,
|
||||
normalizeMessageContent,
|
||||
proto,
|
||||
WAMessageKey,
|
||||
} from '@adiwajshing/baileys';
|
||||
import { isJidBroadcast } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import type { proto, WAMessageKey } from '@adiwajshing/baileys';
|
||||
import * as grpc from '@grpc/grpc-js';
|
||||
import { connectivityState } from '@grpc/grpc-js';
|
||||
import { UnprocessableEntityException } from '@nestjs/common';
|
||||
@@ -37,7 +27,6 @@ import { GowsAuthFactoryCore } from '@waha/core/engines/gows/store/GowsAuthFacto
|
||||
import {
|
||||
extractBody,
|
||||
getDestination,
|
||||
toCusFormat,
|
||||
} from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import { extractMediaContent } from '@waha/core/engines/noweb/utils';
|
||||
import {
|
||||
@@ -48,7 +37,12 @@ import { IMediaEngineProcessor } from '@waha/core/media/IMediaEngineProcessor';
|
||||
import { QR } from '@waha/core/QR';
|
||||
import { ExtractMessageKeysForRead } from '@waha/core/utils/convertors';
|
||||
import { parseMessageIdSerialized } from '@waha/core/utils/ids';
|
||||
import { toJID } from '@waha/core/utils/jids';
|
||||
import {
|
||||
isJidBroadcast,
|
||||
isJidGroup,
|
||||
toCusFormat,
|
||||
toJID,
|
||||
} from '@waha/core/utils/jids';
|
||||
import {
|
||||
Channel,
|
||||
ChannelListResult,
|
||||
@@ -148,6 +142,7 @@ import {
|
||||
retry,
|
||||
share,
|
||||
} from 'rxjs';
|
||||
import { Subject } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { promisify } from 'util';
|
||||
|
||||
@@ -170,7 +165,7 @@ import {
|
||||
isLabelChatAddedEvent,
|
||||
isLabelUpsertEvent,
|
||||
} from './labels.gows';
|
||||
import IMessageKey = proto.IMessageKey;
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
enum WhatsMeowEvent {
|
||||
CONNECTED = 'gows.ConnectedEventData',
|
||||
@@ -218,6 +213,8 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
public session: messages.Session;
|
||||
protected presences: any;
|
||||
|
||||
private local$ = new Subject<EnginePayload>();
|
||||
|
||||
public constructor(config) {
|
||||
super(config);
|
||||
this.qr = new QR();
|
||||
@@ -304,7 +301,11 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
);
|
||||
|
||||
// Retry on error with delay
|
||||
this.all$ = this.stream$.pipe(retry({ delay: 2_000 }), share());
|
||||
// Accept locally re-issued events as well
|
||||
this.all$ = merge(this.stream$, this.local$).pipe(
|
||||
retry({ delay: 2_000 }),
|
||||
share(),
|
||||
);
|
||||
}
|
||||
|
||||
subscribeEvents() {
|
||||
@@ -314,9 +315,9 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
events.on(WhatsMeowEvent.CONNECTED, (data) => {
|
||||
this.status = WAHASessionStatus.WORKING;
|
||||
this.me = {
|
||||
id: toCusFormat(jidNormalizedUser(data.ID)),
|
||||
id: toCusFormat(esm.b.jidNormalizedUser(data.ID)),
|
||||
pushName: data.PushName,
|
||||
lid: jidNormalizedUser(data.LID),
|
||||
lid: esm.b.jidNormalizedUser(data.LID),
|
||||
};
|
||||
// @ts-ignore
|
||||
this.me.jid = data.ID;
|
||||
@@ -390,6 +391,48 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
// add new value
|
||||
this.presences.set(Chat, [...filtered, event]);
|
||||
});
|
||||
|
||||
//
|
||||
// Fix for "typing" after sending a message
|
||||
// Re-issue a synthetic ChatPresence(PAUSED) to cancel COMPOSING state
|
||||
// Works for both DM and Group chats
|
||||
//
|
||||
events.on(WhatsMeowEvent.MESSAGE, (message: any) => {
|
||||
const chat = message?.Info?.Chat;
|
||||
if (!this.jids.include(chat)) {
|
||||
return;
|
||||
}
|
||||
if (message?.Info?.IsFromMe) {
|
||||
return;
|
||||
}
|
||||
const sender = message?.Info?.Sender || chat;
|
||||
if (!chat || !sender) {
|
||||
return;
|
||||
}
|
||||
const stored: Array<gows.Presence | gows.ChatPresence> =
|
||||
this.presences.get(chat) || [];
|
||||
const composing = stored.find(
|
||||
(presence: any) =>
|
||||
(presence?.Sender === sender || presence?.From === sender) &&
|
||||
presence?.State === gows.ChatPresenceState.COMPOSING,
|
||||
) as gows.ChatPresence | undefined;
|
||||
if (!composing) {
|
||||
return;
|
||||
}
|
||||
const presence: gows.ChatPresence = {
|
||||
Chat: chat,
|
||||
Sender: sender,
|
||||
IsFromMe: false,
|
||||
IsGroup: !!isJidGroup(chat),
|
||||
State: gows.ChatPresenceState.PAUSED,
|
||||
Media: (composing as any)?.Media ?? gows.ChatPresenceMedia.TEXT,
|
||||
} as any;
|
||||
this.local$.next({
|
||||
event: WhatsMeowEvent.CHAT_PRESENCE,
|
||||
data: presence,
|
||||
} as any);
|
||||
});
|
||||
|
||||
events.start();
|
||||
}
|
||||
|
||||
@@ -961,7 +1004,7 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
if (keys.length === 0) {
|
||||
return;
|
||||
}
|
||||
const receipts = aggregateMessageKeysNotFromMe(keys);
|
||||
const receipts = esm.b.aggregateMessageKeysNotFromMe(keys);
|
||||
for (const receipt of receipts) {
|
||||
if (receipt.messageIds.length === 0) {
|
||||
return;
|
||||
@@ -1403,11 +1446,11 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
(newsletter.role?.toUpperCase() as ChannelRole) || ChannelRole.GUEST;
|
||||
let picture = newsletter.picture;
|
||||
if (picture.startsWith('/')) {
|
||||
picture = getUrlFromDirectPath(picture);
|
||||
picture = esm.b.getUrlFromDirectPath(picture);
|
||||
}
|
||||
let preview = newsletter.preview;
|
||||
if (preview.startsWith('/')) {
|
||||
preview = getUrlFromDirectPath(preview);
|
||||
preview = esm.b.getUrlFromDirectPath(preview);
|
||||
}
|
||||
return {
|
||||
id: newsletter.id,
|
||||
@@ -1913,8 +1956,8 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
// Ignore protocol messages
|
||||
if (message.Message.protocolMessage) return;
|
||||
|
||||
const normalizedContent = normalizeMessageContent(message.Message);
|
||||
const contentType = getContentType(normalizedContent);
|
||||
const normalizedContent = esm.b.normalizeMessageContent(message.Message);
|
||||
const contentType = esm.b.getContentType(normalizedContent);
|
||||
// Ignore device sent message
|
||||
if (contentType == 'deviceSentMessage') {
|
||||
return;
|
||||
@@ -2001,13 +2044,13 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
private toPollVotePayload(event: any): PollVotePayload {
|
||||
// Extract event creation message key from the message
|
||||
const creationKey = event.Message?.pollUpdateMessage.pollCreationMessageKey;
|
||||
const pollKey: IMessageKey = {
|
||||
const pollKey: proto.IMessageKey = {
|
||||
remoteJid: creationKey.remoteJID,
|
||||
fromMe: creationKey.fromMe,
|
||||
id: creationKey.ID,
|
||||
participant: creationKey.participant,
|
||||
};
|
||||
const voteKey: IMessageKey = {
|
||||
const voteKey: proto.IMessageKey = {
|
||||
id: event.Info.ID,
|
||||
remoteJid: event.Info.Chat,
|
||||
participant: event.IsGroup ? event.Info.Sender : null,
|
||||
@@ -2074,7 +2117,7 @@ export class WhatsappSessionGoWSCore extends WhatsappSession {
|
||||
}
|
||||
|
||||
protected extractReplyTo(message): ReplyToMessage | null {
|
||||
const msgType = getContentType(message);
|
||||
const msgType = esm.b.getContentType(message);
|
||||
const contextInfo = message[msgType]?.contextInfo;
|
||||
if (!contextInfo) {
|
||||
return null;
|
||||
@@ -2334,10 +2377,10 @@ export function getMessageIdFromSerialized(serialized: string): string | null {
|
||||
*/
|
||||
|
||||
function fixPollCreationKey(
|
||||
vote: IMessageKey,
|
||||
poll: IMessageKey,
|
||||
vote: proto.IMessageKey,
|
||||
poll: proto.IMessageKey,
|
||||
me: MeInfo,
|
||||
): IMessageKey {
|
||||
): proto.IMessageKey {
|
||||
// If the vote is from me, the pollCreationKey is already in my perspective
|
||||
if (vote?.fromMe) {
|
||||
return poll;
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import { GroupMetadata, jidNormalizedUser } from '@adiwajshing/baileys';
|
||||
import type { GroupMetadata } from '@adiwajshing/baileys';
|
||||
import type { Contact } from '@adiwajshing/baileys/lib/Types/Contact';
|
||||
import {
|
||||
import type {
|
||||
GroupParticipant as NOWEBGroupParticipant,
|
||||
ParticipantAction,
|
||||
} from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
import { getGroupInviteLink } from '@waha/core/abc/session.abc';
|
||||
import { toCusFormat } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import {
|
||||
GroupInfo,
|
||||
GroupParticipant,
|
||||
@@ -18,6 +17,8 @@ import {
|
||||
GroupV2ParticipantsEvent,
|
||||
GroupV2UpdateEvent,
|
||||
} from '@waha/structures/groups.events.dto';
|
||||
import { toCusFormat } from '@waha/core/utils/jids';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
export function ToGroupInfo(group: Partial<GroupMetadata>): GroupInfo {
|
||||
let participants: GroupParticipant[] = undefined;
|
||||
@@ -128,7 +129,7 @@ export function ToGroupV2LeaveEvent(
|
||||
if (!me) {
|
||||
return null;
|
||||
}
|
||||
const meId = jidNormalizedUser(me.id);
|
||||
const meId = esm.b.jidNormalizedUser(me.id);
|
||||
if (!update.participants.includes(meId)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
export enum LabelAssociationType {
|
||||
Chat = 'label_jid',
|
||||
Message = 'label_message',
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { generateWAMessageFromContent, proto } from '@adiwajshing/baileys';
|
||||
import { Button, ButtonType } from '@waha/structures/chatting.buttons.dto';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
function toName(type: ButtonType) {
|
||||
switch (type) {
|
||||
@@ -96,8 +96,8 @@ export async function sendButtonMessage(
|
||||
};
|
||||
}
|
||||
|
||||
const msg = proto.Message.fromObject(data);
|
||||
const fullMessage = generateWAMessageFromContent(chatId, msg, {
|
||||
const msg = esm.b.proto.Message.create(data);
|
||||
const fullMessage = esm.b.generateWAMessageFromContent(chatId, msg, {
|
||||
userJid: sock?.user?.id,
|
||||
});
|
||||
await sock.relayMessage(chatId, fullMessage.message, {
|
||||
|
||||
@@ -11,7 +11,7 @@ import makeWASocket, {
|
||||
getContentType,
|
||||
getKeyAuthor,
|
||||
isJidGroup,
|
||||
isJidUser,
|
||||
isPnUser,
|
||||
isRealMessage,
|
||||
jidNormalizedUser,
|
||||
makeCacheableSignalKeyStore,
|
||||
@@ -24,6 +24,7 @@ import makeWASocket, {
|
||||
WAMessageKey,
|
||||
WAMessageUpdate,
|
||||
} from '@adiwajshing/baileys';
|
||||
import type { WABrowserDescription } from '@adiwajshing/baileys';
|
||||
import { WACallEvent } from '@adiwajshing/baileys/lib/Types/Call';
|
||||
import { BaileysEventMap } from '@adiwajshing/baileys/lib/Types/Events';
|
||||
import { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
@@ -308,9 +309,7 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
|
||||
getSocketConfig(agent, state): Partial<SocketConfig> {
|
||||
const fullSyncEnabled = this.sessionConfig?.noweb?.store?.fullSync || false;
|
||||
const browser = fullSyncEnabled
|
||||
? Browsers.ubuntu('Desktop')
|
||||
: Browsers.ubuntu('Chrome');
|
||||
const browser = ['Ubuntu', 'Chrome', '20.0.04'] as WABrowserDescription;
|
||||
let markOnlineOnConnect = this.sessionConfig?.noweb?.markOnline;
|
||||
if (markOnlineOnConnect == undefined) {
|
||||
markOnlineOnConnect = true;
|
||||
@@ -410,9 +409,9 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
await this.ensureStore();
|
||||
this.sock = await this.makeSocket();
|
||||
|
||||
this.fixMessages();
|
||||
this.issueMessageUpdateOnEdits();
|
||||
this.issueMessageUpdateOnPoll();
|
||||
this.fixMessageUpsertStatus();
|
||||
this.issuePresenceUpdateOnMessageUpsert();
|
||||
if (this.isDebugEnabled()) {
|
||||
this.listenEngineEventsInDebugMode();
|
||||
@@ -439,7 +438,7 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
key: WAMessageKey,
|
||||
): Promise<WAMessageContent | undefined> {
|
||||
if (!this.store) {
|
||||
return proto.Message.fromObject({});
|
||||
return proto.Message.create({});
|
||||
}
|
||||
const msg = await this.store.loadMessage(key.remoteJid, key.id);
|
||||
return msg?.message || undefined;
|
||||
@@ -586,12 +585,16 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
await this.store?.close();
|
||||
}
|
||||
|
||||
private fixMessageUpsertStatus() {
|
||||
// If no status - set it to WAMessageAck.DEVICE
|
||||
private fixMessages() {
|
||||
this.sock.ev.on('messages.upsert', ({ messages }) => {
|
||||
for (const message of messages) {
|
||||
if (message.status == null) {
|
||||
message.status = AckToStatus(WAMessageAck.DEVICE);
|
||||
// If no status - set it to WAMessageAck.DEVICE
|
||||
message.status = message.status ?? AckToStatus(WAMessageAck.DEVICE);
|
||||
|
||||
// Fix fromMe in @lid addressed groups
|
||||
// https://github.com/devlikeapro/waha/issues/1350
|
||||
if (message.key.participant === this.getSessionMeInfo()?.lid) {
|
||||
message.key.fromMe = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -737,7 +740,7 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
return {
|
||||
id: toCusFormat(meId),
|
||||
pushName: me.name,
|
||||
lid: me.lid,
|
||||
lid: jidNormalizedUser(me.lid),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2141,7 +2144,7 @@ export class WhatsappSessionNoWebCore extends WhatsappSession {
|
||||
|
||||
this.logger.debug({ jid: update.id }, 'Profile picture updated');
|
||||
const url = await this.refreshProfilePicture(update.id);
|
||||
if (isJidUser(update.id)) {
|
||||
if (isPnUser(update.id) || isLidUser(update.id)) {
|
||||
// update 123@c.us and 123 profiles as well
|
||||
const cus = toCusFormat(update.id);
|
||||
this.profilePictures.set(cus, url);
|
||||
@@ -2577,11 +2580,16 @@ export class NOWEBEngineMediaProcessor implements IMediaEngineProcessor<any> {
|
||||
|
||||
async getMediaBuffer(message: any): Promise<Buffer | null> {
|
||||
const content = extractMediaContent(message.message);
|
||||
const url = content.url;
|
||||
// Fix Stickers
|
||||
// https://github.com/devlikeapro/waha/issues/504
|
||||
const url = content.url;
|
||||
// Set it to null so the engine handles it right
|
||||
if (!hasPath(url)) {
|
||||
// Set it to null so the engine handles it right
|
||||
content.url = null;
|
||||
}
|
||||
// Fix Newsletter
|
||||
// directPath has the unencrypted path
|
||||
if (isJidNewsletter(message.key.remoteJid) && content.directPath) {
|
||||
content.url = null;
|
||||
}
|
||||
|
||||
@@ -2594,8 +2602,7 @@ export class NOWEBEngineMediaProcessor implements IMediaEngineProcessor<any> {
|
||||
reuploadRequest: this.session.sock.updateMediaMessage,
|
||||
},
|
||||
).finally(() => {
|
||||
// Fix Stickers - set url back, just to have it in the response
|
||||
// https://github.com/devlikeapro/waha/issues/504
|
||||
// Set url back in case we removed it
|
||||
content.url = url;
|
||||
})) as Buffer;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Chat } from '@adiwajshing/baileys';
|
||||
import type { Chat } from '@adiwajshing/baileys';
|
||||
import { OverviewFilter } from '@waha/structures/chats.dto';
|
||||
import { PaginationParams } from '@waha/structures/pagination.dto';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Contact } from '@adiwajshing/baileys';
|
||||
import type { Contact } from '@adiwajshing/baileys';
|
||||
import { PaginationParams } from '@waha/structures/pagination.dto';
|
||||
|
||||
export interface IContactRepository {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { GroupMetadata } from '@adiwajshing/baileys';
|
||||
import type { GroupMetadata } from '@adiwajshing/baileys';
|
||||
import { PaginationParams } from '@waha/structures/pagination.dto';
|
||||
|
||||
export interface IGroupRepository {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {
|
||||
import type {
|
||||
LabelAssociation,
|
||||
LabelAssociationType,
|
||||
} from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Contact } from '@adiwajshing/baileys';
|
||||
import { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import type { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
|
||||
export interface ILabelsRepository {
|
||||
getById(id: string): Promise<Label | null>;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import {
|
||||
import type {
|
||||
BaileysEventEmitter,
|
||||
Chat,
|
||||
Contact,
|
||||
proto,
|
||||
} from '@adiwajshing/baileys';
|
||||
import { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
import { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import type { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
import type { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import {
|
||||
GetChatMessagesFilter,
|
||||
OverviewFilter,
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
import makeWASocket, {
|
||||
Chat,
|
||||
Contact,
|
||||
GroupMetadata,
|
||||
proto,
|
||||
} from '@adiwajshing/baileys';
|
||||
import { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import type { Chat, Contact, GroupMetadata, proto } from '@adiwajshing/baileys';
|
||||
import type makeWASocket from '@adiwajshing/baileys';
|
||||
import type { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import { BadRequestException } from '@nestjs/common';
|
||||
import { GetChatMessagesFilter } from '@waha/structures/chats.dto';
|
||||
import { LidToPhoneNumber } from '@waha/structures/lids.dto';
|
||||
|
||||
@@ -1,31 +1,25 @@
|
||||
import makeWASocket, {
|
||||
areJidsSameUser,
|
||||
import type makeWASocket from '@adiwajshing/baileys';
|
||||
import type {
|
||||
BaileysEventEmitter,
|
||||
Chat,
|
||||
ChatUpdate,
|
||||
Contact,
|
||||
GroupParticipant,
|
||||
isJidUser,
|
||||
isRealMessage,
|
||||
jidNormalizedUser,
|
||||
Contact,
|
||||
ParticipantAction,
|
||||
proto,
|
||||
updateMessageWithReaction,
|
||||
updateMessageWithReceipt,
|
||||
WAMessage,
|
||||
} from '@adiwajshing/baileys';
|
||||
import { WACallEvent } from '@adiwajshing/baileys/lib/Types/Call';
|
||||
import { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
import { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import {
|
||||
LabelAssociation,
|
||||
LabelAssociationType,
|
||||
} from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
import { isLidUser } from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import type { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
import type { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import type { LabelAssociation } from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
import { IGroupRepository } from '@waha/core/engines/noweb/store/IGroupRepository';
|
||||
import { ILabelAssociationRepository } from '@waha/core/engines/noweb/store/ILabelAssociationsRepository';
|
||||
import { ILabelsRepository } from '@waha/core/engines/noweb/store/ILabelsRepository';
|
||||
import { JidFilter } from '@waha/core/utils/jids';
|
||||
import {
|
||||
isLidUser,
|
||||
isPnUser,
|
||||
JidFilter,
|
||||
jidsFromKey,
|
||||
} from '@waha/core/utils/jids';
|
||||
import {
|
||||
GetChatMessagesFilter,
|
||||
OverviewFilter,
|
||||
@@ -41,7 +35,6 @@ import { waitUntil } from '@waha/utils/promiseTimeout';
|
||||
import * as lodash from 'lodash';
|
||||
import { toNumber } from 'lodash';
|
||||
import { Logger } from 'pino';
|
||||
import { filter } from 'rxjs';
|
||||
|
||||
import { IChatRepository } from './IChatRepository';
|
||||
import { IContactRepository } from './IContactRepository';
|
||||
@@ -49,6 +42,8 @@ import { IMessagesRepository } from './IMessagesRepository';
|
||||
import { INowebLidPNRepository, LidToPN } from './INowebLidPNRepository';
|
||||
import { INowebStorage } from './INowebStorage';
|
||||
import { INowebStore } from './INowebStore';
|
||||
import { LabelAssociationType } from '../labels/LabelAssociationType';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const AsyncLock = require('async-lock');
|
||||
@@ -118,18 +113,20 @@ export class NowebPersistentStore implements INowebStore {
|
||||
if (!message.key) {
|
||||
return null;
|
||||
}
|
||||
// Phone
|
||||
let pn = message.key.senderPn || message.key.participantPn;
|
||||
const jids = jidsFromKey(message.key);
|
||||
if (!jids) {
|
||||
return null;
|
||||
}
|
||||
let { lid, pn } = jids;
|
||||
// 123 => 123@s.whatsapp.net
|
||||
if (pn && !pn.includes('@')) {
|
||||
pn = `${pn}@s.whatsapp.net`;
|
||||
}
|
||||
// 123@c.us => 123@s.whatsapp.net
|
||||
if (pn && !isJidUser(pn)) {
|
||||
pn = jidNormalizedUser(pn);
|
||||
if (pn && !isPnUser(pn)) {
|
||||
pn = esm.b.jidNormalizedUser(pn);
|
||||
}
|
||||
// 999@lid
|
||||
const lid = message.key.senderLid || message.key.participantLid;
|
||||
return {
|
||||
id: message.key.remoteJid,
|
||||
lid: lid,
|
||||
@@ -185,6 +182,16 @@ export class NowebPersistentStore implements INowebStore {
|
||||
),
|
||||
);
|
||||
|
||||
// Lids
|
||||
ev.on('lid-mapping.update', (data) => {
|
||||
this.withLock('lids', async () => {
|
||||
const lids = await this.handleLidPNUpdates([data]);
|
||||
this.logger.debug(
|
||||
`lid-mapping.update - '${lids.length}' synced lid to pn mapping`,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// Contacts
|
||||
ev.on('contacts.upsert', (data) => {
|
||||
this.withLock('contacts', () => this.onContactsUpsert(data));
|
||||
@@ -221,17 +228,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
}
|
||||
|
||||
private async onMessagingHistorySet(history) {
|
||||
const { contacts, chats, messages, isLatest } = history;
|
||||
if (isLatest) {
|
||||
this.logger.debug(
|
||||
'history sync - clearing all entities, got latest history',
|
||||
);
|
||||
await Promise.all([
|
||||
this.withLock('contacts', () => this.contactRepo.deleteAll()),
|
||||
this.withLock('chats', () => this.chatRepo.deleteAll()),
|
||||
this.withLock('messages', () => this.messagesRepo.deleteAll()),
|
||||
]);
|
||||
}
|
||||
const { contacts, chats, messages } = history;
|
||||
|
||||
await Promise.all([
|
||||
this.withLock('contacts', async () => {
|
||||
@@ -250,7 +247,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
}
|
||||
|
||||
private async syncMessagesHistory(messages) {
|
||||
const realMessages = messages.filter(isRealMessage);
|
||||
const realMessages = messages.filter(esm.b.isRealMessage);
|
||||
messages = messages.filter((msg) => this.jids.include(msg.key.remoteJid));
|
||||
await this.messagesRepo.upsert(realMessages);
|
||||
this.logger.info(
|
||||
@@ -266,7 +263,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
}
|
||||
let messages = update.messages;
|
||||
messages = messages.filter((msg) => this.jids.include(msg.key.remoteJid));
|
||||
const realMessages = messages.filter(isRealMessage);
|
||||
const realMessages = messages.filter(esm.b.isRealMessage);
|
||||
await this.messagesRepo.upsert(realMessages);
|
||||
this.logger.debug(
|
||||
`messages.upsert - ${messages.length} got messages, ${realMessages.length} real messages`,
|
||||
@@ -276,7 +273,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
private async onMessageUpdate(updates) {
|
||||
for (const update of updates) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const jid = jidNormalizedUser(update.key.remoteJid!);
|
||||
const jid = esm.b.jidNormalizedUser(update.key.remoteJid!);
|
||||
if (!this.jids.include(jid)) {
|
||||
continue;
|
||||
}
|
||||
@@ -319,7 +316,8 @@ export class NowebPersistentStore implements INowebStore {
|
||||
// In case of revoked messages - remove it
|
||||
// TODO: May be we should save the flag instead of completely removing the message
|
||||
const isYetRealMessage =
|
||||
isRealMessage(message, this.socket?.authState?.creds?.me?.id) || false;
|
||||
esm.b.isRealMessage(message, this.socket?.authState?.creds?.me?.id) ||
|
||||
false;
|
||||
if (isYetRealMessage) {
|
||||
await this.messagesRepo.upsertOne(message);
|
||||
} else {
|
||||
@@ -333,7 +331,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
await this.messagesRepo.deleteAllByJid(item.jid);
|
||||
return;
|
||||
}
|
||||
const jid = jidNormalizedUser(item.keys[0].remoteJid);
|
||||
const jid = esm.b.jidNormalizedUser(item.keys[0].remoteJid);
|
||||
const ids = item.keys.map((key) => key.id);
|
||||
await this.messagesRepo.deleteByJidByIds(jid, ids);
|
||||
}
|
||||
@@ -383,7 +381,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
// Remove the group if the current user is removed
|
||||
const myJid = this.socket?.authState?.creds?.me?.id;
|
||||
const participantsIncludesMe = lodash.find(participants, (p) =>
|
||||
areJidsSameUser(p, myJid),
|
||||
esm.b.areJidsSameUser(p, myJid),
|
||||
);
|
||||
if (participantsIncludesMe) {
|
||||
await this.groupRepo.deleteById(id);
|
||||
@@ -534,7 +532,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
);
|
||||
continue;
|
||||
}
|
||||
updateMessageWithReaction(msg, reaction);
|
||||
esm.b.updateMessageWithReaction(msg, reaction);
|
||||
await this.messagesRepo.upsertOne(msg);
|
||||
}
|
||||
}
|
||||
@@ -553,7 +551,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
);
|
||||
continue;
|
||||
}
|
||||
updateMessageWithReceipt(msg, receipt);
|
||||
esm.b.updateMessageWithReceipt(msg, receipt);
|
||||
await this.messagesRepo.upsertOne(msg);
|
||||
}
|
||||
}
|
||||
@@ -596,7 +594,7 @@ export class NowebPersistentStore implements INowebStore {
|
||||
if (!data) {
|
||||
return null;
|
||||
}
|
||||
return proto.WebMessageInfo.fromObject(data);
|
||||
return esm.b.proto.WebMessageInfo.create(data);
|
||||
}
|
||||
|
||||
getMessagesByJid(
|
||||
@@ -702,23 +700,23 @@ export class NowebPersistentStore implements INowebStore {
|
||||
let lids: LidToPN[] = [];
|
||||
for (const contact of contacts) {
|
||||
// contact.id = pn, contact.lid = lid
|
||||
if (isJidUser(contact.id) && isLidUser(contact.lid)) {
|
||||
if (isPnUser(contact.id) && isLidUser(contact.lid)) {
|
||||
lids.push({
|
||||
pn: contact.id,
|
||||
id: contact.lid,
|
||||
});
|
||||
}
|
||||
// contact.pn = pn, contact.lid = lid
|
||||
else if (isJidUser(contact.jid) && isLidUser(contact.lid)) {
|
||||
// contact.phoneNumber = pn, contact.lid = lid
|
||||
else if (isPnUser(contact.phoneNumber) && isLidUser(contact.lid)) {
|
||||
lids.push({
|
||||
pn: contact.jid,
|
||||
pn: contact.phoneNumber,
|
||||
id: contact.lid,
|
||||
});
|
||||
}
|
||||
// contact.pn = pn, contact.id = lid
|
||||
else if (isJidUser(contact.jid) && isLidUser(contact.id)) {
|
||||
// contact.phoneNumber = pn, contact.id = lid
|
||||
else if (isPnUser(contact.phoneNumber) && isLidUser(contact.id)) {
|
||||
lids.push({
|
||||
pn: contact.jid,
|
||||
pn: contact.phoneNumber,
|
||||
id: contact.id,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11,28 +11,19 @@ import type {
|
||||
WAMessageCursor,
|
||||
WAMessageKey,
|
||||
} from '@adiwajshing/baileys/lib/Types';
|
||||
import { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import {
|
||||
import type { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import * as lodash from 'lodash';
|
||||
import type {
|
||||
LabelAssociation,
|
||||
LabelAssociationType,
|
||||
MessageLabelAssociation,
|
||||
} from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
import {
|
||||
md5,
|
||||
toNumber,
|
||||
updateMessageWithReaction,
|
||||
updateMessageWithReceipt,
|
||||
} from '@adiwajshing/baileys/lib/Utils';
|
||||
import {
|
||||
jidDecode,
|
||||
jidNormalizedUser,
|
||||
} from '@adiwajshing/baileys/lib/WABinary';
|
||||
import { proto } from '@adiwajshing/baileys/WAProto';
|
||||
import type { Comparable } from '@adiwajshing/keyed-db/lib/Types';
|
||||
import type { Logger } from 'pino';
|
||||
|
||||
import makeOrderedDictionary from './make-ordered-dictionary';
|
||||
import { ObjectRepository } from './object-repository';
|
||||
import { LabelAssociationType } from '@waha/core/engines/noweb/labels/LabelAssociationType';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const KeyedDB = require('@adiwajshing/keyed-db').default;
|
||||
@@ -137,7 +128,7 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
isLatest,
|
||||
syncType,
|
||||
}) => {
|
||||
if (syncType === proto.HistorySync.HistorySyncType.ON_DEMAND) {
|
||||
if (syncType === esm.b.proto.HistorySync.HistorySyncType.ON_DEMAND) {
|
||||
return; // FOR NOW,
|
||||
//TODO: HANDLE
|
||||
}
|
||||
@@ -187,10 +178,11 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
} else {
|
||||
const contactHashes = await Promise.all(
|
||||
Object.keys(contacts).map(async (contactId) => {
|
||||
const { user } = jidDecode(contactId)!;
|
||||
const { user } = esm.b.jidDecode(contactId)!;
|
||||
return [
|
||||
contactId,
|
||||
(await md5(Buffer.from(user + 'WA_ADD_NOTIF', 'utf8')))
|
||||
esm.b
|
||||
.md5(Buffer.from(user + 'WA_ADD_NOTIF', 'utf8'))
|
||||
.toString('base64')
|
||||
.slice(0, 3),
|
||||
];
|
||||
@@ -279,7 +271,7 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
case 'append':
|
||||
case 'notify':
|
||||
for (const msg of newMessages) {
|
||||
const jid = jidNormalizedUser(msg.key.remoteJid!);
|
||||
const jid = esm.b.jidNormalizedUser(msg.key.remoteJid!);
|
||||
const list = assertMessageList(jid);
|
||||
list.upsert(msg, 'append');
|
||||
|
||||
@@ -287,7 +279,9 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
ev.emit('chats.upsert', [
|
||||
{
|
||||
id: jid,
|
||||
conversationTimestamp: toNumber(msg.messageTimestamp as any),
|
||||
conversationTimestamp: lodash.toNumber(
|
||||
msg.messageTimestamp as any,
|
||||
),
|
||||
unreadCount: 1,
|
||||
},
|
||||
]);
|
||||
@@ -299,7 +293,7 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
});
|
||||
ev.on('messages.update', (updates) => {
|
||||
for (const { update, key } of updates) {
|
||||
const list = assertMessageList(jidNormalizedUser(key.remoteJid!));
|
||||
const list = assertMessageList(esm.b.jidNormalizedUser(key.remoteJid!));
|
||||
if (update?.status) {
|
||||
const listStatus = list.get(key.id!)?.status;
|
||||
if (listStatus && update?.status <= listStatus) {
|
||||
@@ -382,7 +376,7 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
const obj = messages[key.remoteJid!];
|
||||
const msg = obj?.get(key.id!);
|
||||
if (msg) {
|
||||
updateMessageWithReceipt(msg, receipt);
|
||||
esm.b.updateMessageWithReceipt(msg, receipt);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -392,7 +386,7 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
const obj = messages[key.remoteJid!];
|
||||
const msg = obj?.get(key.id!);
|
||||
if (msg) {
|
||||
updateMessageWithReaction(msg, reaction);
|
||||
esm.b.updateMessageWithReaction(msg, reaction);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -420,7 +414,7 @@ export default (config: BaileysInMemoryStoreConfig) => {
|
||||
for (const jid in json.messages) {
|
||||
const list = assertMessageList(jid);
|
||||
for (const msg of json.messages[jid]) {
|
||||
list.upsert(proto.WebMessageInfo.fromObject(msg), 'append');
|
||||
list.upsert(esm.b.proto.WebMessageInfo.create(msg), 'append');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { WAMessage } from '@adiwajshing/baileys';
|
||||
import { LabelAssociation } from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
import type { WAMessage } from '@adiwajshing/baileys';
|
||||
import type { LabelAssociation } from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
|
||||
export const NowebMessagesMetadata = new Map()
|
||||
.set('jid', (msg: WAMessage) => msg.key.remoteJid)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Chat } from '@adiwajshing/baileys';
|
||||
import type { Chat } from '@adiwajshing/baileys';
|
||||
import { SqlKVRepository } from '@waha/core/storage/sql/SqlKVRepository';
|
||||
import { OverviewFilter } from '@waha/structures/chats.dto';
|
||||
import { PaginationParams } from '@waha/structures/pagination.dto';
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import {
|
||||
LabelAssociation,
|
||||
LabelAssociationType,
|
||||
} from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
import type { LabelAssociation } from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
import { SqlKVRepository } from '@waha/core/storage/sql/SqlKVRepository';
|
||||
import { LabelAssociationType } from '@waha/core/engines/noweb/labels/LabelAssociationType';
|
||||
|
||||
export class SqlLabelAssociationsMethods {
|
||||
constructor(private repository: SqlKVRepository<any>) {}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { BufferJSON } from '@adiwajshing/baileys/lib/Utils';
|
||||
import {
|
||||
convertProtobufToPlainObject,
|
||||
replaceLongsWithNumber,
|
||||
} from '@waha/core/engines/noweb/utils';
|
||||
import { Sqlite3KVRepository } from '@waha/core/storage/sqlite3/Sqlite3KVRepository';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
/**
|
||||
* Key value repository with extra metadata
|
||||
@@ -13,11 +13,11 @@ export class NOWEBSqlite3KVRepository<
|
||||
Entity,
|
||||
> extends Sqlite3KVRepository<Entity> {
|
||||
protected stringify(data: any): string {
|
||||
return JSON.stringify(data, BufferJSON.replacer);
|
||||
return JSON.stringify(data, esm.b.BufferJSON.replacer);
|
||||
}
|
||||
|
||||
protected parse(row: any): any {
|
||||
return JSON.parse(row.data, BufferJSON.reviver);
|
||||
return JSON.parse(row.data, esm.b.BufferJSON.reviver);
|
||||
}
|
||||
|
||||
protected dump(entity: Entity) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Chat } from '@adiwajshing/baileys';
|
||||
import type { Chat } from '@adiwajshing/baileys';
|
||||
import { NowebChatSchema } from '@waha/core/engines/noweb/store/schemas';
|
||||
import { SqlChatMethods } from '@waha/core/engines/noweb/store/sql/SqlChatMethods';
|
||||
import { OverviewFilter } from '@waha/structures/chats.dto';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Contact } from '@adiwajshing/baileys';
|
||||
import type { Contact } from '@adiwajshing/baileys';
|
||||
import { NowebContactSchema } from '@waha/core/engines/noweb/store/schemas';
|
||||
import { KnexPaginator } from '@waha/utils/Paginator';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
import type { GroupMetadata } from '@adiwajshing/baileys/lib/Types/GroupMetadata';
|
||||
import { IGroupRepository } from '@waha/core/engines/noweb/store/IGroupRepository';
|
||||
import { NowebGroupsSchema } from '@waha/core/engines/noweb/store/schemas';
|
||||
import { KnexPaginator } from '@waha/utils/Paginator';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {
|
||||
import type {
|
||||
LabelAssociation,
|
||||
LabelAssociationType,
|
||||
} from '@adiwajshing/baileys/lib/Types/LabelAssociation';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import type { Label } from '@adiwajshing/baileys/lib/Types/Label';
|
||||
import { ILabelsRepository } from '@waha/core/engines/noweb/store/ILabelsRepository';
|
||||
import { NowebLabelsSchema } from '@waha/core/engines/noweb/store/schemas';
|
||||
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import {
|
||||
import type {
|
||||
AuthenticationCreds,
|
||||
AuthenticationState,
|
||||
proto,
|
||||
} from '@adiwajshing/baileys';
|
||||
import { BufferJSON, initAuthCreds } from '@adiwajshing/baileys/lib/Utils';
|
||||
import { mkdir, readFile, stat, unlink } from 'fs/promises';
|
||||
import { join } from 'path';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const writeFileAtomic = require('write-file-atomic');
|
||||
@@ -43,7 +42,7 @@ export const useMultiFileAuthState = async (
|
||||
return fileLock.acquire(filePath, () =>
|
||||
writeFileAtomic(
|
||||
join(filePath),
|
||||
JSON.stringify(data, BufferJSON.replacer),
|
||||
JSON.stringify(data, esm.b.BufferJSON.replacer),
|
||||
),
|
||||
);
|
||||
};
|
||||
@@ -54,7 +53,7 @@ export const useMultiFileAuthState = async (
|
||||
const data = await fileLock.acquire(filePath, () =>
|
||||
readFile(filePath, { encoding: 'utf-8' }),
|
||||
);
|
||||
return JSON.parse(data, BufferJSON.reviver);
|
||||
return JSON.parse(data, esm.b.BufferJSON.reviver);
|
||||
} catch (error) {
|
||||
return null;
|
||||
}
|
||||
@@ -84,7 +83,7 @@ export const useMultiFileAuthState = async (
|
||||
file?.replace(/\//g, '__')?.replace(/:/g, '-') || '';
|
||||
|
||||
const creds: AuthenticationCreds =
|
||||
(await readData('creds.json')) || initAuthCreds();
|
||||
(await readData('creds.json')) || esm.b.initAuthCreds();
|
||||
|
||||
return {
|
||||
state: {
|
||||
@@ -96,7 +95,7 @@ export const useMultiFileAuthState = async (
|
||||
ids.map(async (id) => {
|
||||
let value = await readData(`${type}-${id}.json`);
|
||||
if (type === 'app-state-sync-key' && value) {
|
||||
value = proto.Message.AppStateSyncKeyData.fromObject(value);
|
||||
value = esm.b.proto.Message.AppStateSyncKeyData.create(value);
|
||||
}
|
||||
|
||||
data[id] = value;
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import { extractMessageContent, proto } from '@adiwajshing/baileys';
|
||||
import type { proto } from '@adiwajshing/baileys';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
export function extractMediaContent(
|
||||
content: any | proto.IMessage | null | undefined,
|
||||
) {
|
||||
content = extractMessageContent(content);
|
||||
content = esm.b.extractMessageContent(content);
|
||||
const mediaContent =
|
||||
content?.documentMessage ||
|
||||
content?.imageMessage ||
|
||||
|
||||
@@ -223,7 +223,7 @@ export class WebjsClientCore extends Client {
|
||||
// @ts-ignore
|
||||
await window.Store.SendStatus.sendStatusTextMsgAction(status);
|
||||
// @ts-ignore
|
||||
const meUser = window.Store.User.getMeUser();
|
||||
const meUser = window.Store.User.getMaybeMePnUser();
|
||||
// @ts-ignore
|
||||
const myStatus = window.Store.Status.getModelsArray().findLast(
|
||||
(x) => x.id == meUser,
|
||||
|
||||
@@ -1,14 +1,7 @@
|
||||
import {
|
||||
areJidsSameUser,
|
||||
BinaryNode,
|
||||
getBinaryNodeChildren,
|
||||
getStatusFromReceiptType,
|
||||
isJidGroup,
|
||||
isJidStatusBroadcast,
|
||||
jidEncode,
|
||||
jidNormalizedUser,
|
||||
proto,
|
||||
} from '@adiwajshing/baileys';
|
||||
import type { proto } from '@adiwajshing/baileys';
|
||||
import type { BinaryNode } from '@adiwajshing/baileys';
|
||||
import { isJidGroup, isJidStatusBroadcast } from '@waha/core/utils/jids';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
export interface ReceiptEvent {
|
||||
key: proto.IMessageKey;
|
||||
@@ -39,7 +32,7 @@ export function jid(field: any) {
|
||||
? 's.whatsapp.net'
|
||||
: 'lid';
|
||||
}
|
||||
return jidEncode(data.user, server, data.device);
|
||||
return esm.b.jidEncode(data.user, server, data.device);
|
||||
}
|
||||
|
||||
export function TagReceiptNodeToReceiptEvent(
|
||||
@@ -47,17 +40,17 @@ export function TagReceiptNodeToReceiptEvent(
|
||||
me: Me,
|
||||
): ReceiptEvent[] {
|
||||
const { attrs, content } = node;
|
||||
const status = getStatusFromReceiptType(attrs.type);
|
||||
const status = esm.b.getStatusFromReceiptType(attrs.type);
|
||||
if (status == null) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const from = jidNormalizedUser(jid(attrs.from));
|
||||
const participant = jidNormalizedUser(jid(attrs.participant));
|
||||
const recipient = jidNormalizedUser(jid(attrs.recipient));
|
||||
const from = esm.b.jidNormalizedUser(jid(attrs.from));
|
||||
const participant = esm.b.jidNormalizedUser(jid(attrs.participant));
|
||||
const recipient = esm.b.jidNormalizedUser(jid(attrs.recipient));
|
||||
|
||||
const isLid = from.includes('lid');
|
||||
const isNodeFromMe = areJidsSameUser(
|
||||
const isNodeFromMe = esm.b.areJidsSameUser(
|
||||
participant || from,
|
||||
isLid ? me?.lid : me?.id,
|
||||
);
|
||||
@@ -66,7 +59,7 @@ export function TagReceiptNodeToReceiptEvent(
|
||||
|
||||
// basically, we only want to know when a message from us has been delivered to/read by the other person
|
||||
// or another device of ours has read some messages
|
||||
if (status < proto.WebMessageInfo.Status.SERVER_ACK && isNodeFromMe) {
|
||||
if (status < esm.b.proto.WebMessageInfo.Status.SERVER_ACK && isNodeFromMe) {
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -78,7 +71,7 @@ export function TagReceiptNodeToReceiptEvent(
|
||||
|
||||
const ids = [attrs.id];
|
||||
if (Array.isArray(content)) {
|
||||
const items = getBinaryNodeChildren(content[0], 'item');
|
||||
const items = esm.b.getBinaryNodeChildren(content[0], 'item');
|
||||
ids.push(...items.map((i) => i.attrs.id));
|
||||
}
|
||||
|
||||
@@ -134,12 +127,12 @@ function handleGroupedReceipts(
|
||||
const participantKey = participants.attrs?.key;
|
||||
if (!participantKey) continue;
|
||||
|
||||
const users = getBinaryNodeChildren(participants, 'user');
|
||||
const users = esm.b.getBinaryNodeChildren(participants, 'user');
|
||||
for (const user of users) {
|
||||
const userAttrs = user.attrs;
|
||||
if (!userAttrs) continue;
|
||||
|
||||
const userJid = jidNormalizedUser(jid(userAttrs.jid));
|
||||
const userJid = esm.b.jidNormalizedUser(jid(userAttrs.jid));
|
||||
if (!userJid) continue;
|
||||
|
||||
key.participant = fromMe ? (isLid ? me.lid : me.id) : userJid;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { BinaryNode, WAPresence } from '@adiwajshing/baileys';
|
||||
import { toCusFormat } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import type { BinaryNode, WAPresence } from '@adiwajshing/baileys';
|
||||
import { WAHAPresenceStatus } from '@waha/structures/enums.dto';
|
||||
import { WAHAChatPresences } from '@waha/structures/presence.dto';
|
||||
|
||||
import { jid } from './ack.webjs';
|
||||
import { toCusFormat } from '@waha/core/utils/jids';
|
||||
|
||||
export function TagPresenceToPresence(node: BinaryNode): WAHAChatPresences {
|
||||
const { attrs } = node;
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
import { isJidGroup, isJidStatusBroadcast } from '@adiwajshing/baileys';
|
||||
import { UnprocessableEntityException } from '@nestjs/common';
|
||||
import {
|
||||
getChannelInviteLink,
|
||||
WhatsappSession,
|
||||
} from '@waha/core/abc/session.abc';
|
||||
import {
|
||||
getFromToParticipant,
|
||||
toCusFormat,
|
||||
} from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import { getFromToParticipant } from '@waha/core/engines/noweb/session.noweb.core';
|
||||
import {
|
||||
ReceiptEvent,
|
||||
TagReceiptNodeToReceiptEvent,
|
||||
@@ -68,6 +64,7 @@ import {
|
||||
CheckNumberStatusQuery,
|
||||
EditMessageRequest,
|
||||
MessageButtonReply,
|
||||
MessageContactVcardRequest,
|
||||
MessageFileRequest,
|
||||
MessageForwardRequest,
|
||||
MessageImageRequest,
|
||||
@@ -80,6 +77,7 @@ import {
|
||||
SendSeenRequest,
|
||||
WANumberExistResult,
|
||||
} from '@waha/structures/chatting.dto';
|
||||
import { toVcardV3 } from '@waha/core/vcard';
|
||||
import {
|
||||
ContactQuery,
|
||||
ContactRequest,
|
||||
@@ -149,6 +147,11 @@ import {
|
||||
import { Message as MessageInstance } from 'whatsapp-web.js/src/structures';
|
||||
|
||||
import { WAJSPresenceChatStateType, WebJSPresence } from './types';
|
||||
import {
|
||||
isJidGroup,
|
||||
isJidStatusBroadcast,
|
||||
toCusFormat,
|
||||
} from '@waha/core/utils/jids';
|
||||
|
||||
export interface WebJSConfig {
|
||||
webVersion?: string;
|
||||
@@ -662,6 +665,28 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
|
||||
return message.edit(request.text, options);
|
||||
}
|
||||
|
||||
async sendContactVCard(request: MessageContactVcardRequest) {
|
||||
const chatId = this.ensureSuffix(request.chatId);
|
||||
const vcards = request.contacts.map((el) => toVcardV3(el as any));
|
||||
const options = this.getMessageOptions(request);
|
||||
|
||||
// Single vCard: pass raw vcard text as a message body.
|
||||
// WEBJS will detect BEGIN:VCARD when parseVCards=true and send as a contact card.
|
||||
if (vcards.length <= 1) {
|
||||
const vcard = vcards[0] || '';
|
||||
return this.whatsapp.sendMessage(chatId, vcard, options);
|
||||
}
|
||||
|
||||
// Multiple vCards: send as a single multi_vcard message using extra options.
|
||||
const extra = {
|
||||
type: 'multi_vcard',
|
||||
vcardList: vcards.map((v) => ({ vcard: v })),
|
||||
body: null,
|
||||
} as any;
|
||||
|
||||
return this.whatsapp.sendMessage(chatId, '', { ...options, extra });
|
||||
}
|
||||
|
||||
reply(request: MessageReplyRequest) {
|
||||
const options = this.getMessageOptions(request);
|
||||
return this.whatsapp.sendMessage(
|
||||
@@ -1239,9 +1264,11 @@ export class WhatsappSessionWebJSCore extends WhatsappSession {
|
||||
}
|
||||
|
||||
protected ChannelMetadataToChannel(metadata: any): Channel {
|
||||
let role = metadata.membershipType.toUpperCase();
|
||||
let role = metadata.membershipType?.toUpperCase();
|
||||
if (role === 'VIEWER') {
|
||||
role = ChannelRole.GUEST;
|
||||
} else if (!role) {
|
||||
role = ChannelRole.GUEST;
|
||||
}
|
||||
return {
|
||||
id: metadata.id,
|
||||
|
||||
@@ -62,7 +62,10 @@ export class MediaManager implements IMediaManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
const extension = mime.extension(mimetype);
|
||||
let extension = mime.extension(mimetype);
|
||||
if (mimetype == 'application/was' && !extension) {
|
||||
extension = 'zip';
|
||||
}
|
||||
const mediaData: MediaData = {
|
||||
session: session,
|
||||
message: {
|
||||
@@ -125,7 +128,6 @@ export class MediaManager implements IMediaManager {
|
||||
try {
|
||||
media.filename = processor.getFilename(message);
|
||||
media.mimetype = processor.getMimetype(message);
|
||||
media.filename = processor.getFilename(message);
|
||||
const data = await this.processMediaInternal(processor, message, session);
|
||||
media = { ...media, ...data };
|
||||
} catch (err) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { isJidGroup, WAMessageKey } from '@adiwajshing/baileys';
|
||||
import type { WAMessageKey } from '@adiwajshing/baileys';
|
||||
import { parseMessageIdSerialized } from '@waha/core/utils/ids';
|
||||
import { toJID } from '@waha/core/utils/jids';
|
||||
import { isJidGroup, toJID } from '@waha/core/utils/jids';
|
||||
import {
|
||||
GetChatMessagesFilter,
|
||||
GetChatMessagesQuery,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { WAMessageKey } from '@adiwajshing/baileys';
|
||||
import type { WAMessageKey } from '@adiwajshing/baileys';
|
||||
import { toJID } from '@waha/core/utils/jids';
|
||||
|
||||
/**
|
||||
|
||||
+94
-10
@@ -1,12 +1,5 @@
|
||||
import {
|
||||
isJidGroup,
|
||||
isJidMetaIa,
|
||||
isJidStatusBroadcast,
|
||||
} from '@adiwajshing/baileys';
|
||||
import {
|
||||
isJidBroadcast,
|
||||
isLidUser,
|
||||
} from '@adiwajshing/baileys/lib/WABinary/jid-utils';
|
||||
import type { WAMessageKey } from '@adiwajshing/baileys';
|
||||
import { ensureSuffix } from '@waha/core/abc/session.abc';
|
||||
|
||||
export function isJidNewsletter(jid: string) {
|
||||
return jid?.endsWith('@newsletter');
|
||||
@@ -16,6 +9,33 @@ export function isJidCus(jid: string) {
|
||||
return jid?.endsWith('@c.us');
|
||||
}
|
||||
|
||||
export function isJidGroup(jid: string) {
|
||||
return typeof jid === 'string' && jid.endsWith('@g.us');
|
||||
}
|
||||
|
||||
export function isJidStatusBroadcast(jid: string) {
|
||||
return jid === 'status@broadcast';
|
||||
}
|
||||
|
||||
export function isJidBroadcast(jid: string) {
|
||||
return typeof jid === 'string' && jid.endsWith('@broadcast');
|
||||
}
|
||||
|
||||
export function isJidMetaAI(jid: string) {
|
||||
return typeof jid === 'string' && jid.endsWith('@meta.ai');
|
||||
}
|
||||
|
||||
export function isLidUser(jid: string) {
|
||||
return typeof jid === 'string' && jid.endsWith('@lid');
|
||||
}
|
||||
|
||||
export function isPnUser(jid: string) {
|
||||
return (
|
||||
typeof jid === 'string' &&
|
||||
(jid.endsWith('@s.whatsapp.net') || jid.endsWith('@c.us'))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert from 11111111111@c.us to 11111111111@s.whatsapp.net
|
||||
* @param chatId
|
||||
@@ -33,7 +53,7 @@ export function toJID(chatId) {
|
||||
if (isLidUser(chatId)) {
|
||||
return chatId;
|
||||
}
|
||||
if (isJidMetaIa(chatId)) {
|
||||
if (isJidMetaAI(chatId)) {
|
||||
return chatId;
|
||||
}
|
||||
const number = chatId.split('@')[0];
|
||||
@@ -67,3 +87,67 @@ export class JidFilter {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export interface Jids {
|
||||
lid?: string;
|
||||
pn?: string;
|
||||
}
|
||||
|
||||
export function jidsFromKey(key: WAMessageKey): Jids | null {
|
||||
// DM
|
||||
if (isLidUser(key.remoteJid)) {
|
||||
return {
|
||||
lid: key.remoteJid,
|
||||
pn: key.remoteJidAlt,
|
||||
};
|
||||
} else if (isPnUser(key.remoteJid)) {
|
||||
return {
|
||||
lid: key.remoteJidAlt,
|
||||
pn: key.remoteJid,
|
||||
};
|
||||
}
|
||||
// Groups
|
||||
else if (isLidUser(key.participant)) {
|
||||
return {
|
||||
lid: key.participant,
|
||||
pn: key.participantAlt,
|
||||
};
|
||||
} else if (isPnUser(key.participant)) {
|
||||
return {
|
||||
lid: key.remoteJid,
|
||||
pn: key.participantAlt,
|
||||
};
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert from 11111111111@s.whatsapp.net to 11111111111@c.us
|
||||
*/
|
||||
export function toCusFormat(remoteJid) {
|
||||
if (!remoteJid) {
|
||||
return remoteJid;
|
||||
}
|
||||
if (isJidGroup(remoteJid)) {
|
||||
return remoteJid;
|
||||
}
|
||||
if (isJidBroadcast(remoteJid)) {
|
||||
return remoteJid;
|
||||
}
|
||||
if (isLidUser(remoteJid)) {
|
||||
return remoteJid;
|
||||
}
|
||||
if (isJidNewsletter(remoteJid)) {
|
||||
return remoteJid;
|
||||
}
|
||||
if (!remoteJid) {
|
||||
return;
|
||||
}
|
||||
if (remoteJid == 'me') {
|
||||
return remoteJid;
|
||||
}
|
||||
let number = remoteJid.split('@')[0];
|
||||
// remove :{device} part
|
||||
number = number.split(':')[0];
|
||||
return ensureSuffix(number);
|
||||
}
|
||||
+3
-1
@@ -17,6 +17,7 @@ import { AppModuleCore } from './core/app.module.core';
|
||||
import { SwaggerConfiguratorCore } from './core/SwaggerConfiguratorCore';
|
||||
import { AllExceptionsFilter } from './nestjs/AllExceptionsFilter';
|
||||
import { getWAHAVersion, VERSION, WAHAVersion } from './version';
|
||||
import { loadESMModules } from '@waha/vendor/esm';
|
||||
|
||||
const logger: Logger = pino({
|
||||
level: getPinoLogLevel(),
|
||||
@@ -48,8 +49,9 @@ process.on('SIGTERM', () => {
|
||||
});
|
||||
|
||||
async function loadModules(): Promise<typeof AppModuleCore> {
|
||||
const version = getWAHAVersion();
|
||||
await loadESMModules();
|
||||
|
||||
const version = getWAHAVersion();
|
||||
if (version === WAHAVersion.CORE) {
|
||||
const { AppModuleCore } = await import('./core/app.module.core');
|
||||
return AppModuleCore;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { BufferJSON } from '@adiwajshing/baileys/lib/Utils';
|
||||
import {
|
||||
CallHandler,
|
||||
ExecutionContext,
|
||||
@@ -8,6 +7,7 @@ import {
|
||||
} from '@nestjs/common';
|
||||
import { Observable } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import esm from '@waha/vendor/esm';
|
||||
|
||||
@Injectable()
|
||||
export class BufferJsonReplacerInterceptor implements NestInterceptor {
|
||||
@@ -27,7 +27,7 @@ export class BufferJsonReplacerInterceptor implements NestInterceptor {
|
||||
return data;
|
||||
}
|
||||
|
||||
return JSON.parse(JSON.stringify(data, BufferJSON.replacer));
|
||||
return JSON.parse(JSON.stringify(data, esm.b.BufferJSON.replacer));
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -111,6 +111,11 @@ export class WAMessageEditedBody extends WAMessage {
|
||||
editedMessageId?: string;
|
||||
}
|
||||
|
||||
export class SessionStatusPoint {
|
||||
status: WAHASessionStatus;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
export class WASessionStatusBody {
|
||||
@ApiProperty({
|
||||
example: 'default',
|
||||
@@ -118,6 +123,8 @@ export class WASessionStatusBody {
|
||||
name: string;
|
||||
|
||||
status: WAHASessionStatus;
|
||||
|
||||
statuses: SessionStatusPoint[];
|
||||
}
|
||||
|
||||
export class WAHAWebhook<Payload = any> {
|
||||
|
||||
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* NestJS is not yet supporting ESM and work in CommonJS mode
|
||||
* We create a single place where we'll load all ESM modules and export it
|
||||
*
|
||||
* Centralized dynamic loader for ESM-only Baileys from CommonJS/TS code
|
||||
*/
|
||||
|
||||
type Baileys = typeof import('@adiwajshing/baileys');
|
||||
|
||||
const esm: { b: Baileys } = {
|
||||
b: null,
|
||||
};
|
||||
|
||||
const modules = {
|
||||
b: '@adiwajshing/baileys',
|
||||
};
|
||||
|
||||
async function loadESMModules(): Promise<void> {
|
||||
for (const [key, value] of Object.entries(modules)) {
|
||||
if (esm[key]) {
|
||||
// Make sure we call it ONCE on setup
|
||||
throw new Error(`Module '${key}' is already loaded`);
|
||||
}
|
||||
esm[key] = await import(value);
|
||||
}
|
||||
}
|
||||
|
||||
export { loadESMModules };
|
||||
export default esm;
|
||||
+1
-1
@@ -30,7 +30,7 @@ export function getWAHAVersion(): WAHAVersion {
|
||||
}
|
||||
|
||||
export const VERSION: WAHAEnvironment = {
|
||||
version: '2025.9.3',
|
||||
version: '2025.9.5',
|
||||
engine: getEngineName(),
|
||||
tier: getWAHAVersion(),
|
||||
browser:
|
||||
|
||||
+2
-2
@@ -2,11 +2,11 @@
|
||||
"waha": {
|
||||
"gows": {
|
||||
"repo": "devlikeapro/gows",
|
||||
"ref": "v1.0.14"
|
||||
"ref": "v1.0.15"
|
||||
},
|
||||
"dashboard": {
|
||||
"repo": "devlikeapro/dashboard",
|
||||
"ref": "042f5bd9cc14440fde062d313bdb8e1bdc511a50"
|
||||
"ref": "f3e0934f496f7557bdda67f38efa197df44ceabe"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,25 +5,25 @@ __metadata:
|
||||
version: 6
|
||||
cacheKey: 8
|
||||
|
||||
"@adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-2025-07-04":
|
||||
version: 6.7.18
|
||||
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=4633d3145f768231c8a45bfb023a2c13094d818c"
|
||||
"@adiwajshing/baileys@github:devlikeapro/Baileys#fork-master-2025-09-21":
|
||||
version: 7.0.0-rc.3
|
||||
resolution: "@adiwajshing/baileys@https://github.com/devlikeapro/Baileys.git#commit=7198ccbb5f571dd3f7420f112379996bc41fa659"
|
||||
dependencies:
|
||||
"@cacheable/node-cache": ^1.4.0
|
||||
"@hapi/boom": ^9.1.3
|
||||
async-mutex: ^0.5.0
|
||||
axios: ^1.6.0
|
||||
libsignal: "github:WhiskeySockets/libsignal-node"
|
||||
lodash: ^4.17.21
|
||||
music-metadata: ^7.12.3
|
||||
libsignal: "git+https://github.com/whiskeysockets/libsignal-node"
|
||||
lru-cache: ^11.1.0
|
||||
music-metadata: ^11.7.0
|
||||
pino: ^9.6
|
||||
protobufjs: ^7.2.4
|
||||
ws: ^8.13.0
|
||||
peerDependencies:
|
||||
audio-decode: ^2.1.3
|
||||
jimp: ^0.16.1
|
||||
jimp: ^1.6.0
|
||||
link-preview-js: ^3.0.0
|
||||
sharp: ^0.32.6
|
||||
sharp: "*"
|
||||
peerDependenciesMeta:
|
||||
audio-decode:
|
||||
optional: true
|
||||
@@ -31,9 +31,7 @@ __metadata:
|
||||
optional: true
|
||||
link-preview-js:
|
||||
optional: true
|
||||
sharp:
|
||||
optional: true
|
||||
checksum: 7dfd2e5029c507ba1298253bad83e6cde5c5a27f2cf88c80723a0a00db7c9fe1c7a1877b2a32bbb7527640b282e5e728f8e8b139d51f5586abb68be3599035f7
|
||||
checksum: bb8f5d9dac5faca5034d829507f70f4d3b71d821bec4ebeab645d774811b12962c4e0a5625d2cb6040e32cc653879acc8911188e9a558b03bd6d696eaefc68ae
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1173,6 +1171,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@borewit/text-codec@npm:^0.1.0":
|
||||
version: 0.1.1
|
||||
resolution: "@borewit/text-codec@npm:0.1.1"
|
||||
checksum: 94c1fef259292d77c98ad1c2ffa66e366d752153962d37a7999489ada9632a9d36d3fe291759791705b1f501e33cd7b65128d193e0ca8a955107fe5cd8fde548
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@borewit/text-codec@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "@borewit/text-codec@npm:0.2.0"
|
||||
checksum: 64f073206e96c7c5bef416d23ba185b67e9470b3dda3de42ec1b7cfa901071d9519f89ed49a452575b6148532a7ac6d0c57592e7acca346ca6b4d6895ba8ecdc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@bull-board/api@npm:6.11.0, @bull-board/api@npm:^6.9.1":
|
||||
version: 6.11.0
|
||||
resolution: "@bull-board/api@npm:6.11.0"
|
||||
@@ -4603,7 +4615,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"async@npm:>=0.2.9, async@npm:^3.2.3, async@npm:^3.2.4":
|
||||
"async@npm:^0.2.9":
|
||||
version: 0.2.10
|
||||
resolution: "async@npm:0.2.10"
|
||||
checksum: 9ea83419ba67dc4ecf42d4eb0d93ce0ac80a67cabb612f160ed096aef5d001e3184ec9e9be5d4dc39b2c51a34e2ae16f9b21d737068b0f615fccb4eea16d0138
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"async@npm:^3.2.3, async@npm:^3.2.4":
|
||||
version: 3.2.6
|
||||
resolution: "async@npm:3.2.6"
|
||||
checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682
|
||||
@@ -5931,6 +5950,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:^4.4.3":
|
||||
version: 4.4.3
|
||||
resolution: "debug@npm:4.4.3"
|
||||
dependencies:
|
||||
ms: ^2.1.3
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"decamelize@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "decamelize@npm:1.2.0"
|
||||
@@ -6725,7 +6756,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"file-type@npm:16.5.4, file-type@npm:^16.5.4":
|
||||
"file-type@npm:16.5.4":
|
||||
version: 16.5.4
|
||||
resolution: "file-type@npm:16.5.4"
|
||||
dependencies:
|
||||
@@ -6736,7 +6767,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"file-type@npm:21.0.0":
|
||||
"file-type@npm:21.0.0, file-type@npm:^21.0.0":
|
||||
version: 21.0.0
|
||||
resolution: "file-type@npm:21.0.0"
|
||||
dependencies:
|
||||
@@ -6797,13 +6828,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fluent-ffmpeg@npm:2.1.2":
|
||||
version: 2.1.2
|
||||
resolution: "fluent-ffmpeg@npm:2.1.2"
|
||||
"fluent-ffmpeg@npm:2.1.3":
|
||||
version: 2.1.3
|
||||
resolution: "fluent-ffmpeg@npm:2.1.3"
|
||||
dependencies:
|
||||
async: ">=0.2.9"
|
||||
async: ^0.2.9
|
||||
which: ^1.1.1
|
||||
checksum: ab7ed909486298f33b991af051c38e40410ae5b03b0b6d33d0855636a0b56330ffe9efed6c7eedb00f1c6c713c795cbdb283f6f2216db925ae5e737a22c6a97f
|
||||
checksum: 89d548527c3bb1746acb4c4fa8dc3f660397fcdf598ce455f5a6ec0df2df402ed977f329279e695c549df52822590e3f38c815e8efd740a47c00e9e0f685f083
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -8667,6 +8698,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lru-cache@npm:^11.1.0":
|
||||
version: 11.2.1
|
||||
resolution: "lru-cache@npm:11.2.1"
|
||||
checksum: d54584b6f03e6de64c9e9f01e48abce5a9bc04318874d5204cee9e4275719544624d51eea6a167672576794af8bba3a7cfc23455d28b270a278cc387d1965131
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lru-cache@npm:^5.1.1":
|
||||
version: 5.1.1
|
||||
resolution: "lru-cache@npm:5.1.1"
|
||||
@@ -9278,18 +9316,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"music-metadata@npm:^7.12.3":
|
||||
version: 7.14.0
|
||||
resolution: "music-metadata@npm:7.14.0"
|
||||
"music-metadata@npm:^11.7.0":
|
||||
version: 11.9.0
|
||||
resolution: "music-metadata@npm:11.9.0"
|
||||
dependencies:
|
||||
"@borewit/text-codec": ^0.2.0
|
||||
"@tokenizer/token": ^0.3.0
|
||||
content-type: ^1.0.5
|
||||
debug: ^4.3.4
|
||||
file-type: ^16.5.4
|
||||
debug: ^4.4.3
|
||||
file-type: ^21.0.0
|
||||
media-typer: ^1.1.0
|
||||
strtok3: ^6.3.0
|
||||
token-types: ^4.2.1
|
||||
checksum: e1583c3d6519ea3ce1f451e2dfb37ad7a614cd9a8cdb7acfc7d2a2243f7490d209772fb4735b8d8f118f5e1fff27a81096a75839af72e8269516756a658edc3e
|
||||
strtok3: ^10.3.4
|
||||
token-types: ^6.1.1
|
||||
uint8array-extras: ^1.5.0
|
||||
checksum: e123ae50b502f528cdf0f7b4bcf6ad21ff029e59b18a6a9cabd0900649da83f611b334d6de3e86a704fce27e137b57dbb3596f3f671abdf92934f935d9e0da49
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -11588,7 +11628,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strtok3@npm:^6.2.4, strtok3@npm:^6.3.0":
|
||||
"strtok3@npm:^10.3.4":
|
||||
version: 10.3.4
|
||||
resolution: "strtok3@npm:10.3.4"
|
||||
dependencies:
|
||||
"@tokenizer/token": ^0.3.0
|
||||
checksum: 7faf008cdf7f96c3d066d349116affbd5e5a49da0f03520299a9a04ad55d57b338d368231d469a64d358a86a03c2a0a3b67d61aa124000c941f65093ada9ae98
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strtok3@npm:^6.2.4":
|
||||
version: 6.3.0
|
||||
resolution: "strtok3@npm:6.3.0"
|
||||
dependencies:
|
||||
@@ -11910,7 +11959,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"token-types@npm:^4.1.1, token-types@npm:^4.2.1":
|
||||
"token-types@npm:^4.1.1":
|
||||
version: 4.2.1
|
||||
resolution: "token-types@npm:4.2.1"
|
||||
dependencies:
|
||||
@@ -11930,6 +11979,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"token-types@npm:^6.1.1":
|
||||
version: 6.1.1
|
||||
resolution: "token-types@npm:6.1.1"
|
||||
dependencies:
|
||||
"@borewit/text-codec": ^0.1.0
|
||||
"@tokenizer/token": ^0.3.0
|
||||
ieee754: ^1.2.1
|
||||
checksum: a4d79dfa5bdfe546d28d8ba1374b7e77ceb2da7b44ce13c643d5af06e37aac26e0e6ec59a7d4b1ecfbfc78c13baca00f36fc6f1bb8e8a1f050465340f61d2df7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tr46@npm:^4.1.1":
|
||||
version: 4.1.1
|
||||
resolution: "tr46@npm:4.1.1"
|
||||
@@ -12213,6 +12273,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uint8array-extras@npm:^1.5.0":
|
||||
version: 1.5.0
|
||||
resolution: "uint8array-extras@npm:1.5.0"
|
||||
checksum: e7fb42b57e73a5891fe3d5358ca6ac2e2db8e8666b1621220319e2dd0523965cd35562a8171c3e9b2ff26693cc658dc5bc1256e6f4935e4e4c13070d779bf76e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ulid@npm:^2.3.0":
|
||||
version: 2.4.0
|
||||
resolution: "ulid@npm:2.4.0"
|
||||
@@ -12403,7 +12470,7 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "waha@workspace:."
|
||||
dependencies:
|
||||
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-2025-07-04"
|
||||
"@adiwajshing/baileys": "github:devlikeapro/Baileys#fork-master-2025-09-21"
|
||||
"@adiwajshing/keyed-db": ^0.2.4
|
||||
"@aws-sdk/client-s3": ^3.633.0
|
||||
"@aws-sdk/s3-request-presigner": ^3.633.0
|
||||
@@ -12501,7 +12568,7 @@ __metadata:
|
||||
tsconfig-paths: ^4.1.0
|
||||
typescript: 5.9.2
|
||||
ulid: ^2.3.0
|
||||
whatsapp-web.js: "github:devlikeapro/whatsapp-web.js#fork-main-2025-06-09"
|
||||
whatsapp-web.js: "github:devlikeapro/whatsapp-web.js#fork-main-2025-09-10"
|
||||
write-file-atomic: ^6.0.0
|
||||
yaml: ^2.7.1
|
||||
yargs: ^17.7.2
|
||||
@@ -12603,13 +12670,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"whatsapp-web.js@github:devlikeapro/whatsapp-web.js#fork-main-2025-06-09":
|
||||
version: 1.30.1-alpha.2
|
||||
resolution: "whatsapp-web.js@https://github.com/devlikeapro/whatsapp-web.js.git#commit=d3c1b36c643ea671b64a1d369b6526de7ffa705a"
|
||||
"whatsapp-web.js@github:devlikeapro/whatsapp-web.js#fork-main-2025-09-10":
|
||||
version: 1.34.1
|
||||
resolution: "whatsapp-web.js@https://github.com/devlikeapro/whatsapp-web.js.git#commit=67ed942bfa5b9bc4464d004d1691b7437ead989f"
|
||||
dependencies:
|
||||
"@pedroslopez/moduleraid": ^5.0.2
|
||||
archiver: ^5.3.1
|
||||
fluent-ffmpeg: 2.1.2
|
||||
fluent-ffmpeg: 2.1.3
|
||||
fs-extra: ^10.1.0
|
||||
mime: ^3.0.0
|
||||
node-fetch: ^2.6.9
|
||||
@@ -12623,7 +12690,7 @@ __metadata:
|
||||
optional: true
|
||||
unzipper:
|
||||
optional: true
|
||||
checksum: 98e574d1e443d11c8b237392d6e66b75451061d0a489cc66bf776f52bf702c94dad9ff4d65912b69bb871e471372b8a3565b26a1d9e736aeef69c5dcba14b0db
|
||||
checksum: a0852af6f93d776438db5cf8138933b241cd44a6d4a93c245e74cd587d005c08a007d73f9925d1bca8f89991a8567a3dde603d094312b82e620a7f8133c2183e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in new issue
Block a user