@a1hvdy/cc-openclaw 0.25.2 → 0.25.4
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.
|
@@ -27,6 +27,34 @@ import { sendTg, editTg } from '../../lib/telegram-bot-api.js';
|
|
|
27
27
|
import { CallbackMap } from './callback-mapping.js';
|
|
28
28
|
import { ComposeBuffer } from './compose-buffer.js';
|
|
29
29
|
const PLUGIN_TAG = '[cc-openclaw/telegram-mirror/inbound]';
|
|
30
|
+
/**
|
|
31
|
+
* Parse Telegram chat id out of a session key. Session keys look like
|
|
32
|
+
* "agent:main:telegram:direct:442300061" or
|
|
33
|
+
* "agent:main:telegram:group:-1001234567:topic:42". The tail segment(s)
|
|
34
|
+
* carry chatId (+ thread). DMs only have chatId.
|
|
35
|
+
*/
|
|
36
|
+
function chatIdFromSessionKey(sessionKey) {
|
|
37
|
+
if (!sessionKey)
|
|
38
|
+
return { chatId: '' };
|
|
39
|
+
const parts = sessionKey.split(':');
|
|
40
|
+
// Format: agent:main:telegram:direct:<chatId> OR
|
|
41
|
+
// agent:main:telegram:group:<chatId>:topic:<threadId>
|
|
42
|
+
if (parts.length < 5)
|
|
43
|
+
return { chatId: '' };
|
|
44
|
+
if (parts[3] === 'direct')
|
|
45
|
+
return { chatId: parts[4] };
|
|
46
|
+
if (parts[3] === 'group') {
|
|
47
|
+
const out = { chatId: parts[4] };
|
|
48
|
+
const topicIdx = parts.indexOf('topic');
|
|
49
|
+
if (topicIdx > 0 && parts[topicIdx + 1]) {
|
|
50
|
+
const t = Number(parts[topicIdx + 1]);
|
|
51
|
+
if (Number.isFinite(t))
|
|
52
|
+
out.threadId = t;
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
return { chatId: '' };
|
|
57
|
+
}
|
|
30
58
|
export function createHandlerState() {
|
|
31
59
|
return {
|
|
32
60
|
callbackMap: new CallbackMap(),
|
|
@@ -76,29 +104,43 @@ export function registerInboundHandler(api, state = createHandlerState()) {
|
|
|
76
104
|
const logger = (api.logger ?? console);
|
|
77
105
|
api.on('before_dispatch', async (...args) => {
|
|
78
106
|
const event = args[0];
|
|
79
|
-
// v0.25.2 — diagnostic trace of EVERY before_dispatch event seen, so the
|
|
80
|
-
// gateway log surfaces the shape we actually receive vs the shape we
|
|
81
|
-
// assume. Lands on stderr so PM2 captures regardless of stdout filtering.
|
|
82
|
-
process.stderr.write(`[cc-openclaw/telegram-mirror/inbound] before_dispatch seen: channel=${event?.channel ?? '?'} text=${typeof event?.raw?.message?.text === 'string' ? JSON.stringify(event.raw.message.text.slice(0, 60)) : 'n/a'} cb=${event?.raw?.callback_query ? 'yes' : 'no'}\n`);
|
|
83
107
|
if (!event)
|
|
84
108
|
return undefined;
|
|
85
109
|
if (event.channel !== 'telegram')
|
|
86
110
|
return undefined;
|
|
87
111
|
if (event.raw?.callback_query)
|
|
88
112
|
return undefined;
|
|
89
|
-
|
|
90
|
-
if
|
|
113
|
+
// Extract text from the canonical (2026.5.x) `event.content` field;
|
|
114
|
+
// fall back to legacy nested paths if a future gateway version reverts.
|
|
115
|
+
const text = (typeof event.content === 'string' ? event.content : undefined) ??
|
|
116
|
+
event.raw?.message?.text;
|
|
117
|
+
if (typeof text !== 'string') {
|
|
118
|
+
process.stderr.write(`[cc-openclaw/telegram-mirror/inbound] no text in event (skipped)\n`);
|
|
91
119
|
return undefined;
|
|
120
|
+
}
|
|
121
|
+
// Diagnostic trace stays — useful for soak observation. Kept short.
|
|
122
|
+
process.stderr.write(`[cc-openclaw/telegram-mirror/inbound] before_dispatch seen: text=${JSON.stringify(text.slice(0, 60))}\n`);
|
|
92
123
|
const parsed = parseSlash(text);
|
|
93
124
|
if (!parsed)
|
|
94
125
|
return undefined;
|
|
95
|
-
if (!MIRROR_COMMANDS.has(parsed.cmd))
|
|
126
|
+
if (!MIRROR_COMMANDS.has(parsed.cmd)) {
|
|
127
|
+
process.stderr.write(`[cc-openclaw/telegram-mirror/inbound] unknown command /${parsed.cmd} (not claimed)\n`);
|
|
96
128
|
return undefined;
|
|
97
|
-
|
|
98
|
-
|
|
129
|
+
}
|
|
130
|
+
// chatId / threadId from sessionKey OR senderId (DM fallback).
|
|
131
|
+
const fromKey = chatIdFromSessionKey(event.sessionKey);
|
|
132
|
+
let chatId = fromKey.chatId;
|
|
133
|
+
let threadId = fromKey.threadId;
|
|
134
|
+
if (!chatId && event.senderId !== undefined)
|
|
135
|
+
chatId = String(event.senderId);
|
|
99
136
|
if (!chatId)
|
|
137
|
+
chatId = event.raw?.message?.chat?.id !== undefined ? String(event.raw.message.chat.id) : '';
|
|
138
|
+
if (!chatId) {
|
|
139
|
+
process.stderr.write(`[cc-openclaw/telegram-mirror/inbound] could not extract chatId (sessionKey=${event.sessionKey ?? '?'}, senderId=${event.senderId ?? '?'})\n`);
|
|
100
140
|
return undefined;
|
|
101
|
-
|
|
141
|
+
}
|
|
142
|
+
if (threadId === undefined)
|
|
143
|
+
threadId = event.raw?.message?.message_thread_id;
|
|
102
144
|
const result = dispatchCommand(parsed, {
|
|
103
145
|
chatId,
|
|
104
146
|
callbackMap: state.callbackMap,
|
|
@@ -109,7 +151,9 @@ export function registerInboundHandler(api, state = createHandlerState()) {
|
|
|
109
151
|
for (const action of result.actions) {
|
|
110
152
|
await forwardAction(action, threadId, logger);
|
|
111
153
|
}
|
|
112
|
-
|
|
154
|
+
const dispatchLog = `${PLUGIN_TAG} dispatched /${parsed.cmd}${parsed.args.length ? ' ' + parsed.args.join(' ') : ''} (chat=${chatId}, actions=${result.actions.length})`;
|
|
155
|
+
logger.info(dispatchLog);
|
|
156
|
+
process.stderr.write(`${dispatchLog}\n`);
|
|
113
157
|
return { handled: true };
|
|
114
158
|
});
|
|
115
159
|
logger.info(`${PLUGIN_TAG} subscribed to before_dispatch — ${MIRROR_COMMANDS.size} commands armed.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound-handler.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/inbound-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAuB,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,GAAG,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"inbound-handler.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/inbound-handler.ts"],"names":[],"mappings":"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"}
|