@automagik/omni 2.260910.5 → 2.260910.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -18
- package/dist/server/index.js +137 -118
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -42456,9 +42456,8 @@ async function processRow2(row, now, deps, stats) {
|
|
|
42456
42456
|
silentForSeconds,
|
|
42457
42457
|
stalledAt: now.getTime()
|
|
42458
42458
|
};
|
|
42459
|
-
|
|
42459
|
+
await publishTransition(deps, "system.connector.stalled", { ...payload }, row);
|
|
42460
42460
|
stats.stalled += 1;
|
|
42461
|
-
await runHook(deps.logger, "onStalled", row, () => deps.onStalled?.(row, payload, eventId));
|
|
42462
42461
|
return;
|
|
42463
42462
|
}
|
|
42464
42463
|
if (row.livenessStatus === "stalled") {
|
|
@@ -42475,7 +42474,6 @@ async function processRow2(row, now, deps, stats) {
|
|
|
42475
42474
|
};
|
|
42476
42475
|
await publishTransition(deps, "system.connector.recovered", { ...payload }, row);
|
|
42477
42476
|
stats.recovered += 1;
|
|
42478
|
-
await runHook(deps.logger, "onRecovered", row, () => deps.onRecovered?.(row, payload));
|
|
42479
42477
|
}
|
|
42480
42478
|
}
|
|
42481
42479
|
async function publishTransition(deps, type, payload, row) {
|
|
@@ -42484,24 +42482,12 @@ async function publishTransition(deps, type, payload, row) {
|
|
|
42484
42482
|
type,
|
|
42485
42483
|
sourceName: row.name
|
|
42486
42484
|
});
|
|
42487
|
-
return
|
|
42485
|
+
return;
|
|
42488
42486
|
}
|
|
42489
|
-
|
|
42487
|
+
await deps.eventBus.publishGeneric(type, payload, {
|
|
42490
42488
|
source: "connector-liveness",
|
|
42491
42489
|
...row.tenantId ? { tenantId: row.tenantId } : {}
|
|
42492
42490
|
});
|
|
42493
|
-
return result.id;
|
|
42494
|
-
}
|
|
42495
|
-
async function runHook(logger5, name, row, hook) {
|
|
42496
|
-
try {
|
|
42497
|
-
await hook();
|
|
42498
|
-
} catch (err2) {
|
|
42499
|
-
logger5.error(`connector liveness: ${name} hook failed`, {
|
|
42500
|
-
sourceId: row.id,
|
|
42501
|
-
sourceName: row.name,
|
|
42502
|
-
error: err2 instanceof Error ? err2.message : String(err2)
|
|
42503
|
-
});
|
|
42504
|
-
}
|
|
42505
42491
|
}
|
|
42506
42492
|
|
|
42507
42493
|
// ../core/src/connectors/index.ts
|
|
@@ -137139,7 +137125,7 @@ import { fileURLToPath } from "url";
|
|
|
137139
137125
|
// package.json
|
|
137140
137126
|
var package_default = {
|
|
137141
137127
|
name: "@automagik/omni",
|
|
137142
|
-
version: "2.260910.
|
|
137128
|
+
version: "2.260910.7",
|
|
137143
137129
|
repository: {
|
|
137144
137130
|
type: "git",
|
|
137145
137131
|
url: "git+https://github.com/automagik-dev/omni.git",
|
package/dist/server/index.js
CHANGED
|
@@ -39360,9 +39360,8 @@ async function processRow2(row, now, deps, stats) {
|
|
|
39360
39360
|
silentForSeconds,
|
|
39361
39361
|
stalledAt: now.getTime()
|
|
39362
39362
|
};
|
|
39363
|
-
|
|
39363
|
+
await publishTransition(deps, "system.connector.stalled", { ...payload }, row);
|
|
39364
39364
|
stats.stalled += 1;
|
|
39365
|
-
await runHook(deps.logger, "onStalled", row, () => deps.onStalled?.(row, payload, eventId));
|
|
39366
39365
|
return;
|
|
39367
39366
|
}
|
|
39368
39367
|
if (row.livenessStatus === "stalled") {
|
|
@@ -39379,7 +39378,6 @@ async function processRow2(row, now, deps, stats) {
|
|
|
39379
39378
|
};
|
|
39380
39379
|
await publishTransition(deps, "system.connector.recovered", { ...payload }, row);
|
|
39381
39380
|
stats.recovered += 1;
|
|
39382
|
-
await runHook(deps.logger, "onRecovered", row, () => deps.onRecovered?.(row, payload));
|
|
39383
39381
|
}
|
|
39384
39382
|
}
|
|
39385
39383
|
async function publishTransition(deps, type, payload, row) {
|
|
@@ -39388,24 +39386,12 @@ async function publishTransition(deps, type, payload, row) {
|
|
|
39388
39386
|
type,
|
|
39389
39387
|
sourceName: row.name
|
|
39390
39388
|
});
|
|
39391
|
-
return
|
|
39389
|
+
return;
|
|
39392
39390
|
}
|
|
39393
|
-
|
|
39391
|
+
await deps.eventBus.publishGeneric(type, payload, {
|
|
39394
39392
|
source: "connector-liveness",
|
|
39395
39393
|
...row.tenantId ? { tenantId: row.tenantId } : {}
|
|
39396
39394
|
});
|
|
39397
|
-
return result.id;
|
|
39398
|
-
}
|
|
39399
|
-
async function runHook(logger5, name, row, hook) {
|
|
39400
|
-
try {
|
|
39401
|
-
await hook();
|
|
39402
|
-
} catch (err2) {
|
|
39403
|
-
logger5.error(`connector liveness: ${name} hook failed`, {
|
|
39404
|
-
sourceId: row.id,
|
|
39405
|
-
sourceName: row.name,
|
|
39406
|
-
error: err2 instanceof Error ? err2.message : String(err2)
|
|
39407
|
-
});
|
|
39408
|
-
}
|
|
39409
39395
|
}
|
|
39410
39396
|
|
|
39411
39397
|
// ../core/src/connectors/index.ts
|
|
@@ -251595,7 +251581,7 @@ var init_sentry_scrub = __esm(() => {
|
|
|
251595
251581
|
var require_package7 = __commonJS((exports, module) => {
|
|
251596
251582
|
module.exports = {
|
|
251597
251583
|
name: "@omni/api",
|
|
251598
|
-
version: "2.260910.
|
|
251584
|
+
version: "2.260910.7",
|
|
251599
251585
|
private: true,
|
|
251600
251586
|
type: "module",
|
|
251601
251587
|
exports: {
|
|
@@ -363727,14 +363713,27 @@ async function maybeFindOrCreateParticipant(services, chatId, from, rawPayload,
|
|
|
363727
363713
|
platformIdentityId
|
|
363728
363714
|
});
|
|
363729
363715
|
}
|
|
363730
|
-
async function maybeRecordMessageEdit(services, created, rawPayload, messageId, newText, platformTimestamp, from) {
|
|
363716
|
+
async function maybeRecordMessageEdit(services, created, rawPayload, chatId, messageId, contentType, newText, platformTimestamp, from) {
|
|
363717
|
+
const editedBy = truncate4(from, 255) ?? undefined;
|
|
363718
|
+
if (contentType === "edit") {
|
|
363719
|
+
const targetExternalId = rawPayload?.editedMessageId;
|
|
363720
|
+
if (typeof targetExternalId !== "string")
|
|
363721
|
+
return;
|
|
363722
|
+
const target = await services.messages.getByExternalId(chatId, targetExternalId);
|
|
363723
|
+
if (!target)
|
|
363724
|
+
return;
|
|
363725
|
+
const editedAtMs2 = rawPayload?.editedAt;
|
|
363726
|
+
const editedAt2 = new Date(typeof editedAtMs2 === "number" ? editedAtMs2 : platformTimestamp.getTime());
|
|
363727
|
+
await services.messages.recordEdit(target.id, newText ?? "", editedAt2, editedBy);
|
|
363728
|
+
return;
|
|
363729
|
+
}
|
|
363731
363730
|
if (created)
|
|
363732
363731
|
return;
|
|
363733
363732
|
if (rawPayload?.isEdited !== true)
|
|
363734
363733
|
return;
|
|
363735
363734
|
const editedAtMs = rawPayload.editDate;
|
|
363736
363735
|
const editedAt = new Date(typeof editedAtMs === "number" ? editedAtMs : platformTimestamp.getTime());
|
|
363737
|
-
await services.messages.recordEdit(messageId, newText ?? "", editedAt,
|
|
363736
|
+
await services.messages.recordEdit(messageId, newText ?? "", editedAt, editedBy);
|
|
363738
363737
|
}
|
|
363739
363738
|
async function maybeRecordParticipantActivity(services, chatId, from) {
|
|
363740
363739
|
if (!from)
|
|
@@ -363743,7 +363742,7 @@ async function maybeRecordParticipantActivity(services, chatId, from) {
|
|
|
363743
363742
|
await services.chats.recordParticipantActivity(chatId, activityUserId);
|
|
363744
363743
|
}
|
|
363745
363744
|
function maybeUpdateRecency(services, instanceId, chatId, rawPayload, payload, platformTimestamp, trustedTenantId) {
|
|
363746
|
-
if (rawPayload?.isEdited === true)
|
|
363745
|
+
if (rawPayload?.isEdited === true || payload.content.type === "edit")
|
|
363747
363746
|
return;
|
|
363748
363747
|
const preview = sanitizeText(buildChatPreview(payload, rawPayload)) ?? "";
|
|
363749
363748
|
const isFromMe2 = rawPayload?.isFromMe === true;
|
|
@@ -363869,7 +363868,7 @@ async function handleMessageReceived(services, payload, metadata, eventTimestamp
|
|
|
363869
363868
|
isForwarded: !!(rawPayload?.isForwarded || rawPayload?.forwardingScore),
|
|
363870
363869
|
rawPayload
|
|
363871
363870
|
});
|
|
363872
|
-
await maybeRecordMessageEdit(services, created, rawPayload, message2.id, sanitizeText(payload.content.text) ?? undefined, platformTimestamp ?? new Date(eventTimestamp), payload.from);
|
|
363871
|
+
await maybeRecordMessageEdit(services, created, rawPayload, chat2.id, message2.id, payload.content.type, sanitizeText(payload.content.text) ?? undefined, platformTimestamp ?? new Date(eventTimestamp), payload.from);
|
|
363873
363872
|
if (created) {
|
|
363874
363873
|
log90.debug("Created message", { externalId: payload.externalId, chatId: chat2.id });
|
|
363875
363874
|
await linkReplyTarget(services, chat2.id, message2.id, payload.replyToId);
|
|
@@ -375966,18 +375965,8 @@ class WebhookService {
|
|
|
375966
375965
|
expectedIntervalSeconds: source.expectedIntervalSeconds
|
|
375967
375966
|
};
|
|
375968
375967
|
}
|
|
375969
|
-
async sweepLiveness(
|
|
375970
|
-
|
|
375971
|
-
const hooks2 = deadLetters ? {
|
|
375972
|
-
onStalled: (row, payload, publishedEventId) => fileStallDeadLetter(deadLetters, row, payload, publishedEventId),
|
|
375973
|
-
onRecovered: (row) => resolveStallDeadLetters(deadLetters, row)
|
|
375974
|
-
} : {};
|
|
375975
|
-
return sweepConnectorLiveness({
|
|
375976
|
-
repo: this.livenessRepo(),
|
|
375977
|
-
eventBus: this.eventBus,
|
|
375978
|
-
logger: log112,
|
|
375979
|
-
...hooks2
|
|
375980
|
-
});
|
|
375968
|
+
async sweepLiveness() {
|
|
375969
|
+
return sweepConnectorLiveness({ repo: this.livenessRepo(), eventBus: this.eventBus, logger: log112 });
|
|
375981
375970
|
}
|
|
375982
375971
|
livenessRepo() {
|
|
375983
375972
|
return {
|
|
@@ -376007,35 +375996,6 @@ class WebhookService {
|
|
|
376007
375996
|
};
|
|
376008
375997
|
}
|
|
376009
375998
|
}
|
|
376010
|
-
async function fileStallDeadLetter(deadLetters, row, payload, publishedEventId) {
|
|
376011
|
-
const event = {
|
|
376012
|
-
id: publishedEventId ?? generateId(),
|
|
376013
|
-
type: "system.connector.stalled",
|
|
376014
|
-
payload: { ...payload },
|
|
376015
|
-
metadata: {
|
|
376016
|
-
correlationId: generateId(),
|
|
376017
|
-
source: "connector-liveness",
|
|
376018
|
-
...row.tenantId ? { tenantId: row.tenantId } : {}
|
|
376019
|
-
},
|
|
376020
|
-
timestamp: payload.stalledAt
|
|
376021
|
-
};
|
|
376022
|
-
await deadLetters.create({
|
|
376023
|
-
event,
|
|
376024
|
-
subject: "system.connector.stalled.internal.global",
|
|
376025
|
-
error: new Error(`Connector '${row.name}' declared >=1 event or heartbeat per ${row.expectedIntervalSeconds}s ` + `but has been silent for ${payload.silentForSeconds}s`),
|
|
376026
|
-
retryCount: 0,
|
|
376027
|
-
autoRetry: false
|
|
376028
|
-
});
|
|
376029
|
-
}
|
|
376030
|
-
async function resolveStallDeadLetters(deadLetters, row) {
|
|
376031
|
-
const { items } = await deadLetters.list({ status: ["pending"], eventType: ["system.connector.stalled"] });
|
|
376032
|
-
for (const entry of items) {
|
|
376033
|
-
const stored = entry.payload;
|
|
376034
|
-
if (stored.payload?.sourceId === row.id) {
|
|
376035
|
-
await deadLetters.resolve(entry.id, "connector-liveness: recovered");
|
|
376036
|
-
}
|
|
376037
|
-
}
|
|
376038
|
-
}
|
|
376039
375999
|
var log112;
|
|
376040
376000
|
var init_webhooks = __esm(() => {
|
|
376041
376001
|
init_src();
|
|
@@ -398000,53 +397960,99 @@ async function setupEventPersistence(eventBus, db2) {
|
|
|
398000
397960
|
});
|
|
398001
397961
|
}
|
|
398002
397962
|
}, { ...CONSUMER_OPTIONS, durable: "event-persistence-failed" });
|
|
398003
|
-
|
|
398004
|
-
|
|
398005
|
-
|
|
398006
|
-
|
|
398007
|
-
|
|
398008
|
-
|
|
398009
|
-
|
|
398010
|
-
|
|
398011
|
-
|
|
398012
|
-
|
|
398013
|
-
|
|
398014
|
-
|
|
398015
|
-
|
|
398016
|
-
|
|
398017
|
-
|
|
398018
|
-
|
|
398019
|
-
|
|
398020
|
-
|
|
398021
|
-
|
|
398022
|
-
|
|
398023
|
-
|
|
398024
|
-
|
|
398025
|
-
|
|
398026
|
-
|
|
398027
|
-
|
|
398028
|
-
|
|
398029
|
-
|
|
398030
|
-
|
|
398031
|
-
|
|
398032
|
-
|
|
398033
|
-
};
|
|
398034
|
-
|
|
398035
|
-
|
|
398036
|
-
|
|
398037
|
-
|
|
398038
|
-
|
|
398039
|
-
|
|
398040
|
-
|
|
398041
|
-
|
|
398042
|
-
|
|
398043
|
-
}
|
|
397963
|
+
for (const type of ["reaction.received", "reaction.removed"]) {
|
|
397964
|
+
await eventBus.subscribe(type, async (event) => {
|
|
397965
|
+
const payload = event.payload;
|
|
397966
|
+
const metadata = event.metadata;
|
|
397967
|
+
try {
|
|
397968
|
+
await runConsumerInTenantContext(db2, event, async () => {
|
|
397969
|
+
const sdb = scopedHandle(db2);
|
|
397970
|
+
const chatLink = await resolveChatLink(sdb, metadata.instanceId, payload.chatId);
|
|
397971
|
+
const personId = await resolvePersonId2(sdb, metadata.personId);
|
|
397972
|
+
const newEvent = {
|
|
397973
|
+
...eventIdInsert(event.id),
|
|
397974
|
+
externalId: payload.messageId,
|
|
397975
|
+
channel: mapChannelType(metadata.channelType),
|
|
397976
|
+
instanceId: metadata.instanceId,
|
|
397977
|
+
personId,
|
|
397978
|
+
eventType: type,
|
|
397979
|
+
chatId: payload.chatId,
|
|
397980
|
+
contentType: "reaction",
|
|
397981
|
+
textContent: sanitizeText(payload.emoji),
|
|
397982
|
+
direction: payload.rawPayload?.isFromMe === true ? "outbound" : "inbound",
|
|
397983
|
+
status: "completed",
|
|
397984
|
+
receivedAt: new Date(event.timestamp),
|
|
397985
|
+
rawPayload: deepSanitize({ ...payload, rawPayload: payload.rawPayload ?? null }),
|
|
397986
|
+
metadata: { correlationId: metadata.correlationId, from: payload.from, emoji: payload.emoji },
|
|
397987
|
+
causationId: metadata.causationId ?? null,
|
|
397988
|
+
conversationId: null,
|
|
397989
|
+
...chatLink
|
|
397990
|
+
};
|
|
397991
|
+
await sdb.insert(omniEvents).values(newEvent).onConflictDoNothing({ target: omniEvents.id });
|
|
397992
|
+
});
|
|
397993
|
+
log125.debug(`Persisted ${type}`, { messageId: payload.messageId, emoji: payload.emoji });
|
|
397994
|
+
} catch (error3) {
|
|
397995
|
+
log125.error(`Failed to persist ${type}`, { messageId: payload.messageId, error: String(error3) });
|
|
397996
|
+
}
|
|
397997
|
+
}, { ...CONSUMER_OPTIONS, durable: `event-persistence-${type.replace(".", "-")}` });
|
|
397998
|
+
}
|
|
397999
|
+
await eventBus.subscribePattern("custom.>", (event) => journalInternalEvent(db2, event), {
|
|
398000
|
+
...CONSUMER_OPTIONS,
|
|
398001
|
+
durable: "event-persistence-custom",
|
|
398002
|
+
startFrom: "new"
|
|
398003
|
+
});
|
|
398004
|
+
await eventBus.subscribePattern("system.connector.>", (event) => journalInternalEvent(db2, event), {
|
|
398005
|
+
...CONSUMER_OPTIONS,
|
|
398006
|
+
durable: "event-persistence-connector",
|
|
398007
|
+
startFrom: "new"
|
|
398008
|
+
});
|
|
398044
398009
|
log125.info("Event persistence initialized - listening for message events");
|
|
398045
398010
|
} catch (error3) {
|
|
398046
398011
|
log125.error("Failed to set up event persistence", { error: String(error3) });
|
|
398047
398012
|
throw error3;
|
|
398048
398013
|
}
|
|
398049
398014
|
}
|
|
398015
|
+
async function journalInternalEvent(db2, event) {
|
|
398016
|
+
const metadata = event.metadata;
|
|
398017
|
+
try {
|
|
398018
|
+
await runConsumerInTenantContext(db2, event, async () => {
|
|
398019
|
+
const sdb = scopedHandle(db2);
|
|
398020
|
+
const payload = typeof event.payload === "object" && event.payload !== null ? event.payload : {};
|
|
398021
|
+
const instanceId = metadata.instanceId && isValidUuid(metadata.instanceId) ? metadata.instanceId : null;
|
|
398022
|
+
const payloadChatId = typeof payload.chatId === "string" ? payload.chatId : undefined;
|
|
398023
|
+
const personId = await resolvePersonId2(sdb, metadata.personId) ?? await resolvePersonId2(sdb, payload.personId);
|
|
398024
|
+
const chatUuid = await resolveChatUuidById(sdb, payload.chatUuid);
|
|
398025
|
+
const chatLink = chatUuid ? { chatUuid, canonicalChatId: null } : await resolveChatLink(sdb, instanceId ?? undefined, payloadChatId);
|
|
398026
|
+
const newEvent = {
|
|
398027
|
+
...eventIdInsert(event.id),
|
|
398028
|
+
channel: "internal",
|
|
398029
|
+
instanceId,
|
|
398030
|
+
personId,
|
|
398031
|
+
eventType: event.type.slice(0, 255),
|
|
398032
|
+
direction: "internal",
|
|
398033
|
+
status: "completed",
|
|
398034
|
+
receivedAt: new Date(event.timestamp),
|
|
398035
|
+
rawPayload: deepSanitize(payload),
|
|
398036
|
+
metadata: {
|
|
398037
|
+
correlationId: metadata.correlationId,
|
|
398038
|
+
source: metadata.source,
|
|
398039
|
+
fullEventType: event.type
|
|
398040
|
+
},
|
|
398041
|
+
causationId: metadata.causationId ?? null,
|
|
398042
|
+
conversationId: null,
|
|
398043
|
+
chatId: payloadChatId,
|
|
398044
|
+
...chatLink
|
|
398045
|
+
};
|
|
398046
|
+
await sdb.insert(omniEvents).values(newEvent).onConflictDoNothing({ target: omniEvents.id });
|
|
398047
|
+
});
|
|
398048
|
+
} catch (error3) {
|
|
398049
|
+
log125.error("Failed to persist custom event", {
|
|
398050
|
+
eventType: event.type,
|
|
398051
|
+
eventId: event.id,
|
|
398052
|
+
error: String(error3)
|
|
398053
|
+
});
|
|
398054
|
+
}
|
|
398055
|
+
}
|
|
398050
398056
|
var log125, NO_CHAT_LINK, CONSUMER_OPTIONS;
|
|
398051
398057
|
var init_event_persistence = __esm(() => {
|
|
398052
398058
|
init_src();
|
|
@@ -400423,7 +400429,7 @@ function setupScheduler(services, channelRegistry2) {
|
|
|
400423
400429
|
await withCronMonitor("connector-liveness-sweeper", "*/30 * * * * *", 1, 1, async () => {
|
|
400424
400430
|
const startTime3 = Date.now();
|
|
400425
400431
|
try {
|
|
400426
|
-
const stats = await services.webhooks.sweepLiveness(
|
|
400432
|
+
const stats = await services.webhooks.sweepLiveness();
|
|
400427
400433
|
recordScheduledJob("connector-liveness-sweeper", "success", (Date.now() - startTime3) / 1000);
|
|
400428
400434
|
if (stats.stalled > 0 || stats.recovered > 0) {
|
|
400429
400435
|
log131.info("Connector liveness sweep tick", { ...stats });
|
|
@@ -407532,7 +407538,8 @@ class DiscordPlugin extends BaseChannelPlugin {
|
|
|
407532
407538
|
rawPayload: {
|
|
407533
407539
|
deletedMessageId: messageId,
|
|
407534
407540
|
deletedAt: Date.now(),
|
|
407535
|
-
deletedByMe: fromMe
|
|
407541
|
+
deletedByMe: fromMe,
|
|
407542
|
+
isFromMe: fromMe
|
|
407536
407543
|
}
|
|
407537
407544
|
});
|
|
407538
407545
|
this.logger.debug("Message deleted", { instanceId, messageId, chatId });
|
|
@@ -527815,6 +527822,9 @@ function getMediaSize(msg) {
|
|
|
527815
527822
|
var log52 = createLogger("whatsapp:messages");
|
|
527816
527823
|
var fallbackDedupeCache3 = createInboundDedupeCache();
|
|
527817
527824
|
var downloadGuard9 = createDownloadGuard({ maxSizeBytes: getWhatsAppMediaDownloadMaxBytes() });
|
|
527825
|
+
function extractEditedText(edited) {
|
|
527826
|
+
return edited?.conversation || edited?.extendedTextMessage?.text || edited?.imageMessage?.caption || edited?.videoMessage?.caption || edited?.documentMessage?.caption || undefined;
|
|
527827
|
+
}
|
|
527818
527828
|
function joinLines(...parts) {
|
|
527819
527829
|
const text = parts.filter((p2) => typeof p2 === "string" && p2.trim().length > 0).join(`
|
|
527820
527830
|
`);
|
|
@@ -528044,7 +528054,7 @@ var contentExtractors = [
|
|
|
528044
528054
|
return {
|
|
528045
528055
|
type: "edit",
|
|
528046
528056
|
targetMessageId: proto3?.key?.id ?? undefined,
|
|
528047
|
-
editedText: proto3?.editedMessage
|
|
528057
|
+
editedText: extractEditedText(proto3?.editedMessage)
|
|
528048
528058
|
};
|
|
528049
528059
|
}
|
|
528050
528060
|
if (protoType === 0) {
|
|
@@ -528131,6 +528141,20 @@ var contentExtractors = [
|
|
|
528131
528141
|
return null;
|
|
528132
528142
|
}
|
|
528133
528143
|
},
|
|
528144
|
+
{
|
|
528145
|
+
check: (m2) => !!m2.editedMessage,
|
|
528146
|
+
extract: (m2) => {
|
|
528147
|
+
const innerMsg = m2.editedMessage?.message;
|
|
528148
|
+
if (innerMsg) {
|
|
528149
|
+
for (const { check, extract } of contentExtractors.slice(0, -1)) {
|
|
528150
|
+
if (check(innerMsg)) {
|
|
528151
|
+
return extract(innerMsg);
|
|
528152
|
+
}
|
|
528153
|
+
}
|
|
528154
|
+
}
|
|
528155
|
+
return null;
|
|
528156
|
+
}
|
|
528157
|
+
},
|
|
528134
528158
|
{
|
|
528135
528159
|
check: (m2) => !!m2.ephemeralMessage,
|
|
528136
528160
|
extract: (m2) => {
|
|
@@ -528286,7 +528310,7 @@ async function handleSpecialMessage(plugin10, instanceId, content, externalId, c
|
|
|
528286
528310
|
return true;
|
|
528287
528311
|
}
|
|
528288
528312
|
if (content.type === "edit" && content.targetMessageId) {
|
|
528289
|
-
await plugin10.handleMessageEdited(instanceId, content.targetMessageId, chatId, content.editedText || content.text || "");
|
|
528313
|
+
await plugin10.handleMessageEdited(instanceId, content.targetMessageId, chatId, content.editedText || content.text || "", isFromMe(msg));
|
|
528290
528314
|
return true;
|
|
528291
528315
|
}
|
|
528292
528316
|
if (content.type === "delete" && content.targetMessageId) {
|
|
@@ -528460,13 +528484,6 @@ function setupMessageHandlers4(sock, plugin10, instanceId, decryptTracker, dedup
|
|
|
528460
528484
|
if (update.update.status !== undefined && update.update.status !== null) {
|
|
528461
528485
|
await processStatusUpdate(plugin10, instanceId, update.key, update.update.status);
|
|
528462
528486
|
}
|
|
528463
|
-
if (update.update.message) {
|
|
528464
|
-
const editedContent = update.update.message;
|
|
528465
|
-
const newText = editedContent.conversation || editedContent.extendedTextMessage?.text || editedContent.imageMessage?.caption || editedContent.videoMessage?.caption || null;
|
|
528466
|
-
if (newText) {
|
|
528467
|
-
await plugin10.handleMessageEdited(instanceId, update.key.id || "", update.key.remoteJid || "", newText);
|
|
528468
|
-
}
|
|
528469
|
-
}
|
|
528470
528487
|
}
|
|
528471
528488
|
});
|
|
528472
528489
|
sock.ev.on("messages.delete", async (deletion) => {
|
|
@@ -531397,7 +531414,7 @@ class WhatsAppPlugin extends BaseChannelPlugin {
|
|
|
531397
531414
|
retryable: false
|
|
531398
531415
|
});
|
|
531399
531416
|
}
|
|
531400
|
-
async handleMessageEdited(instanceId, externalId, chatId, newText) {
|
|
531417
|
+
async handleMessageEdited(instanceId, externalId, chatId, newText, fromMe = false) {
|
|
531401
531418
|
await this.emitMessageReceived({
|
|
531402
531419
|
instanceId,
|
|
531403
531420
|
externalId: `${externalId}-edit-${Date.now()}`,
|
|
@@ -531410,7 +531427,8 @@ class WhatsAppPlugin extends BaseChannelPlugin {
|
|
|
531410
531427
|
rawPayload: {
|
|
531411
531428
|
editedMessageId: externalId,
|
|
531412
531429
|
newText,
|
|
531413
|
-
editedAt: Date.now()
|
|
531430
|
+
editedAt: Date.now(),
|
|
531431
|
+
isFromMe: fromMe
|
|
531414
531432
|
}
|
|
531415
531433
|
});
|
|
531416
531434
|
this.logger.debug("Message edited", { instanceId, externalId, chatId, newText: newText.substring(0, 50) });
|
|
@@ -531425,7 +531443,8 @@ class WhatsAppPlugin extends BaseChannelPlugin {
|
|
|
531425
531443
|
rawPayload: {
|
|
531426
531444
|
deletedMessageId: externalId,
|
|
531427
531445
|
deletedAt: Date.now(),
|
|
531428
|
-
deletedByMe: fromMe
|
|
531446
|
+
deletedByMe: fromMe,
|
|
531447
|
+
isFromMe: fromMe
|
|
531429
531448
|
}
|
|
531430
531449
|
});
|
|
531431
531450
|
this.logger.debug("Message deleted", { instanceId, externalId, chatId, fromMe });
|