@diegoaltoworks/chatter 0.54.0 → 0.54.2
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/channels/gates.d.ts +7 -0
- package/dist/channels/gates.d.ts.map +1 -1
- package/dist/channels/index.js +11 -0
- package/dist/channels/index.mjs +11 -0
- package/dist/channels/senders.d.ts +8 -0
- package/dist/channels/senders.d.ts.map +1 -1
- package/dist/channels/whatsapp/channel.d.ts.map +1 -1
- package/dist/channels/whatsapp/inbound.d.ts.map +1 -1
- package/dist/channels/whatsapp/index.js +21 -2
- package/dist/channels/whatsapp/index.mjs +21 -2
- package/dist/channels/whatsapp/router.d.ts +11 -0
- package/dist/channels/whatsapp/router.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.mjs +11 -0
- package/dist/server.js +11 -0
- package/dist/server.mjs +11 -0
- package/package.json +1 -1
package/dist/channels/gates.d.ts
CHANGED
|
@@ -22,6 +22,13 @@ export interface ChannelMessage {
|
|
|
22
22
|
isReplyToBot: boolean;
|
|
23
23
|
/** True when the bot itself sent this message (including via another session — see {@link isEffectivelyFromSelf}). */
|
|
24
24
|
fromBot: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Opaque, transport-defined handle for targeting this specific message —
|
|
27
|
+
* e.g. `ChannelSenderRegistry.sendReaction`'s `messageRef` — not
|
|
28
|
+
* interpreted by anything in this module. Omitted transports (or
|
|
29
|
+
* messages a transport can't target individually) simply have none.
|
|
30
|
+
*/
|
|
31
|
+
messageRef?: unknown;
|
|
25
32
|
}
|
|
26
33
|
export type ChannelAction = "reply" | "ignore" | "mute" | "unmute";
|
|
27
34
|
export interface ChannelGateConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/channels/gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,eAAe,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,WAAW,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,YAAY,EAAE,OAAO,CAAC;IACtB,sHAAsH;IACtH,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/channels/gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,eAAe,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,WAAW,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,YAAY,EAAE,OAAO,CAAC;IACtB,sHAAsH;IACtH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,gGAAgG;IAChG,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kIAAkI;IAClI,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAOD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,GAC9C,OAAO,CAQT;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,GAAG,aAAa,CAUjG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,MAAM,MAAiB;UAcR,MAAM,GAAG,OAAO;;EAiBrC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,iBAAiB,CAAC,EACvD,QAAQ,EAAE;IAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,GAChF,OAAO,CAET;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAE5D,qHAAqH;AACrH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,UAAU,CAAC,EACjD,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAET"}
|
package/dist/channels/index.js
CHANGED
|
@@ -378,6 +378,17 @@ function createSenderRegistry(logger = createConsoleLogger()) {
|
|
|
378
378
|
logger.warn(`Channel sender "${name}" sendMedia failed:`, error);
|
|
379
379
|
return false;
|
|
380
380
|
}
|
|
381
|
+
},
|
|
382
|
+
async sendReaction(name, chatId, messageRef, emoji) {
|
|
383
|
+
const sender = senders.get(name);
|
|
384
|
+
if (!sender?.sendReaction) return false;
|
|
385
|
+
try {
|
|
386
|
+
await sender.sendReaction(chatId, messageRef, emoji);
|
|
387
|
+
return true;
|
|
388
|
+
} catch (error) {
|
|
389
|
+
logger.warn(`Channel sender "${name}" sendReaction failed:`, error);
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
381
392
|
}
|
|
382
393
|
};
|
|
383
394
|
}
|
package/dist/channels/index.mjs
CHANGED
|
@@ -345,6 +345,17 @@ function createSenderRegistry(logger = createConsoleLogger()) {
|
|
|
345
345
|
logger.warn(`Channel sender "${name}" sendMedia failed:`, error);
|
|
346
346
|
return false;
|
|
347
347
|
}
|
|
348
|
+
},
|
|
349
|
+
async sendReaction(name, chatId, messageRef, emoji) {
|
|
350
|
+
const sender = senders.get(name);
|
|
351
|
+
if (!sender?.sendReaction) return false;
|
|
352
|
+
try {
|
|
353
|
+
await sender.sendReaction(chatId, messageRef, emoji);
|
|
354
|
+
return true;
|
|
355
|
+
} catch (error) {
|
|
356
|
+
logger.warn(`Channel sender "${name}" sendReaction failed:`, error);
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
348
359
|
}
|
|
349
360
|
};
|
|
350
361
|
}
|
|
@@ -14,6 +14,12 @@ export interface ChannelSender {
|
|
|
14
14
|
sendVoice?(chatId: string, payload: unknown): Promise<void>;
|
|
15
15
|
/** Optional: channels without media support (or test fakes) stay valid without it. */
|
|
16
16
|
sendMedia?(chatId: string, payload: unknown): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Optional: channels without reaction support (or test fakes) stay valid
|
|
19
|
+
* without it. `messageRef` is transport-defined — WhatsApp's is the
|
|
20
|
+
* Baileys message key (see `ChannelMessage.messageRef`).
|
|
21
|
+
*/
|
|
22
|
+
sendReaction?(chatId: string, messageRef: unknown, emoji: string): Promise<void>;
|
|
17
23
|
}
|
|
18
24
|
export interface ChannelSenderRegistry {
|
|
19
25
|
register(name: string, sender: ChannelSender): void;
|
|
@@ -25,6 +31,8 @@ export interface ChannelSenderRegistry {
|
|
|
25
31
|
sendVoice(name: string, chatId: string, payload: unknown): Promise<boolean>;
|
|
26
32
|
/** False (not a throw) when the sender is missing, disconnected, or lacks media support. */
|
|
27
33
|
sendMedia(name: string, chatId: string, payload: unknown): Promise<boolean>;
|
|
34
|
+
/** False (not a throw) when the sender is missing, disconnected, or lacks reaction support. */
|
|
35
|
+
sendReaction(name: string, chatId: string, messageRef: unknown, emoji: string): Promise<boolean>;
|
|
28
36
|
}
|
|
29
37
|
/** One registry per server: channels register on start, callers send by name. */
|
|
30
38
|
export declare function createSenderRegistry(logger?: Logger): ChannelSenderRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senders.d.ts","sourceRoot":"","sources":["../../src/channels/senders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAElE,6GAA6G;AAC7G,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,sFAAsF;IACtF,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,sFAAsF;IACtF,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"senders.d.ts","sourceRoot":"","sources":["../../src/channels/senders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAElE,6GAA6G;AAC7G,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,sFAAsF;IACtF,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,sFAAsF;IACtF,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D;;;;OAIG;IACH,YAAY,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACpD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iGAAiG;IACjG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,4FAA4F;IAC5F,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,4FAA4F;IAC5F,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,+FAA+F;IAC/F,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClG;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,MAA8B,GACrC,qBAAqB,CA6DvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../src/channels/whatsapp/channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../src/channels/whatsapp/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../../src/channels/whatsapp/inbound.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,uBAAuB,EAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIrD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAOD,kGAAkG;AAClG,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAG/E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAID,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,gBAAgB,CAWnE;AAED,mHAAmH;AACnH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAWtD;AAeD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAiBvE;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,cAAc,CAAC;IACpB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,uBAAuB,GAChC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../../src/channels/whatsapp/inbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -465,6 +465,11 @@ function createWhatsAppChannel(config) {
|
|
|
465
465
|
const sender = {
|
|
466
466
|
sendText: async (chatId, text) => {
|
|
467
467
|
await sock.sendMessage(chatId, { text });
|
|
468
|
+
},
|
|
469
|
+
sendReaction: async (chatId, messageRef, emoji) => {
|
|
470
|
+
await sock.sendMessage(chatId, {
|
|
471
|
+
react: { text: emoji, key: messageRef }
|
|
472
|
+
});
|
|
468
473
|
}
|
|
469
474
|
};
|
|
470
475
|
deps.senders.register(senderName, sender);
|
|
@@ -967,7 +972,12 @@ function resolveWaMessage(event, registry) {
|
|
|
967
972
|
isDirectMessage: !isGroupJid(chatId),
|
|
968
973
|
mentionsBot: context.mentionedJids.some((jid) => ownIds.some((own) => jidsMatch(jid, own))),
|
|
969
974
|
isReplyToBot: ownIds.some((own) => jidsMatch(context.quotedParticipantJid, own)),
|
|
970
|
-
fromBot
|
|
975
|
+
fromBot,
|
|
976
|
+
// The Baileys message key — what `sendMessage(chatId, { react: { key, text } })`
|
|
977
|
+
// targets. Exposed generically so a caller reaching `msg` through
|
|
978
|
+
// `createInboundPipeline` (not just the WhatsApp-specific router) can
|
|
979
|
+
// still react to it via `ChannelSenderRegistry.sendReaction`.
|
|
980
|
+
messageRef: message.key
|
|
971
981
|
};
|
|
972
982
|
return { msg, ownIds };
|
|
973
983
|
}
|
|
@@ -1095,7 +1105,16 @@ function createWhatsAppMessageRouter(config) {
|
|
|
1095
1105
|
ownIds,
|
|
1096
1106
|
senderId: msg.senderId,
|
|
1097
1107
|
text: msg.text,
|
|
1098
|
-
action
|
|
1108
|
+
action,
|
|
1109
|
+
react: async (emoji) => {
|
|
1110
|
+
try {
|
|
1111
|
+
await sock.sendMessage(chatId, { react: { text: emoji, key: message.key } });
|
|
1112
|
+
return true;
|
|
1113
|
+
} catch (error) {
|
|
1114
|
+
await logDetectorError(config, logger, "react", error);
|
|
1115
|
+
return false;
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1099
1118
|
};
|
|
1100
1119
|
} catch (error) {
|
|
1101
1120
|
await logDetectorError(config, logger, "resolve", error);
|
|
@@ -403,6 +403,11 @@ function createWhatsAppChannel(config) {
|
|
|
403
403
|
const sender = {
|
|
404
404
|
sendText: async (chatId, text) => {
|
|
405
405
|
await sock.sendMessage(chatId, { text });
|
|
406
|
+
},
|
|
407
|
+
sendReaction: async (chatId, messageRef, emoji) => {
|
|
408
|
+
await sock.sendMessage(chatId, {
|
|
409
|
+
react: { text: emoji, key: messageRef }
|
|
410
|
+
});
|
|
406
411
|
}
|
|
407
412
|
};
|
|
408
413
|
deps.senders.register(senderName, sender);
|
|
@@ -905,7 +910,12 @@ function resolveWaMessage(event, registry) {
|
|
|
905
910
|
isDirectMessage: !isGroupJid(chatId),
|
|
906
911
|
mentionsBot: context.mentionedJids.some((jid) => ownIds.some((own) => jidsMatch(jid, own))),
|
|
907
912
|
isReplyToBot: ownIds.some((own) => jidsMatch(context.quotedParticipantJid, own)),
|
|
908
|
-
fromBot
|
|
913
|
+
fromBot,
|
|
914
|
+
// The Baileys message key — what `sendMessage(chatId, { react: { key, text } })`
|
|
915
|
+
// targets. Exposed generically so a caller reaching `msg` through
|
|
916
|
+
// `createInboundPipeline` (not just the WhatsApp-specific router) can
|
|
917
|
+
// still react to it via `ChannelSenderRegistry.sendReaction`.
|
|
918
|
+
messageRef: message.key
|
|
909
919
|
};
|
|
910
920
|
return { msg, ownIds };
|
|
911
921
|
}
|
|
@@ -1033,7 +1043,16 @@ function createWhatsAppMessageRouter(config) {
|
|
|
1033
1043
|
ownIds,
|
|
1034
1044
|
senderId: msg.senderId,
|
|
1035
1045
|
text: msg.text,
|
|
1036
|
-
action
|
|
1046
|
+
action,
|
|
1047
|
+
react: async (emoji) => {
|
|
1048
|
+
try {
|
|
1049
|
+
await sock.sendMessage(chatId, { react: { text: emoji, key: message.key } });
|
|
1050
|
+
return true;
|
|
1051
|
+
} catch (error) {
|
|
1052
|
+
await logDetectorError(config, logger, "react", error);
|
|
1053
|
+
return false;
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1037
1056
|
};
|
|
1038
1057
|
} catch (error) {
|
|
1039
1058
|
await logDetectorError(config, logger, "resolve", error);
|
|
@@ -62,6 +62,17 @@ export interface WaDetectorContext {
|
|
|
62
62
|
* unless the same mute inputs are also configured on the router.
|
|
63
63
|
*/
|
|
64
64
|
action: ChannelAction;
|
|
65
|
+
/**
|
|
66
|
+
* Reacts to the current message. Bound to `msg.chatId` and the Baileys
|
|
67
|
+
* message key already resolved onto `ctx` — a detector never re-derives
|
|
68
|
+
* the targeting. Only ever reachable for a message that already cleared
|
|
69
|
+
* the loop guard and `allowedChats` (the router resolves `ctx`, and
|
|
70
|
+
* therefore this, only after those checks pass), so it can never fire
|
|
71
|
+
* where a reply would be gated on those grounds. A failed send is caught
|
|
72
|
+
* and logged (same path as a detector error) and resolves `false` —
|
|
73
|
+
* never throws, never affects the reply path.
|
|
74
|
+
*/
|
|
75
|
+
react: (emoji: string) => Promise<boolean>;
|
|
65
76
|
}
|
|
66
77
|
interface DetectorBase {
|
|
67
78
|
/** Used only in warning logs when a detector throws. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/channels/whatsapp/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,uBAAuB,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,8FAA8F;AAC9F,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,cAAc,CAAC;IACpB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,MAAM,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/channels/whatsapp/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,uBAAuB,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,8FAA8F;AAC9F,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,cAAc,CAAC;IACpB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB;;;;;;;;;OASG;IACH,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED,UAAU,YAAY;IACpB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D;AAED,gIAAgI;AAChI,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,8IAA8I;AAC9I,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAEjE,MAAM,WAAW,2BAA2B;IAC1C,0GAA0G;IAC1G,QAAQ,EAAE,uBAAuB,CAAC;IAClC,4SAA4S;IAC5S,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yGAAyG;IACzG,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,8HAA8H;IAC9H,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgDD,wIAAwI;AACxI,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,2BAA2B,GAClC,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAqFhD"}
|
package/dist/index.js
CHANGED
|
@@ -1921,6 +1921,17 @@ function createSenderRegistry(logger = createConsoleLogger()) {
|
|
|
1921
1921
|
logger.warn(`Channel sender "${name}" sendMedia failed:`, error);
|
|
1922
1922
|
return false;
|
|
1923
1923
|
}
|
|
1924
|
+
},
|
|
1925
|
+
async sendReaction(name, chatId, messageRef, emoji) {
|
|
1926
|
+
const sender = senders.get(name);
|
|
1927
|
+
if (!sender?.sendReaction) return false;
|
|
1928
|
+
try {
|
|
1929
|
+
await sender.sendReaction(chatId, messageRef, emoji);
|
|
1930
|
+
return true;
|
|
1931
|
+
} catch (error) {
|
|
1932
|
+
logger.warn(`Channel sender "${name}" sendReaction failed:`, error);
|
|
1933
|
+
return false;
|
|
1934
|
+
}
|
|
1924
1935
|
}
|
|
1925
1936
|
};
|
|
1926
1937
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1848,6 +1848,17 @@ function createSenderRegistry(logger = createConsoleLogger()) {
|
|
|
1848
1848
|
logger.warn(`Channel sender "${name}" sendMedia failed:`, error);
|
|
1849
1849
|
return false;
|
|
1850
1850
|
}
|
|
1851
|
+
},
|
|
1852
|
+
async sendReaction(name, chatId, messageRef, emoji) {
|
|
1853
|
+
const sender = senders.get(name);
|
|
1854
|
+
if (!sender?.sendReaction) return false;
|
|
1855
|
+
try {
|
|
1856
|
+
await sender.sendReaction(chatId, messageRef, emoji);
|
|
1857
|
+
return true;
|
|
1858
|
+
} catch (error) {
|
|
1859
|
+
logger.warn(`Channel sender "${name}" sendReaction failed:`, error);
|
|
1860
|
+
return false;
|
|
1861
|
+
}
|
|
1851
1862
|
}
|
|
1852
1863
|
};
|
|
1853
1864
|
}
|
package/dist/server.js
CHANGED
|
@@ -453,6 +453,17 @@ function createSenderRegistry(logger = createConsoleLogger()) {
|
|
|
453
453
|
logger.warn(`Channel sender "${name}" sendMedia failed:`, error);
|
|
454
454
|
return false;
|
|
455
455
|
}
|
|
456
|
+
},
|
|
457
|
+
async sendReaction(name, chatId, messageRef, emoji) {
|
|
458
|
+
const sender = senders.get(name);
|
|
459
|
+
if (!sender?.sendReaction) return false;
|
|
460
|
+
try {
|
|
461
|
+
await sender.sendReaction(chatId, messageRef, emoji);
|
|
462
|
+
return true;
|
|
463
|
+
} catch (error) {
|
|
464
|
+
logger.warn(`Channel sender "${name}" sendReaction failed:`, error);
|
|
465
|
+
return false;
|
|
466
|
+
}
|
|
456
467
|
}
|
|
457
468
|
};
|
|
458
469
|
}
|
package/dist/server.mjs
CHANGED
|
@@ -419,6 +419,17 @@ function createSenderRegistry(logger = createConsoleLogger()) {
|
|
|
419
419
|
logger.warn(`Channel sender "${name}" sendMedia failed:`, error);
|
|
420
420
|
return false;
|
|
421
421
|
}
|
|
422
|
+
},
|
|
423
|
+
async sendReaction(name, chatId, messageRef, emoji) {
|
|
424
|
+
const sender = senders.get(name);
|
|
425
|
+
if (!sender?.sendReaction) return false;
|
|
426
|
+
try {
|
|
427
|
+
await sender.sendReaction(chatId, messageRef, emoji);
|
|
428
|
+
return true;
|
|
429
|
+
} catch (error) {
|
|
430
|
+
logger.warn(`Channel sender "${name}" sendReaction failed:`, error);
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
422
433
|
}
|
|
423
434
|
};
|
|
424
435
|
}
|
package/package.json
CHANGED