@lazyneoaz/metachat 6.0.6 → 6.0.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.cjs +31 -8
- package/dist/index.mjs +31 -8
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -90865,6 +90865,7 @@ function pinMessage_default(defaultFuncs, api, ctx) {
|
|
|
90865
90865
|
}
|
|
90866
90866
|
|
|
90867
90867
|
// src/deltas/apis/mqtt/sendMessageMqtt.ts
|
|
90868
|
+
var DEFAULT_RETRY_DELAYS_MS = [900, 1600, 2400, 3500, 5e3, 7e3];
|
|
90868
90869
|
function preUploadedId(item) {
|
|
90869
90870
|
if (typeof item === "number" && Number.isFinite(item)) return String(item);
|
|
90870
90871
|
if (typeof item === "string" && /^\d{6,}$/.test(item.trim())) return item.trim();
|
|
@@ -91094,6 +91095,7 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91094
91095
|
let threadIDFromAck = null;
|
|
91095
91096
|
let failure = null;
|
|
91096
91097
|
let serverError = null;
|
|
91098
|
+
let softFailure = null;
|
|
91097
91099
|
const steps = parsed.payload?.step;
|
|
91098
91100
|
const visit = (node) => {
|
|
91099
91101
|
if (!Array.isArray(node)) return;
|
|
@@ -91105,12 +91107,10 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91105
91107
|
threadIDFromAck = String(node[2][1]);
|
|
91106
91108
|
}
|
|
91107
91109
|
if (node[1] === "markOptimisticMessageFailed") {
|
|
91108
|
-
|
|
91109
|
-
failure = { error: detail, errorDescription: "Message failed on server." };
|
|
91110
|
+
softFailure = typeof node[3] === "string" ? node[3] : "Message failed on server.";
|
|
91110
91111
|
}
|
|
91111
91112
|
if (node[1] === "updateSubscriptErrorMessage" || node[1] === "fatalError") {
|
|
91112
|
-
|
|
91113
|
-
serverError = detail;
|
|
91113
|
+
softFailure = typeof node[3] === "string" ? node[3] : typeof node[4] === "string" ? node[4] : "Couldn't send.";
|
|
91114
91114
|
}
|
|
91115
91115
|
}
|
|
91116
91116
|
for (const child of node) visit(child);
|
|
@@ -91120,7 +91120,8 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91120
91120
|
messageID: resolvedMessageID,
|
|
91121
91121
|
threadID: threadIDFromAck,
|
|
91122
91122
|
failure,
|
|
91123
|
-
serverError
|
|
91123
|
+
serverError,
|
|
91124
|
+
softFailure
|
|
91124
91125
|
});
|
|
91125
91126
|
};
|
|
91126
91127
|
if (mqttClient && typeof mqttClient.on === "function") {
|
|
@@ -91131,14 +91132,21 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91131
91132
|
});
|
|
91132
91133
|
timer = setTimeout(() => settle2({ timeout: true }), 15e3);
|
|
91133
91134
|
});
|
|
91135
|
+
const retryDelays = (() => {
|
|
91136
|
+
const override = ctx.globalOptions && ctx.globalOptions.mqttSendRetryDelaysMs;
|
|
91137
|
+
return Array.isArray(override) && override.length ? override : DEFAULT_RETRY_DELAYS_MS;
|
|
91138
|
+
})();
|
|
91134
91139
|
let result = null;
|
|
91135
91140
|
let lastOtid = "";
|
|
91136
|
-
for (let attempt = 0; attempt
|
|
91141
|
+
for (let attempt = 0; attempt <= retryDelays.length; attempt++) {
|
|
91137
91142
|
const built = buildForm();
|
|
91138
91143
|
lastOtid = built.otid;
|
|
91139
91144
|
result = await publishAndWait(built.form, built.request_id);
|
|
91140
|
-
if (!result.failure && !result.serverError) break;
|
|
91141
|
-
if (
|
|
91145
|
+
if (!result.failure && !result.serverError && !result.softFailure) break;
|
|
91146
|
+
if ((result.failure || result.serverError) && attempt >= 2) break;
|
|
91147
|
+
if (attempt < retryDelays.length) {
|
|
91148
|
+
await sleep(retryDelays[attempt] + Math.floor(Math.random() * 400));
|
|
91149
|
+
}
|
|
91142
91150
|
}
|
|
91143
91151
|
if (result.failure || result.serverError) {
|
|
91144
91152
|
const err = result.failure || { error: result.serverError };
|
|
@@ -91151,6 +91159,21 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91151
91159
|
finish(err);
|
|
91152
91160
|
return done();
|
|
91153
91161
|
}
|
|
91162
|
+
if (result.softFailure) {
|
|
91163
|
+
warn(
|
|
91164
|
+
"sendMessageMqtt [MQTT]",
|
|
91165
|
+
`Facebook rejected the message (${result.softFailure}); thread ${threadID}. Retried ${retryDelays.length} times without success; continuing without failing the bot.`
|
|
91166
|
+
);
|
|
91167
|
+
finish(null, {
|
|
91168
|
+
threadID: result.threadID || threadID.toString(),
|
|
91169
|
+
messageID: result.messageID || null,
|
|
91170
|
+
timestamp,
|
|
91171
|
+
type: replyToMessage ? "message_reply" : "message",
|
|
91172
|
+
error: result.softFailure,
|
|
91173
|
+
success: false
|
|
91174
|
+
});
|
|
91175
|
+
return done();
|
|
91176
|
+
}
|
|
91154
91177
|
finish(null, {
|
|
91155
91178
|
threadID: result.threadID || threadID.toString(),
|
|
91156
91179
|
messageID: result.messageID || `mid.${lastOtid}`,
|
package/dist/index.mjs
CHANGED
|
@@ -90833,6 +90833,7 @@ function pinMessage_default(defaultFuncs, api, ctx) {
|
|
|
90833
90833
|
}
|
|
90834
90834
|
|
|
90835
90835
|
// src/deltas/apis/mqtt/sendMessageMqtt.ts
|
|
90836
|
+
var DEFAULT_RETRY_DELAYS_MS = [900, 1600, 2400, 3500, 5e3, 7e3];
|
|
90836
90837
|
function preUploadedId(item) {
|
|
90837
90838
|
if (typeof item === "number" && Number.isFinite(item)) return String(item);
|
|
90838
90839
|
if (typeof item === "string" && /^\d{6,}$/.test(item.trim())) return item.trim();
|
|
@@ -91062,6 +91063,7 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91062
91063
|
let threadIDFromAck = null;
|
|
91063
91064
|
let failure = null;
|
|
91064
91065
|
let serverError = null;
|
|
91066
|
+
let softFailure = null;
|
|
91065
91067
|
const steps = parsed.payload?.step;
|
|
91066
91068
|
const visit = (node) => {
|
|
91067
91069
|
if (!Array.isArray(node)) return;
|
|
@@ -91073,12 +91075,10 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91073
91075
|
threadIDFromAck = String(node[2][1]);
|
|
91074
91076
|
}
|
|
91075
91077
|
if (node[1] === "markOptimisticMessageFailed") {
|
|
91076
|
-
|
|
91077
|
-
failure = { error: detail, errorDescription: "Message failed on server." };
|
|
91078
|
+
softFailure = typeof node[3] === "string" ? node[3] : "Message failed on server.";
|
|
91078
91079
|
}
|
|
91079
91080
|
if (node[1] === "updateSubscriptErrorMessage" || node[1] === "fatalError") {
|
|
91080
|
-
|
|
91081
|
-
serverError = detail;
|
|
91081
|
+
softFailure = typeof node[3] === "string" ? node[3] : typeof node[4] === "string" ? node[4] : "Couldn't send.";
|
|
91082
91082
|
}
|
|
91083
91083
|
}
|
|
91084
91084
|
for (const child of node) visit(child);
|
|
@@ -91088,7 +91088,8 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91088
91088
|
messageID: resolvedMessageID,
|
|
91089
91089
|
threadID: threadIDFromAck,
|
|
91090
91090
|
failure,
|
|
91091
|
-
serverError
|
|
91091
|
+
serverError,
|
|
91092
|
+
softFailure
|
|
91092
91093
|
});
|
|
91093
91094
|
};
|
|
91094
91095
|
if (mqttClient && typeof mqttClient.on === "function") {
|
|
@@ -91099,14 +91100,21 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91099
91100
|
});
|
|
91100
91101
|
timer = setTimeout(() => settle2({ timeout: true }), 15e3);
|
|
91101
91102
|
});
|
|
91103
|
+
const retryDelays = (() => {
|
|
91104
|
+
const override = ctx.globalOptions && ctx.globalOptions.mqttSendRetryDelaysMs;
|
|
91105
|
+
return Array.isArray(override) && override.length ? override : DEFAULT_RETRY_DELAYS_MS;
|
|
91106
|
+
})();
|
|
91102
91107
|
let result = null;
|
|
91103
91108
|
let lastOtid = "";
|
|
91104
|
-
for (let attempt = 0; attempt
|
|
91109
|
+
for (let attempt = 0; attempt <= retryDelays.length; attempt++) {
|
|
91105
91110
|
const built = buildForm();
|
|
91106
91111
|
lastOtid = built.otid;
|
|
91107
91112
|
result = await publishAndWait(built.form, built.request_id);
|
|
91108
|
-
if (!result.failure && !result.serverError) break;
|
|
91109
|
-
if (
|
|
91113
|
+
if (!result.failure && !result.serverError && !result.softFailure) break;
|
|
91114
|
+
if ((result.failure || result.serverError) && attempt >= 2) break;
|
|
91115
|
+
if (attempt < retryDelays.length) {
|
|
91116
|
+
await sleep(retryDelays[attempt] + Math.floor(Math.random() * 400));
|
|
91117
|
+
}
|
|
91110
91118
|
}
|
|
91111
91119
|
if (result.failure || result.serverError) {
|
|
91112
91120
|
const err = result.failure || { error: result.serverError };
|
|
@@ -91119,6 +91127,21 @@ var sendMessageMqtt_default = (defaultFuncs, api, ctx) => {
|
|
|
91119
91127
|
finish(err);
|
|
91120
91128
|
return done();
|
|
91121
91129
|
}
|
|
91130
|
+
if (result.softFailure) {
|
|
91131
|
+
warn(
|
|
91132
|
+
"sendMessageMqtt [MQTT]",
|
|
91133
|
+
`Facebook rejected the message (${result.softFailure}); thread ${threadID}. Retried ${retryDelays.length} times without success; continuing without failing the bot.`
|
|
91134
|
+
);
|
|
91135
|
+
finish(null, {
|
|
91136
|
+
threadID: result.threadID || threadID.toString(),
|
|
91137
|
+
messageID: result.messageID || null,
|
|
91138
|
+
timestamp,
|
|
91139
|
+
type: replyToMessage ? "message_reply" : "message",
|
|
91140
|
+
error: result.softFailure,
|
|
91141
|
+
success: false
|
|
91142
|
+
});
|
|
91143
|
+
return done();
|
|
91144
|
+
}
|
|
91122
91145
|
finish(null, {
|
|
91123
91146
|
threadID: result.threadID || threadID.toString(),
|
|
91124
91147
|
messageID: result.messageID || `mid.${lastOtid}`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lazyneoaz/metachat",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.7",
|
|
4
4
|
"description": "A modern TypeScript Facebook Chat API client for building reliable Messenger bots, with built-in anti-detection protection, automatic cookie refresh, music search, and AI theme support.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|