@llblab/pi-telegram 0.46.0 → 0.47.0
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/BACKLOG.md +0 -1
- package/CHANGELOG.md +8 -0
- package/README.md +2 -2
- package/dist/api/activity.d.ts +6 -0
- package/dist/api/activity.js +6 -0
- package/dist/api/commands.d.ts +6 -0
- package/dist/api/commands.js +6 -0
- package/dist/api/delivery.d.ts +6 -0
- package/dist/api/delivery.js +6 -0
- package/dist/api/inbound.d.ts +6 -0
- package/dist/api/inbound.js +6 -0
- package/dist/api/keyboard.d.ts +6 -0
- package/dist/api/keyboard.js +6 -0
- package/dist/api/outbound.d.ts +6 -0
- package/dist/api/outbound.js +6 -0
- package/dist/api/sections.d.ts +7 -0
- package/dist/api/sections.js +6 -0
- package/dist/api/status.d.ts +6 -0
- package/dist/api/status.js +6 -0
- package/dist/api/updates.d.ts +6 -0
- package/dist/api/updates.js +6 -0
- package/dist/api/voice.d.ts +6 -0
- package/dist/api/voice.js +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/lib/activity-verbosity.d.ts +52 -0
- package/dist/lib/activity-verbosity.js +596 -0
- package/dist/lib/activity.d.ts +220 -0
- package/dist/lib/activity.js +574 -0
- package/dist/lib/agent-messages.d.ts +28 -0
- package/dist/lib/agent-messages.js +86 -0
- package/dist/lib/bindings.d.ts +250 -0
- package/dist/lib/bindings.js +936 -0
- package/dist/lib/bus-api.d.ts +18 -0
- package/dist/lib/bus-api.js +254 -0
- package/dist/lib/bus-follower.d.ts +464 -0
- package/dist/lib/bus-follower.js +1686 -0
- package/dist/lib/bus-leader.d.ts +292 -0
- package/dist/lib/bus-leader.js +2242 -0
- package/dist/lib/bus-transport.d.ts +64 -0
- package/dist/lib/bus-transport.js +140 -0
- package/dist/lib/bus.d.ts +518 -0
- package/dist/lib/bus.js +2055 -0
- package/dist/lib/channel-posts.d.ts +170 -0
- package/dist/lib/channel-posts.js +611 -0
- package/dist/lib/command-templates.d.ts +70 -0
- package/dist/lib/command-templates.js +744 -0
- package/dist/lib/commands.d.ts +541 -0
- package/dist/lib/commands.js +1155 -0
- package/dist/lib/config.d.ts +252 -0
- package/dist/lib/config.js +889 -0
- package/dist/lib/delivery.d.ts +163 -0
- package/dist/lib/delivery.js +542 -0
- package/dist/lib/extension.d.ts +7 -0
- package/dist/lib/extension.js +1608 -0
- package/dist/lib/generative-app-worker.mjs +104 -0
- package/dist/lib/generative-apps.d.ts +212 -0
- package/dist/lib/generative-apps.js +1006 -0
- package/dist/lib/inbound.d.ts +91 -0
- package/dist/lib/inbound.js +502 -0
- package/dist/lib/journal.d.ts +665 -0
- package/dist/lib/journal.js +3701 -0
- package/dist/lib/keyboard.d.ts +23 -0
- package/dist/lib/keyboard.js +37 -0
- package/dist/lib/lifecycle.d.ts +157 -0
- package/dist/lib/lifecycle.js +395 -0
- package/dist/lib/locks.d.ts +164 -0
- package/dist/lib/locks.js +1208 -0
- package/dist/lib/logging.d.ts +50 -0
- package/dist/lib/logging.js +274 -0
- package/dist/lib/media.d.ts +181 -0
- package/dist/lib/media.js +602 -0
- package/dist/lib/menu-model.d.ts +217 -0
- package/dist/lib/menu-model.js +663 -0
- package/dist/lib/menu-queue.d.ts +37 -0
- package/dist/lib/menu-queue.js +408 -0
- package/dist/lib/menu-settings.d.ts +116 -0
- package/dist/lib/menu-settings.js +595 -0
- package/dist/lib/menu-status.d.ts +32 -0
- package/dist/lib/menu-status.js +112 -0
- package/dist/lib/menu-thinking.d.ts +29 -0
- package/dist/lib/menu-thinking.js +82 -0
- package/dist/lib/menu.d.ts +171 -0
- package/dist/lib/menu.js +323 -0
- package/dist/lib/model.d.ts +127 -0
- package/dist/lib/model.js +409 -0
- package/dist/lib/outbound-attachments.d.ts +241 -0
- package/dist/lib/outbound-attachments.js +639 -0
- package/dist/lib/outbound-buttons.d.ts +69 -0
- package/dist/lib/outbound-buttons.js +248 -0
- package/dist/lib/outbound-markup.d.ts +42 -0
- package/dist/lib/outbound-markup.js +678 -0
- package/dist/lib/outbound-voice.d.ts +55 -0
- package/dist/lib/outbound-voice.js +152 -0
- package/dist/lib/outbound.d.ts +185 -0
- package/dist/lib/outbound.js +516 -0
- package/dist/lib/ownership.d.ts +77 -0
- package/dist/lib/ownership.js +174 -0
- package/dist/lib/paths.d.ts +40 -0
- package/dist/lib/paths.js +94 -0
- package/dist/lib/pi.d.ts +72 -0
- package/dist/lib/pi.js +121 -0
- package/dist/lib/polling.d.ts +351 -0
- package/dist/lib/polling.js +1196 -0
- package/dist/lib/preview.d.ts +192 -0
- package/dist/lib/preview.js +614 -0
- package/dist/lib/prompt-templates.d.ts +24 -0
- package/dist/lib/prompt-templates.js +118 -0
- package/dist/lib/prompts.d.ts +57 -0
- package/dist/lib/prompts.js +167 -0
- package/dist/lib/queue.d.ts +766 -0
- package/dist/lib/queue.js +1965 -0
- package/dist/lib/recovery.d.ts +86 -0
- package/dist/lib/recovery.js +285 -0
- package/dist/lib/rendering.d.ts +20 -0
- package/dist/lib/rendering.js +983 -0
- package/dist/lib/replies.d.ts +214 -0
- package/dist/lib/replies.js +737 -0
- package/dist/lib/routing.d.ts +207 -0
- package/dist/lib/routing.js +2282 -0
- package/dist/lib/runtime.d.ts +172 -0
- package/dist/lib/runtime.js +402 -0
- package/dist/lib/sections.d.ts +165 -0
- package/dist/lib/sections.js +327 -0
- package/dist/lib/setup.d.ts +82 -0
- package/dist/lib/setup.js +150 -0
- package/dist/lib/skills.d.ts +8 -0
- package/dist/lib/skills.js +12 -0
- package/dist/lib/status.d.ts +442 -0
- package/dist/lib/status.js +1006 -0
- package/dist/lib/sync.d.ts +179 -0
- package/dist/lib/sync.js +782 -0
- package/dist/lib/target.d.ts +20 -0
- package/dist/lib/target.js +27 -0
- package/dist/lib/telegram-api.d.ts +541 -0
- package/dist/lib/telegram-api.js +1159 -0
- package/dist/lib/text-groups.d.ts +89 -0
- package/dist/lib/text-groups.js +317 -0
- package/dist/lib/thread-cleanup-manager.d.ts +288 -0
- package/dist/lib/thread-cleanup-manager.js +560 -0
- package/dist/lib/thread-display.d.ts +46 -0
- package/dist/lib/thread-display.js +257 -0
- package/dist/lib/thread-naming.d.ts +46 -0
- package/dist/lib/thread-naming.js +78 -0
- package/dist/lib/thread-reconciler.d.ts +239 -0
- package/dist/lib/thread-reconciler.js +644 -0
- package/dist/lib/threads.d.ts +621 -0
- package/dist/lib/threads.js +3679 -0
- package/dist/lib/time-injection.d.ts +15 -0
- package/dist/lib/time-injection.js +56 -0
- package/dist/lib/turns.d.ts +109 -0
- package/dist/lib/turns.js +500 -0
- package/dist/lib/updates.d.ts +1290 -0
- package/dist/lib/updates.js +3634 -0
- package/dist/lib/voice.d.ts +117 -0
- package/dist/lib/voice.js +174 -0
- package/dist/lib/workspace-admission.d.ts +264 -0
- package/dist/lib/workspace-admission.js +1136 -0
- package/dist/lib/workspace-retirement.d.ts +219 -0
- package/dist/lib/workspace-retirement.js +587 -0
- package/dist/lib/workspace-slots.d.ts +30 -0
- package/dist/lib/workspace-slots.js +54 -0
- package/dist/package.json +126 -0
- package/dist/pi-telegram/index.js +1 -0
- package/dist/skills/generated-control-surface/SKILL.md +107 -0
- package/dist/skills/generated-control-surface/references/capability-adapters.md +27 -0
- package/dist/skills/generated-control-surface/references/layout-and-state.md +37 -0
- package/dist/skills/generative-apps/SKILL.md +115 -0
- package/dist/skills/show-me/SKILL.md +166 -0
- package/dist/skills/show-me/references/telegram-surfaces.md +43 -0
- package/dist/skills/telegram-bridge/SKILL.md +129 -0
- package/dist/skills/telegram-bridge/references/configuration.md +15 -0
- package/dist/skills/telegram-bridge/references/delivery-and-threads.md +27 -0
- package/dist/skills/telegram-bridge/references/diagnosis.md +18 -0
- package/docs/architecture.md +1 -1
- package/docs/compact-matrix-literal.md +10 -3
- package/docs/generative-apps.md +15 -13
- package/docs/multi-instance-bus.md +4 -2
- package/docs/outbound.md +1 -1
- package/docs/public-api.md +2 -2
- package/lib/bindings.ts +89 -6
- package/lib/bus-follower.ts +7 -3
- package/lib/bus-leader.ts +44 -19
- package/lib/bus.ts +4 -1
- package/lib/commands.ts +2 -2
- package/lib/config.ts +14 -7
- package/lib/delivery.ts +38 -6
- package/lib/extension.ts +19 -0
- package/lib/generative-apps.ts +379 -13
- package/lib/menu-settings.ts +21 -5
- package/lib/outbound-markup.ts +16 -7
- package/lib/telegram-api.ts +12 -1
- package/lib/thread-display.ts +96 -18
- package/package.json +56 -13
- package/scripts/build-dist.mjs +44 -0
- package/scripts/measure-bus.mjs +8 -1
- package/scripts/measure-workspace.mjs +8 -1
- package/skills/generative-apps/SKILL.md +1 -1
- package/skills/telegram-bridge/SKILL.md +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram bus-aware API runtime
|
|
3
|
+
* Zones: multi-instance bus, telegram api transport, live instance routing
|
|
4
|
+
* Wraps the direct Telegram Bot API runtime so follower instances can route outbound calls through the bus leader
|
|
5
|
+
*/
|
|
6
|
+
import type { TelegramBridgeApiRuntime } from "./telegram-api.ts";
|
|
7
|
+
export type TelegramBusApiCall = (method: string, args: unknown[]) => Promise<unknown>;
|
|
8
|
+
export interface TelegramBusAwareApiRuntimeDeps {
|
|
9
|
+
directRuntime: TelegramBridgeApiRuntime;
|
|
10
|
+
ownsDirect: () => boolean;
|
|
11
|
+
callFollowerApi: TelegramBusApiCall;
|
|
12
|
+
getDefaultTarget?: () => {
|
|
13
|
+
chatId: number;
|
|
14
|
+
threadId?: number;
|
|
15
|
+
} | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare function createTelegramAggregateTypingActionSender(runtime: Pick<TelegramBridgeApiRuntime, "call">): (chatId: number) => Promise<unknown>;
|
|
18
|
+
export declare function createTelegramBusAwareApiRuntime(deps: TelegramBusAwareApiRuntimeDeps): TelegramBridgeApiRuntime;
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram bus-aware API runtime
|
|
3
|
+
* Zones: multi-instance bus, telegram api transport, live instance routing
|
|
4
|
+
* Wraps the direct Telegram Bot API runtime so follower instances can route outbound calls through the bus leader
|
|
5
|
+
*/
|
|
6
|
+
import { markTelegramBusCrossTargetDelivery, stripTelegramBusApiMetadata, } from "./bus.js";
|
|
7
|
+
import { buildTelegramAnswerGuestQueryBody, isTelegramMessageNotModifiedError, } from "./telegram-api.js";
|
|
8
|
+
function asRecord(value) {
|
|
9
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
10
|
+
? value
|
|
11
|
+
: {};
|
|
12
|
+
}
|
|
13
|
+
function asBoolean(value) {
|
|
14
|
+
return Boolean(value);
|
|
15
|
+
}
|
|
16
|
+
function asSentMessage(value) {
|
|
17
|
+
return asRecord(value);
|
|
18
|
+
}
|
|
19
|
+
function withDefaultThreadTarget(body, target) {
|
|
20
|
+
if (target?.threadId === undefined)
|
|
21
|
+
return body;
|
|
22
|
+
if (body.message_thread_id !== undefined)
|
|
23
|
+
return body;
|
|
24
|
+
return body.chat_id === target.chatId
|
|
25
|
+
? { ...body, message_thread_id: target.threadId }
|
|
26
|
+
: body;
|
|
27
|
+
}
|
|
28
|
+
function markFollowerCrossTargetDelivery(body, defaultTarget) {
|
|
29
|
+
if (!defaultTarget || body.chat_id !== defaultTarget.chatId)
|
|
30
|
+
return body;
|
|
31
|
+
const threadId = body.message_thread_id;
|
|
32
|
+
const isDifferentTarget = threadId === undefined
|
|
33
|
+
? defaultTarget.threadId !== undefined
|
|
34
|
+
: threadId !== defaultTarget.threadId;
|
|
35
|
+
return isDifferentTarget ? markTelegramBusCrossTargetDelivery(body) : body;
|
|
36
|
+
}
|
|
37
|
+
function rejectTelegramDirectOwnership(method) {
|
|
38
|
+
return Promise.reject(new Error(`Telegram ${method} requires direct transport ownership.`));
|
|
39
|
+
}
|
|
40
|
+
export function createTelegramAggregateTypingActionSender(runtime) {
|
|
41
|
+
return (chatId) => runtime.call("sendChatAction", { chat_id: chatId, action: "typing" });
|
|
42
|
+
}
|
|
43
|
+
export function createTelegramBusAwareApiRuntime(deps) {
|
|
44
|
+
return {
|
|
45
|
+
call(method, body, options) {
|
|
46
|
+
return deps.ownsDirect()
|
|
47
|
+
? deps.directRuntime.call(method, body, options)
|
|
48
|
+
: deps.callFollowerApi("call", [
|
|
49
|
+
method,
|
|
50
|
+
body,
|
|
51
|
+
options,
|
|
52
|
+
]);
|
|
53
|
+
},
|
|
54
|
+
callMultipart(method, fields, fileField, filePath, fileName, options) {
|
|
55
|
+
return deps.ownsDirect()
|
|
56
|
+
? deps.directRuntime.callMultipart(method, fields, fileField, filePath, fileName, options)
|
|
57
|
+
: deps.callFollowerApi("callMultipart", [
|
|
58
|
+
method,
|
|
59
|
+
fields,
|
|
60
|
+
fileField,
|
|
61
|
+
filePath,
|
|
62
|
+
fileName,
|
|
63
|
+
options,
|
|
64
|
+
]);
|
|
65
|
+
},
|
|
66
|
+
downloadFile(fileId, suggestedName) {
|
|
67
|
+
return deps.ownsDirect()
|
|
68
|
+
? deps.directRuntime.downloadFile(fileId, suggestedName)
|
|
69
|
+
: deps.callFollowerApi("downloadFile", [
|
|
70
|
+
fileId,
|
|
71
|
+
suggestedName,
|
|
72
|
+
]);
|
|
73
|
+
},
|
|
74
|
+
deleteWebhook(signal) {
|
|
75
|
+
return deps.ownsDirect()
|
|
76
|
+
? deps.directRuntime.deleteWebhook(signal)
|
|
77
|
+
: rejectTelegramDirectOwnership("deleteWebhook");
|
|
78
|
+
},
|
|
79
|
+
getUpdates(body, signal) {
|
|
80
|
+
return deps.ownsDirect()
|
|
81
|
+
? deps.directRuntime.getUpdates(body, signal)
|
|
82
|
+
: rejectTelegramDirectOwnership("getUpdates");
|
|
83
|
+
},
|
|
84
|
+
setMyCommands(commands) {
|
|
85
|
+
return deps.ownsDirect()
|
|
86
|
+
? deps.directRuntime.setMyCommands(commands)
|
|
87
|
+
: deps
|
|
88
|
+
.callFollowerApi("call", ["setMyCommands", { commands }])
|
|
89
|
+
.then(asBoolean);
|
|
90
|
+
},
|
|
91
|
+
sendChatAction(chatId, action, options) {
|
|
92
|
+
const body = withDefaultThreadTarget({
|
|
93
|
+
chat_id: chatId,
|
|
94
|
+
action,
|
|
95
|
+
...(options?.message_thread_id !== undefined
|
|
96
|
+
? { message_thread_id: options.message_thread_id }
|
|
97
|
+
: {}),
|
|
98
|
+
}, deps.getDefaultTarget?.());
|
|
99
|
+
return deps.ownsDirect()
|
|
100
|
+
? deps.directRuntime.sendChatAction(chatId, action, options)
|
|
101
|
+
: deps
|
|
102
|
+
.callFollowerApi("call", ["sendChatAction", body])
|
|
103
|
+
.then(asBoolean);
|
|
104
|
+
},
|
|
105
|
+
sendTypingAction(chatId, options) {
|
|
106
|
+
const body = withDefaultThreadTarget({
|
|
107
|
+
chat_id: chatId,
|
|
108
|
+
action: "typing",
|
|
109
|
+
...(options?.message_thread_id !== undefined
|
|
110
|
+
? { message_thread_id: options.message_thread_id }
|
|
111
|
+
: {}),
|
|
112
|
+
}, deps.getDefaultTarget?.());
|
|
113
|
+
return deps.ownsDirect()
|
|
114
|
+
? deps.directRuntime.sendTypingAction(chatId, options)
|
|
115
|
+
: deps
|
|
116
|
+
.callFollowerApi("call", ["sendChatAction", body])
|
|
117
|
+
.then(asBoolean);
|
|
118
|
+
},
|
|
119
|
+
sendRecordVoiceAction(chatId, options) {
|
|
120
|
+
const body = withDefaultThreadTarget({
|
|
121
|
+
chat_id: chatId,
|
|
122
|
+
action: "record_voice",
|
|
123
|
+
...(options?.message_thread_id !== undefined
|
|
124
|
+
? { message_thread_id: options.message_thread_id }
|
|
125
|
+
: {}),
|
|
126
|
+
}, deps.getDefaultTarget?.());
|
|
127
|
+
return deps.ownsDirect()
|
|
128
|
+
? deps.directRuntime.sendRecordVoiceAction(chatId, options)
|
|
129
|
+
: deps
|
|
130
|
+
.callFollowerApi("call", ["sendChatAction", body])
|
|
131
|
+
.then(asBoolean);
|
|
132
|
+
},
|
|
133
|
+
sendMessageDraft(chatId, draftId, text, options) {
|
|
134
|
+
const body = {
|
|
135
|
+
chat_id: chatId,
|
|
136
|
+
draft_id: draftId,
|
|
137
|
+
};
|
|
138
|
+
if (text !== undefined)
|
|
139
|
+
body.text = text;
|
|
140
|
+
if (options?.parse_mode !== undefined)
|
|
141
|
+
body.parse_mode = options.parse_mode;
|
|
142
|
+
if (options?.entities !== undefined)
|
|
143
|
+
body.entities = options.entities;
|
|
144
|
+
if (options?.message_thread_id !== undefined) {
|
|
145
|
+
body.message_thread_id = options.message_thread_id;
|
|
146
|
+
}
|
|
147
|
+
const scopedBody = withDefaultThreadTarget(body, deps.getDefaultTarget?.());
|
|
148
|
+
return deps.ownsDirect()
|
|
149
|
+
? deps.directRuntime.sendMessageDraft(chatId, draftId, text, options)
|
|
150
|
+
: deps
|
|
151
|
+
.callFollowerApi("call", ["sendMessageDraft", scopedBody])
|
|
152
|
+
.then(asBoolean);
|
|
153
|
+
},
|
|
154
|
+
sendMessage(body) {
|
|
155
|
+
return deps.ownsDirect()
|
|
156
|
+
? deps.directRuntime.sendMessage(stripTelegramBusApiMetadata(body))
|
|
157
|
+
: deps
|
|
158
|
+
.callFollowerApi("call", [
|
|
159
|
+
"sendMessage",
|
|
160
|
+
markFollowerCrossTargetDelivery(body, deps.getDefaultTarget?.()),
|
|
161
|
+
])
|
|
162
|
+
.then(asSentMessage);
|
|
163
|
+
},
|
|
164
|
+
sendRichMessage(body) {
|
|
165
|
+
return deps.ownsDirect()
|
|
166
|
+
? deps.directRuntime.sendRichMessage(stripTelegramBusApiMetadata(body))
|
|
167
|
+
: deps
|
|
168
|
+
.callFollowerApi("call", [
|
|
169
|
+
"sendRichMessage",
|
|
170
|
+
markFollowerCrossTargetDelivery(body, deps.getDefaultTarget?.()),
|
|
171
|
+
])
|
|
172
|
+
.then(asSentMessage);
|
|
173
|
+
},
|
|
174
|
+
sendRichMessageDraft(body) {
|
|
175
|
+
return deps.ownsDirect()
|
|
176
|
+
? deps.directRuntime.sendRichMessageDraft(body)
|
|
177
|
+
: deps
|
|
178
|
+
.callFollowerApi("call", ["sendRichMessageDraft", body])
|
|
179
|
+
.then(asBoolean);
|
|
180
|
+
},
|
|
181
|
+
async editMessageText(body) {
|
|
182
|
+
if (deps.ownsDirect())
|
|
183
|
+
return deps.directRuntime.editMessageText(body);
|
|
184
|
+
try {
|
|
185
|
+
await deps.callFollowerApi("call", ["editMessageText", body]);
|
|
186
|
+
return "edited";
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
if (isTelegramMessageNotModifiedError(error))
|
|
190
|
+
return "unchanged";
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
async editMessageReplyMarkup(chatId, messageId, replyMarkup) {
|
|
195
|
+
if (deps.ownsDirect()) {
|
|
196
|
+
await deps.directRuntime.editMessageReplyMarkup(chatId, messageId, replyMarkup);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
await deps.callFollowerApi("call", [
|
|
200
|
+
"editMessageReplyMarkup",
|
|
201
|
+
{ chat_id: chatId, message_id: messageId, reply_markup: replyMarkup },
|
|
202
|
+
]);
|
|
203
|
+
},
|
|
204
|
+
async answerCallbackQuery(callbackQueryId, text) {
|
|
205
|
+
if (deps.ownsDirect()) {
|
|
206
|
+
await deps.directRuntime.answerCallbackQuery(callbackQueryId, text);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
await deps.callFollowerApi("call", [
|
|
210
|
+
"answerCallbackQuery",
|
|
211
|
+
{
|
|
212
|
+
callback_query_id: callbackQueryId,
|
|
213
|
+
...(text !== undefined ? { text } : {}),
|
|
214
|
+
},
|
|
215
|
+
]);
|
|
216
|
+
},
|
|
217
|
+
async answerGuestQuery(guestQueryId, text, options) {
|
|
218
|
+
if (deps.ownsDirect()) {
|
|
219
|
+
await deps.directRuntime.answerGuestQuery(guestQueryId, text, options);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
await deps.callFollowerApi("call", [
|
|
223
|
+
"answerGuestQuery",
|
|
224
|
+
buildTelegramAnswerGuestQueryBody(guestQueryId, text, options),
|
|
225
|
+
]);
|
|
226
|
+
},
|
|
227
|
+
answerGuestQueryForInlineMessage(guestQueryId, text, options) {
|
|
228
|
+
// Guest answers can only be edited while this instance owns direct
|
|
229
|
+
// transport; follower forwarding cannot preserve the inline message id.
|
|
230
|
+
return deps.ownsDirect()
|
|
231
|
+
? deps.directRuntime.answerGuestQueryForInlineMessage(guestQueryId, text, options)
|
|
232
|
+
: rejectTelegramDirectOwnership("answerGuestQueryForInlineMessage");
|
|
233
|
+
},
|
|
234
|
+
editGuestInlineMessage(inlineMessageId, content) {
|
|
235
|
+
return deps.ownsDirect()
|
|
236
|
+
? deps.directRuntime.editGuestInlineMessage(inlineMessageId, content)
|
|
237
|
+
: rejectTelegramDirectOwnership("editGuestInlineMessage");
|
|
238
|
+
},
|
|
239
|
+
async deleteMessage(chatId, messageId) {
|
|
240
|
+
if (deps.ownsDirect())
|
|
241
|
+
return deps.directRuntime.deleteMessage(chatId, messageId);
|
|
242
|
+
await deps.callFollowerApi("call", [
|
|
243
|
+
"deleteMessage",
|
|
244
|
+
{
|
|
245
|
+
chat_id: chatId,
|
|
246
|
+
message_id: messageId,
|
|
247
|
+
},
|
|
248
|
+
]);
|
|
249
|
+
},
|
|
250
|
+
prepareTempDir() {
|
|
251
|
+
return deps.directRuntime.prepareTempDir();
|
|
252
|
+
},
|
|
253
|
+
};
|
|
254
|
+
}
|