@effect-ak/tg-bot-client 0.5.0 → 0.5.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/index.d.ts +27 -8
- package/dist/index.js +22 -651
- package/dist/index.mjs +22 -605
- package/package.json +1 -1
- package/readme.md +11 -4
package/dist/index.js
CHANGED
|
@@ -1,651 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
for (var name in all)
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/index.ts
|
|
31
|
-
var src_exports = {};
|
|
32
|
-
__export(src_exports, {
|
|
33
|
-
BotResponse: () => BotResponse,
|
|
34
|
-
BotRunService: () => BotRunService,
|
|
35
|
-
BotUpdateHandlersTag: () => BotUpdateHandlersTag,
|
|
36
|
-
MESSAGE_EFFECTS: () => MESSAGE_EFFECTS,
|
|
37
|
-
defaultBaseUrl: () => defaultBaseUrl,
|
|
38
|
-
isMessageEffect: () => isMessageEffect,
|
|
39
|
-
launchBot: () => launchBot,
|
|
40
|
-
makeTgBotClient: () => makeTgBotClient,
|
|
41
|
-
messageEffectIdCodes: () => messageEffectIdCodes,
|
|
42
|
-
runTgChatBot: () => runTgChatBot
|
|
43
|
-
});
|
|
44
|
-
module.exports = __toCommonJS(src_exports);
|
|
45
|
-
|
|
46
|
-
// src/bot/internal/launch.ts
|
|
47
|
-
var Micro6 = __toESM(require("effect/Micro"));
|
|
48
|
-
var Context6 = __toESM(require("effect/Context"));
|
|
49
|
-
|
|
50
|
-
// src/client/config.ts
|
|
51
|
-
var Context = __toESM(require("effect/Context"));
|
|
52
|
-
|
|
53
|
-
// src/const.ts
|
|
54
|
-
var defaultBaseUrl = "https://api.telegram.org";
|
|
55
|
-
var MESSAGE_EFFECTS = {
|
|
56
|
-
"\u{1F525}": "5104841245755180586",
|
|
57
|
-
"\u{1F44D}": "5107584321108051014",
|
|
58
|
-
"\u{1F44E}": "5104858069142078462",
|
|
59
|
-
"\u2764\uFE0F": "5159385139981059251",
|
|
60
|
-
"\u{1F389}": "5046509860389126442",
|
|
61
|
-
"\u{1F4A9}": "5046589136895476101"
|
|
62
|
-
};
|
|
63
|
-
var messageEffectIdCodes = Object.keys(MESSAGE_EFFECTS);
|
|
64
|
-
var isMessageEffect = (input) => {
|
|
65
|
-
return typeof input === "string" && input in MESSAGE_EFFECTS;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// src/client/config.ts
|
|
69
|
-
var makeTgBotClientConfig = (input) => TgBotClientConfig.of({
|
|
70
|
-
...input,
|
|
71
|
-
base_url: input.base_url ?? defaultBaseUrl
|
|
72
|
-
});
|
|
73
|
-
var TgBotClientConfig = class extends Context.Tag("TgBotClientConfig")() {
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
// src/bot/internal/types.ts
|
|
77
|
-
var Data = __toESM(require("effect/Data"));
|
|
78
|
-
var Context2 = __toESM(require("effect/Context"));
|
|
79
|
-
var BotResponse = class _BotResponse extends Data.TaggedClass("BotResponse") {
|
|
80
|
-
static make(result) {
|
|
81
|
-
return new _BotResponse({ response: result });
|
|
82
|
-
}
|
|
83
|
-
static ignore = new _BotResponse({});
|
|
84
|
-
};
|
|
85
|
-
var BotUpdateHandlersTag = class extends Context2.Tag("BotUpdateHandlers")() {
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
// src/bot/service/run.ts
|
|
89
|
-
var Micro4 = __toESM(require("effect/Micro"));
|
|
90
|
-
var Context5 = __toESM(require("effect/Context"));
|
|
91
|
-
|
|
92
|
-
// src/bot/internal/handle-update.ts
|
|
93
|
-
var Micro2 = __toESM(require("effect/Micro"));
|
|
94
|
-
var Data3 = __toESM(require("effect/Data"));
|
|
95
|
-
|
|
96
|
-
// src/bot/internal/utils.ts
|
|
97
|
-
var extractUpdate = (input) => {
|
|
98
|
-
for (const [field, value] of Object.entries(input)) {
|
|
99
|
-
if (field == "update_id") {
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
return {
|
|
103
|
-
type: field,
|
|
104
|
-
...value
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
return;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
// src/client/execute-request/execute.ts
|
|
111
|
-
var Micro = __toESM(require("effect/Micro"));
|
|
112
|
-
var String = __toESM(require("effect/String"));
|
|
113
|
-
|
|
114
|
-
// src/client/errors.ts
|
|
115
|
-
var import_Data = require("effect/Data");
|
|
116
|
-
var TgBotClientError = class _TgBotClientError extends (0, import_Data.TaggedError)("TgBotClientError") {
|
|
117
|
-
static missingSuccess = new _TgBotClientError({
|
|
118
|
-
reason: {
|
|
119
|
-
type: "ClientInternalError",
|
|
120
|
-
cause: "Expected 'success' to be defined"
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
// src/client/guards.ts
|
|
126
|
-
var isFileContent = (input) => typeof input == "object" && input != null && ("file_content" in input && input.file_content instanceof Uint8Array) && ("file_name" in input && typeof input.file_name == "string");
|
|
127
|
-
var isTgBotApiResponse = (input) => typeof input == "object" && input != null && ("ok" in input && typeof input.ok == "boolean");
|
|
128
|
-
var isTgBotClientSettingsInput = (input) => typeof input == "object" && input != null && ("bot_token" in input && typeof input.bot_token == "string");
|
|
129
|
-
|
|
130
|
-
// src/client/execute-request/payload.ts
|
|
131
|
-
var makePayload = (body) => {
|
|
132
|
-
const entries = Object.entries(body);
|
|
133
|
-
if (entries.length == 0) return void 0;
|
|
134
|
-
const result = new FormData();
|
|
135
|
-
for (const [key, value] of entries) {
|
|
136
|
-
if (!value) continue;
|
|
137
|
-
if (typeof value != "object") {
|
|
138
|
-
result.append(key, `${value}`);
|
|
139
|
-
} else if (isFileContent(value)) {
|
|
140
|
-
result.append(key, new Blob([value.file_content]), value.file_name);
|
|
141
|
-
} else {
|
|
142
|
-
result.append(key, JSON.stringify(value));
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return result;
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
// src/client/execute-request/execute.ts
|
|
149
|
-
var execute = (method, input) => Micro.gen(function* () {
|
|
150
|
-
const config = yield* Micro.service(TgBotClientConfig);
|
|
151
|
-
const httpResponse = yield* Micro.tryPromise({
|
|
152
|
-
try: () => fetch(
|
|
153
|
-
`${config.base_url}/bot${config.bot_token}/${String.snakeToCamel(method)}`,
|
|
154
|
-
{
|
|
155
|
-
body: makePayload(input) ?? null,
|
|
156
|
-
method: "POST"
|
|
157
|
-
}
|
|
158
|
-
),
|
|
159
|
-
catch: (cause) => new TgBotClientError({
|
|
160
|
-
reason: { type: "ClientInternalError", cause }
|
|
161
|
-
})
|
|
162
|
-
});
|
|
163
|
-
const response = yield* Micro.tryPromise({
|
|
164
|
-
try: () => httpResponse.json(),
|
|
165
|
-
catch: () => new TgBotClientError({
|
|
166
|
-
reason: { type: "UnexpectedResponse", response: httpResponse }
|
|
167
|
-
})
|
|
168
|
-
});
|
|
169
|
-
if (!isTgBotApiResponse(response)) {
|
|
170
|
-
return yield* Micro.fail(new TgBotClientError({
|
|
171
|
-
reason: { type: "UnexpectedResponse", response }
|
|
172
|
-
}));
|
|
173
|
-
}
|
|
174
|
-
if (!httpResponse.ok) {
|
|
175
|
-
return yield* Micro.fail(new TgBotClientError({
|
|
176
|
-
reason: {
|
|
177
|
-
type: "NotOkResponse",
|
|
178
|
-
...response.error_code ? { errorCode: response.error_code } : void 0,
|
|
179
|
-
...response.description ? { details: response.description } : void 0
|
|
180
|
-
}
|
|
181
|
-
}));
|
|
182
|
-
}
|
|
183
|
-
return response.result;
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
// src/bot/internal/poll-settings.ts
|
|
187
|
-
var Context3 = __toESM(require("effect/Context"));
|
|
188
|
-
var Data2 = __toESM(require("effect/Data"));
|
|
189
|
-
var BotPollSettings = class _BotPollSettings extends Data2.Class {
|
|
190
|
-
static make(input) {
|
|
191
|
-
let batch_size = input.batch_size ?? 10;
|
|
192
|
-
let poll_timeout = input.poll_timeout ?? 10;
|
|
193
|
-
let max_empty_responses = input.max_empty_responses;
|
|
194
|
-
let log_level = input.log_level ?? "info";
|
|
195
|
-
let on_error = input.on_error;
|
|
196
|
-
if (batch_size < 10 || batch_size > 100) {
|
|
197
|
-
console.warn("Wrong batch_size, must be in [10..100], using 10 instead");
|
|
198
|
-
batch_size = 10;
|
|
199
|
-
}
|
|
200
|
-
if (poll_timeout < 2 || poll_timeout > 10) {
|
|
201
|
-
console.warn("Wrong poll_timeout, must be in [2..10], using 2 instead");
|
|
202
|
-
poll_timeout = 10;
|
|
203
|
-
}
|
|
204
|
-
if (max_empty_responses && max_empty_responses < 2) {
|
|
205
|
-
console.warn("Wrong max_empty_responses, must be in [2..infinity], using infinity");
|
|
206
|
-
max_empty_responses = void 0;
|
|
207
|
-
}
|
|
208
|
-
if (!log_level) {
|
|
209
|
-
log_level = "info";
|
|
210
|
-
}
|
|
211
|
-
if (!on_error) {
|
|
212
|
-
on_error = "stop";
|
|
213
|
-
}
|
|
214
|
-
const config = new _BotPollSettings({
|
|
215
|
-
batch_size,
|
|
216
|
-
poll_timeout,
|
|
217
|
-
max_empty_responses,
|
|
218
|
-
log_level,
|
|
219
|
-
on_error
|
|
220
|
-
});
|
|
221
|
-
console.log("bot poll settings", config);
|
|
222
|
-
return config;
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
var BotPollSettingsTag = class extends Context3.Reference()(
|
|
226
|
-
"BotSettings",
|
|
227
|
-
{
|
|
228
|
-
defaultValue() {
|
|
229
|
-
return BotPollSettings.make({});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
) {
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
// src/bot/internal/handle-update.ts
|
|
236
|
-
var BatchUpdateResult = class extends Data3.Class {
|
|
237
|
-
};
|
|
238
|
-
var handleUpdates = (updates) => Micro2.gen(function* () {
|
|
239
|
-
const pollSettings = yield* Micro2.service(BotPollSettingsTag);
|
|
240
|
-
const updateHandler = yield* Micro2.service(BotUpdateHandlersTag);
|
|
241
|
-
if (updateHandler.type == "single") {
|
|
242
|
-
return yield* handleOneByOne(updates, updateHandler, pollSettings);
|
|
243
|
-
} else {
|
|
244
|
-
return yield* handleEntireBatch(updates, updateHandler, pollSettings);
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
var handleEntireBatch = (updates, handlers, pollSettings) => Micro2.try({
|
|
248
|
-
try: () => handlers.on_batch(updates),
|
|
249
|
-
catch: (_) => _
|
|
250
|
-
}).pipe(
|
|
251
|
-
Micro2.andThen((result) => {
|
|
252
|
-
if (result instanceof Promise) {
|
|
253
|
-
return Micro2.tryPromise({
|
|
254
|
-
try: () => result,
|
|
255
|
-
catch: (_) => _
|
|
256
|
-
});
|
|
257
|
-
} else {
|
|
258
|
-
return Micro2.succeed(result);
|
|
259
|
-
}
|
|
260
|
-
}),
|
|
261
|
-
Micro2.andThen(
|
|
262
|
-
(doNext) => new BatchUpdateResult({
|
|
263
|
-
hasErrors: !doNext,
|
|
264
|
-
updates
|
|
265
|
-
})
|
|
266
|
-
),
|
|
267
|
-
Micro2.catchAll((error) => {
|
|
268
|
-
console.log("handle batch error", {
|
|
269
|
-
errorMessage: error instanceof Error ? error.message : void 0,
|
|
270
|
-
updates: updates.map((_) => Object.keys(_).at(1))
|
|
271
|
-
});
|
|
272
|
-
return Micro2.succeed(
|
|
273
|
-
new BatchUpdateResult({
|
|
274
|
-
hasErrors: true,
|
|
275
|
-
updates
|
|
276
|
-
})
|
|
277
|
-
);
|
|
278
|
-
})
|
|
279
|
-
);
|
|
280
|
-
var HandleUpdateError = class extends Data3.TaggedError("HandleUpdateError") {
|
|
281
|
-
};
|
|
282
|
-
var handleOneByOne = (updates, handlers, pollSettings) => Micro2.forEach(
|
|
283
|
-
updates,
|
|
284
|
-
(update) => handleOneUpdate(update, handlers).pipe(
|
|
285
|
-
Micro2.catchAll((error) => {
|
|
286
|
-
console.log("update handle error", {
|
|
287
|
-
updateId: update.update_id,
|
|
288
|
-
updateKey: Object.keys(update).at(1),
|
|
289
|
-
name: error._tag
|
|
290
|
-
});
|
|
291
|
-
return Micro2.succeed(error);
|
|
292
|
-
})
|
|
293
|
-
),
|
|
294
|
-
{
|
|
295
|
-
concurrency: 10
|
|
296
|
-
}
|
|
297
|
-
).pipe(
|
|
298
|
-
Micro2.andThen((batchResult) => {
|
|
299
|
-
if (pollSettings.log_level == "debug") {
|
|
300
|
-
console.debug("handle batch result", batchResult);
|
|
301
|
-
}
|
|
302
|
-
return new BatchUpdateResult({
|
|
303
|
-
hasErrors: !batchResult.every((error) => error == null),
|
|
304
|
-
updates
|
|
305
|
-
});
|
|
306
|
-
})
|
|
307
|
-
);
|
|
308
|
-
var handleOneUpdate = (updateObject, handlers) => Micro2.gen(function* () {
|
|
309
|
-
const update = extractUpdate(updateObject);
|
|
310
|
-
if (!update) {
|
|
311
|
-
return yield* Micro2.fail(
|
|
312
|
-
new HandleUpdateError({
|
|
313
|
-
name: "UnknownUpdate",
|
|
314
|
-
update: updateObject
|
|
315
|
-
})
|
|
316
|
-
);
|
|
317
|
-
}
|
|
318
|
-
const updateHandler = handlers[`on_${update.type}`];
|
|
319
|
-
if (!updateHandler) {
|
|
320
|
-
return yield* Micro2.fail(
|
|
321
|
-
new HandleUpdateError({
|
|
322
|
-
name: "HandlerNotDefined",
|
|
323
|
-
update: updateObject
|
|
324
|
-
})
|
|
325
|
-
);
|
|
326
|
-
}
|
|
327
|
-
if (update.type == "message" && "text" in update) {
|
|
328
|
-
console.info("Got a new text message", {
|
|
329
|
-
chatId: update.chat.id,
|
|
330
|
-
chatType: update.chat.type,
|
|
331
|
-
message: `${update.text.slice(0, 5)}...`
|
|
332
|
-
});
|
|
333
|
-
}
|
|
334
|
-
let handleUpdateError;
|
|
335
|
-
const handleResult = yield* Micro2.try({
|
|
336
|
-
try: () => updateHandler(update),
|
|
337
|
-
catch: (error) => new HandleUpdateError({
|
|
338
|
-
name: "BotHandlerError",
|
|
339
|
-
update: updateObject,
|
|
340
|
-
cause: error
|
|
341
|
-
})
|
|
342
|
-
}).pipe(
|
|
343
|
-
Micro2.andThen((handleResult2) => {
|
|
344
|
-
if (handleResult2 instanceof Promise) {
|
|
345
|
-
return Micro2.tryPromise({
|
|
346
|
-
try: () => handleResult2,
|
|
347
|
-
catch: (error) => new HandleUpdateError({
|
|
348
|
-
name: "BotHandlerError",
|
|
349
|
-
update: updateObject,
|
|
350
|
-
cause: error
|
|
351
|
-
})
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
return Micro2.succeed(handleResult2);
|
|
355
|
-
}),
|
|
356
|
-
Micro2.catchAll((error) => {
|
|
357
|
-
handleUpdateError = error;
|
|
358
|
-
console.log("error", {
|
|
359
|
-
updateId: updateObject.update_id,
|
|
360
|
-
updateKey: Object.keys(update).at(1),
|
|
361
|
-
name: error._tag
|
|
362
|
-
});
|
|
363
|
-
return Micro2.succeed(
|
|
364
|
-
BotResponse.make({
|
|
365
|
-
type: "message",
|
|
366
|
-
text: `Some internal error has happend(${error.name}) while handling this message`,
|
|
367
|
-
message_effect_id: MESSAGE_EFFECTS["\u{1F4A9}"],
|
|
368
|
-
...updateObject.message?.message_id ? {
|
|
369
|
-
reply_parameters: {
|
|
370
|
-
message_id: updateObject.message?.message_id
|
|
371
|
-
}
|
|
372
|
-
} : void 0
|
|
373
|
-
})
|
|
374
|
-
);
|
|
375
|
-
})
|
|
376
|
-
);
|
|
377
|
-
const pollSettings = yield* Micro2.service(BotPollSettingsTag);
|
|
378
|
-
if (!handleResult && pollSettings.log_level == "debug") {
|
|
379
|
-
console.log(`Bot response is undefined for update with ID #${updateObject.update_id}.`);
|
|
380
|
-
return;
|
|
381
|
-
}
|
|
382
|
-
;
|
|
383
|
-
if ("chat" in update && handleResult.response) {
|
|
384
|
-
const response = yield* execute(`send_${handleResult.response.type}`, {
|
|
385
|
-
...handleResult.response,
|
|
386
|
-
chat_id: update.chat.id
|
|
387
|
-
});
|
|
388
|
-
if (pollSettings.log_level == "debug" && "text") {
|
|
389
|
-
console.debug("bot response", response);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
return handleUpdateError;
|
|
393
|
-
});
|
|
394
|
-
|
|
395
|
-
// src/bot/service/fetch-updates.ts
|
|
396
|
-
var Micro3 = __toESM(require("effect/Micro"));
|
|
397
|
-
var Data4 = __toESM(require("effect/Data"));
|
|
398
|
-
var Context4 = __toESM(require("effect/Context"));
|
|
399
|
-
var BotFetchUpdatesService = class extends Context4.Reference()(
|
|
400
|
-
"BotFetchUpdatesService",
|
|
401
|
-
{
|
|
402
|
-
defaultValue: () => {
|
|
403
|
-
const state = {
|
|
404
|
-
lastUpdateId: void 0,
|
|
405
|
-
emptyResponses: 0
|
|
406
|
-
};
|
|
407
|
-
const fetchUpdates = _fetchUpdates(state).pipe(
|
|
408
|
-
Micro3.tap((updates) => {
|
|
409
|
-
const id = updates.map((_) => _.update_id).sort().at(-1);
|
|
410
|
-
console.log("updating last update id", id);
|
|
411
|
-
state.lastUpdateId = id ? id + 1 : void 0;
|
|
412
|
-
console.log(state);
|
|
413
|
-
})
|
|
414
|
-
);
|
|
415
|
-
const commit = _commitLastBatch(state);
|
|
416
|
-
return {
|
|
417
|
-
state,
|
|
418
|
-
fetchUpdates,
|
|
419
|
-
commit
|
|
420
|
-
};
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
) {
|
|
424
|
-
};
|
|
425
|
-
var FetchUpdatesError = class extends Data4.TaggedError("FetchUpdatesError") {
|
|
426
|
-
};
|
|
427
|
-
var _fetchUpdates = (pollState) => Micro3.gen(function* () {
|
|
428
|
-
const pollSettings = yield* Micro3.service(BotPollSettingsTag);
|
|
429
|
-
if (pollSettings.max_empty_responses && pollState.emptyResponses == pollSettings.max_empty_responses) {
|
|
430
|
-
return yield* Micro3.fail(
|
|
431
|
-
new FetchUpdatesError({ name: "TooManyEmptyResponses" })
|
|
432
|
-
);
|
|
433
|
-
}
|
|
434
|
-
const updateId = pollState.lastUpdateId;
|
|
435
|
-
if (pollSettings.log_level == "debug") {
|
|
436
|
-
console.debug("getting updates", pollState);
|
|
437
|
-
}
|
|
438
|
-
const updates = yield* execute("get_updates", {
|
|
439
|
-
timeout: pollSettings.poll_timeout,
|
|
440
|
-
...updateId ? { offset: updateId } : void 0
|
|
441
|
-
}).pipe(
|
|
442
|
-
Micro3.andThen((_) => _.sort((_2) => _2.update_id))
|
|
443
|
-
);
|
|
444
|
-
if (updates.length) {
|
|
445
|
-
console.debug(`got a batch of updates (${updates.length})`);
|
|
446
|
-
pollState.emptyResponses = 0;
|
|
447
|
-
return updates;
|
|
448
|
-
} else {
|
|
449
|
-
pollState.emptyResponses += 1;
|
|
450
|
-
return [];
|
|
451
|
-
}
|
|
452
|
-
});
|
|
453
|
-
var _commitLastBatch = (pollState) => Micro3.gen(function* () {
|
|
454
|
-
console.log("commit", { pollState });
|
|
455
|
-
if (pollState.lastUpdateId) {
|
|
456
|
-
return yield* execute("get_updates", {
|
|
457
|
-
offset: pollState.lastUpdateId,
|
|
458
|
-
limit: 0
|
|
459
|
-
}).pipe(
|
|
460
|
-
Micro3.andThen(
|
|
461
|
-
Micro3.andThen(Micro3.service(BotPollSettingsTag), (pollSettings) => {
|
|
462
|
-
if (pollSettings.log_level == "debug") {
|
|
463
|
-
console.debug("committed offset", pollState);
|
|
464
|
-
}
|
|
465
|
-
})
|
|
466
|
-
)
|
|
467
|
-
);
|
|
468
|
-
} else {
|
|
469
|
-
return yield* Micro3.fail(new FetchUpdatesError({
|
|
470
|
-
name: "NoUpdatesToCommit"
|
|
471
|
-
}));
|
|
472
|
-
}
|
|
473
|
-
});
|
|
474
|
-
|
|
475
|
-
// src/bot/service/run.ts
|
|
476
|
-
var BotRunService = class extends Context5.Reference()(
|
|
477
|
-
"BotRunService",
|
|
478
|
-
{
|
|
479
|
-
defaultValue: () => {
|
|
480
|
-
console.log("Initiating BotRunService");
|
|
481
|
-
const state = {
|
|
482
|
-
fiber: void 0
|
|
483
|
-
};
|
|
484
|
-
const runBotInBackground = _runBotDaemon(state);
|
|
485
|
-
const getFiber = () => state.fiber;
|
|
486
|
-
return {
|
|
487
|
-
runBotInBackground,
|
|
488
|
-
getFiber
|
|
489
|
-
};
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
) {
|
|
493
|
-
};
|
|
494
|
-
var _runBotDaemon = (state) => Micro4.gen(function* () {
|
|
495
|
-
console.log("run bot");
|
|
496
|
-
const fetchService = yield* Micro4.service(BotFetchUpdatesService);
|
|
497
|
-
const startFiber = Micro4.delay(1e3)(
|
|
498
|
-
fetchService.fetchUpdates.pipe(
|
|
499
|
-
Micro4.andThen(
|
|
500
|
-
(updates) => handleUpdates(updates)
|
|
501
|
-
),
|
|
502
|
-
Micro4.tap(
|
|
503
|
-
({ updates }) => updates.length > 0 ? fetchService.commit : Micro4.void
|
|
504
|
-
)
|
|
505
|
-
)
|
|
506
|
-
).pipe(
|
|
507
|
-
Micro4.repeat({
|
|
508
|
-
while: (_) => !_.hasErrors
|
|
509
|
-
}),
|
|
510
|
-
Micro4.forkDaemon,
|
|
511
|
-
Micro4.tap(
|
|
512
|
-
(fiber) => fiber.addObserver((exit) => {
|
|
513
|
-
console.log("bot's fiber has been closed", exit);
|
|
514
|
-
})
|
|
515
|
-
)
|
|
516
|
-
);
|
|
517
|
-
if (state.fiber) {
|
|
518
|
-
console.log("killing previous bot's fiber");
|
|
519
|
-
yield* Micro4.fiberInterrupt(state.fiber);
|
|
520
|
-
}
|
|
521
|
-
state.fiber = yield* startFiber;
|
|
522
|
-
console.log("Fetching bot updates via long polling...");
|
|
523
|
-
});
|
|
524
|
-
|
|
525
|
-
// src/bot/internal/client-config.ts
|
|
526
|
-
var Micro5 = __toESM(require("effect/Micro"));
|
|
527
|
-
var makeClientConfigFrom = (input) => Micro5.gen(function* () {
|
|
528
|
-
if (input.type == "config") {
|
|
529
|
-
return makeTgBotClientConfig(input);
|
|
530
|
-
}
|
|
531
|
-
const config = yield* Micro5.tryPromise({
|
|
532
|
-
try: async () => {
|
|
533
|
-
const { readFileSync } = await import("fs");
|
|
534
|
-
return JSON.parse(await readFileSync("config.json", "utf-8"));
|
|
535
|
-
},
|
|
536
|
-
catch: (error) => {
|
|
537
|
-
console.warn("invalid tg bot config", error);
|
|
538
|
-
return "ReadingConfigError";
|
|
539
|
-
}
|
|
540
|
-
});
|
|
541
|
-
if (!isTgBotClientSettingsInput(config)) {
|
|
542
|
-
return yield* Micro5.fail("InvalidConfig");
|
|
543
|
-
}
|
|
544
|
-
return makeTgBotClientConfig(config);
|
|
545
|
-
});
|
|
546
|
-
|
|
547
|
-
// src/bot/internal/launch.ts
|
|
548
|
-
var launchBot = (input) => Micro6.gen(function* () {
|
|
549
|
-
const clientConfig = Context6.make(TgBotClientConfig, yield* makeClientConfigFrom(input));
|
|
550
|
-
const service8 = yield* Micro6.service(BotRunService);
|
|
551
|
-
yield* service8.runBotInBackground.pipe(
|
|
552
|
-
Micro6.provideContext(clientConfig),
|
|
553
|
-
Micro6.provideService(BotUpdateHandlersTag, input.mode),
|
|
554
|
-
Micro6.provideService(BotPollSettingsTag, BotPollSettings.make(input.poll ?? {}))
|
|
555
|
-
);
|
|
556
|
-
const reload = (mode) => service8.runBotInBackground.pipe(
|
|
557
|
-
Micro6.provideService(BotUpdateHandlersTag, mode),
|
|
558
|
-
Micro6.provideContext(clientConfig),
|
|
559
|
-
Micro6.runPromise
|
|
560
|
-
);
|
|
561
|
-
return {
|
|
562
|
-
reload,
|
|
563
|
-
fiber: service8.getFiber
|
|
564
|
-
};
|
|
565
|
-
});
|
|
566
|
-
|
|
567
|
-
// src/bot/run.ts
|
|
568
|
-
var Micro7 = __toESM(require("effect/Micro"));
|
|
569
|
-
var runTgChatBot = (input) => launchBot(input).pipe(
|
|
570
|
-
Micro7.runPromise
|
|
571
|
-
);
|
|
572
|
-
|
|
573
|
-
// src/client/_client.ts
|
|
574
|
-
var Micro10 = __toESM(require("effect/Micro"));
|
|
575
|
-
|
|
576
|
-
// src/client/file/_service.ts
|
|
577
|
-
var Micro9 = __toESM(require("effect/Micro"));
|
|
578
|
-
var Context7 = __toESM(require("effect/Context"));
|
|
579
|
-
|
|
580
|
-
// src/client/file/get-file.ts
|
|
581
|
-
var Micro8 = __toESM(require("effect/Micro"));
|
|
582
|
-
var getFile = (fileId) => Micro8.gen(function* () {
|
|
583
|
-
const response = yield* execute("get_file", { file_id: fileId });
|
|
584
|
-
const config = yield* Micro8.service(TgBotClientConfig);
|
|
585
|
-
const file_path = response.file_path;
|
|
586
|
-
if (!file_path || file_path.length == 0) {
|
|
587
|
-
return yield* Micro8.fail(
|
|
588
|
-
new TgBotClientError({
|
|
589
|
-
reason: {
|
|
590
|
-
type: "UnableToGetFile",
|
|
591
|
-
cause: "File path not defined"
|
|
592
|
-
}
|
|
593
|
-
})
|
|
594
|
-
);
|
|
595
|
-
}
|
|
596
|
-
const file_name = file_path.replaceAll("/", "-");
|
|
597
|
-
const url = `${config.base_url}/file/bot${config.bot_token}/${file_path}`;
|
|
598
|
-
const fileContent = yield* Micro8.tryPromise({
|
|
599
|
-
try: () => fetch(url).then((_) => _.arrayBuffer()),
|
|
600
|
-
catch: (cause) => new TgBotClientError({
|
|
601
|
-
reason: { type: "UnableToGetFile", cause }
|
|
602
|
-
})
|
|
603
|
-
});
|
|
604
|
-
const file = new File([new Uint8Array(fileContent)], file_name);
|
|
605
|
-
return file;
|
|
606
|
-
});
|
|
607
|
-
|
|
608
|
-
// src/client/file/_service.ts
|
|
609
|
-
var ClientFileService = class extends Context7.Tag("ClientFileService")() {
|
|
610
|
-
};
|
|
611
|
-
var ClientFileServiceDefault = Micro9.gen(function* () {
|
|
612
|
-
return {
|
|
613
|
-
getFile: (input) => getFile(input.file_id)
|
|
614
|
-
};
|
|
615
|
-
});
|
|
616
|
-
|
|
617
|
-
// src/client/_client.ts
|
|
618
|
-
var makeTgBotClient = (input) => {
|
|
619
|
-
const config = makeTgBotClientConfig(input);
|
|
620
|
-
const client = Micro10.gen(function* () {
|
|
621
|
-
const file = yield* Micro10.service(ClientFileService);
|
|
622
|
-
return {
|
|
623
|
-
execute: (method, input2) => execute(method, input2).pipe(
|
|
624
|
-
Micro10.provideService(TgBotClientConfig, config),
|
|
625
|
-
Micro10.runPromise
|
|
626
|
-
),
|
|
627
|
-
getFile: (input2) => file.getFile(input2).pipe(
|
|
628
|
-
Micro10.provideService(TgBotClientConfig, config),
|
|
629
|
-
Micro10.runPromise
|
|
630
|
-
)
|
|
631
|
-
};
|
|
632
|
-
}).pipe(
|
|
633
|
-
Micro10.provideServiceEffect(ClientFileService, ClientFileServiceDefault),
|
|
634
|
-
Micro10.provideService(TgBotClientConfig, config),
|
|
635
|
-
Micro10.runSync
|
|
636
|
-
);
|
|
637
|
-
return client;
|
|
638
|
-
};
|
|
639
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
640
|
-
0 && (module.exports = {
|
|
641
|
-
BotResponse,
|
|
642
|
-
BotRunService,
|
|
643
|
-
BotUpdateHandlersTag,
|
|
644
|
-
MESSAGE_EFFECTS,
|
|
645
|
-
defaultBaseUrl,
|
|
646
|
-
isMessageEffect,
|
|
647
|
-
launchBot,
|
|
648
|
-
makeTgBotClient,
|
|
649
|
-
messageEffectIdCodes,
|
|
650
|
-
runTgChatBot
|
|
651
|
-
});
|
|
1
|
+
"use strict";var Ls=Object.create;var me=Object.defineProperty;var Hs=Object.getOwnPropertyDescriptor;var Bs=Object.getOwnPropertyNames;var qs=Object.getPrototypeOf,Ds=Object.prototype.hasOwnProperty;var js=(t,e)=>{for(var r in e)me(t,r,{get:e[r],enumerable:!0})},io=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Bs(e))!Ds.call(t,n)&&n!==r&&me(t,n,{get:()=>e[n],enumerable:!(o=Hs(e,n))||o.enumerable});return t};var Ws=(t,e,r)=>(r=t!=null?Ls(qs(t)):{},io(e||!t||!t.__esModule?me(r,"default",{value:t,enumerable:!0}):r,t)),Gs=t=>io(me({},"__esModule",{value:!0}),t);var ra={};js(ra,{BotResponse:()=>ue,BotRunService:()=>de,BotUpdateHandlersTag:()=>ft,MESSAGE_EFFECTS:()=>re,defaultBaseUrl:()=>Br,defineBot:()=>ta,isMessageEffect:()=>Vi,launchBot:()=>so,makeTgBotClient:()=>ea,messageEffectIdCodes:()=>$i,runTgChatBot:()=>Xc});module.exports=Gs(ra);var Qe=t=>typeof t=="function",u=function(t,e){if(typeof t=="function")return function(){return t(arguments)?e.apply(this,arguments):r=>e(r,...arguments)};switch(t){case 0:case 1:throw new RangeError(`Invalid arity ${t}`);case 2:return function(r,o){return arguments.length>=2?e(r,o):function(n){return e(n,r)}};case 3:return function(r,o,n){return arguments.length>=3?e(r,o,n):function(s){return e(s,r,o)}};case 4:return function(r,o,n,s){return arguments.length>=4?e(r,o,n,s):function(i){return e(i,r,o,n)}};case 5:return function(r,o,n,s,i){return arguments.length>=5?e(r,o,n,s,i):function(c){return e(c,r,o,n,s)}};default:return function(){if(arguments.length>=t)return e.apply(this,arguments);let r=arguments;return function(o){return e(o,...r)}}}};var R=t=>t;var Xe=t=>()=>t,xe=Xe(!0),tr=Xe(!1);var er=Xe(void 0),co=er;function b(t,e,r,o,n,s,i,c,a){switch(arguments.length){case 1:return t;case 2:return e(t);case 3:return r(e(t));case 4:return o(r(e(t)));case 5:return n(o(r(e(t))));case 6:return s(n(o(r(e(t)))));case 7:return i(s(n(o(r(e(t))))));case 8:return c(i(s(n(o(r(e(t)))))));case 9:return a(c(i(s(n(o(r(e(t))))))));default:{let p=arguments[0];for(let h=1;h<arguments.length;h++)p=arguments[h](p);return p}}}var ao=t=>(e,r)=>e===r||t(e,r);var $s="3.12.0",ge=()=>$s;var or=Symbol.for(`effect/GlobalValue/globalStoreId/${ge()}`);or in globalThis||(globalThis[or]=new Map);var rr=globalThis[or],B=(t,e)=>(rr.has(t)||rr.set(t,e()),rr.get(t));var zt=Qe;var Vs=t=>typeof t=="object"&&t!==null,nr=t=>Vs(t)||zt(t),_=u(2,(t,e)=>nr(t)&&e in t),sr=u(2,(t,e)=>_(t,"_tag")&&t._tag===e);var Jt=t=>`BUG: ${t} - please report an issue at https://github.com/Effect-TS/effect/issues`;var uo=Symbol.for("effect/Gen/GenKind");var lo=class{value;constructor(e){this.value=e}get _F(){return R}get _R(){return e=>e}get _O(){return e=>e}get _E(){return e=>e}[uo]=uo;[Symbol.iterator](){return new gt(this)}},gt=class t{self;called=!1;constructor(e){this.self=e}next(e){return this.called?{value:e,done:!0}:(this.called=!0,{value:this.self,done:!1})}return(e){return{value:e,done:!0}}throw(e){throw e}[Symbol.iterator](){return new t(this.self)}};var ir=Symbol.for("effect/Utils/YieldWrap"),z=class{#t;constructor(e){this.#t=e}[ir](){return this.#t}};function fo(t){if(typeof t=="object"&&t!==null&&ir in t)return t[ir]();throw new Error(Jt("yieldWrapGet"))}var N=B("effect/Utils/isStructuralRegion",()=>({enabled:!1,tester:void 0}));var la=function*(){}.constructor;var cr=B(Symbol.for("effect/Hash/randomHashCache"),()=>new WeakMap),f=Symbol.for("effect/Hash"),l=t=>{if(N.enabled===!0)return 0;switch(typeof t){case"number":return ye(t);case"bigint":return q(t.toString(10));case"boolean":return q(String(t));case"symbol":return q(String(t));case"string":return q(t);case"undefined":return q("undefined");case"function":case"object":return t===null?q("null"):t instanceof Date?l(t.toISOString()):Ys(t)?t[f]():It(t);default:throw new Error(`BUG: unhandled typeof ${typeof t} - please report an issue at https://github.com/Effect-TS/effect/issues`)}},It=t=>(cr.has(t)||cr.set(t,ye(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))),cr.get(t)),M=t=>e=>e*53^t,_e=t=>t&3221225471|t>>>1&1073741824,Ys=t=>_(t,f),ye=t=>{if(t!==t||t===1/0)return 0;let e=t|0;for(e!==t&&(e^=t*4294967295);t>4294967295;)e^=t/=4294967295;return _e(e)},q=t=>{let e=5381,r=t.length;for(;r;)e=e*33^t.charCodeAt(--r);return _e(e)},Ks=(t,e)=>{let r=12289;for(let o=0;o<e.length;o++)r^=b(q(e[o]),M(l(t[e[o]])));return _e(r)},ho=t=>Ks(t,Object.keys(t)),Oe=t=>{let e=6151;for(let r=0;r<t.length;r++)e=b(e,M(l(t[r])));return _e(e)},S=function(){if(arguments.length===1){let r=arguments[0];return function(o){return Object.defineProperty(r,f,{value(){return o},enumerable:!1}),o}}let t=arguments[0],e=arguments[1];return Object.defineProperty(t,f,{value(){return e},enumerable:!1}),e};var m=Symbol.for("effect/Equal");function x(){return arguments.length===1?t=>Se(t,arguments[0]):Se(arguments[0],arguments[1])}function Se(t,e){if(t===e)return!0;let r=typeof t;if(r!==typeof e)return!1;if(r==="object"||r==="function"){if(t!==null&&e!==null){if(mo(t)&&mo(e))return l(t)===l(e)&&t[m](e)?!0:N.enabled&&N.tester?N.tester(t,e):!1;if(t instanceof Date&&e instanceof Date)return t.toISOString()===e.toISOString()}if(N.enabled){if(Array.isArray(t)&&Array.isArray(e))return t.length===e.length&&t.every((o,n)=>Se(o,e[n]));if(Object.getPrototypeOf(t)===Object.prototype&&Object.getPrototypeOf(t)===Object.prototype){let o=Object.keys(t),n=Object.keys(e);if(o.length===n.length){for(let s of o)if(!(s in e&&Se(t[s],e[s])))return N.tester?N.tester(t,e):!1;return!0}}return N.tester?N.tester(t,e):!1}}return N.enabled&&N.tester?N.tester(t,e):!1}var mo=t=>_(t,m);var y=Symbol.for("nodejs.util.inspect.custom"),O=t=>{try{if(_(t,"toJSON")&&zt(t.toJSON)&&t.toJSON.length===0)return t.toJSON();if(Array.isArray(t))return t.map(O)}catch{return{}}return Zs(t)},E=t=>JSON.stringify(t,null,2),Sa={toJSON(){return O(this)},[y](){return this.toJSON()},toString(){return E(this.toJSON())}},xo=class{[y](){return this.toJSON()}toString(){return E(this.toJSON())}},go=(t,e=2)=>{if(typeof t=="string")return t;try{return typeof t=="object"?ar(t,e):String(t)}catch{return String(t)}},ar=(t,e)=>{let r=[],o=JSON.stringify(t,(n,s)=>typeof s=="object"&&s!==null?r.includes(s)?void 0:r.push(s)&&(be.fiberRefs!==void 0&&_o(s)?s[pr](be.fiberRefs):s):s,e);return r=void 0,o},pr=Symbol.for("effect/Inspectable/Redactable"),_o=t=>typeof t=="object"&&t!==null&&pr in t,be=B("effect/Inspectable/redactableState",()=>({fiberRefs:void 0}));var Zs=t=>_o(t)&&be.fiberRefs!==void 0?t[pr](be.fiberRefs):t;var C=(t,e)=>{switch(e.length){case 0:return t;case 1:return e[0](t);case 2:return e[1](e[0](t));case 3:return e[2](e[1](e[0](t)));case 4:return e[3](e[2](e[1](e[0](t))));case 5:return e[4](e[3](e[2](e[1](e[0](t)))));case 6:return e[5](e[4](e[3](e[2](e[1](e[0](t))))));case 7:return e[6](e[5](e[4](e[3](e[2](e[1](e[0](t)))))));case 8:return e[7](e[6](e[5](e[4](e[3](e[2](e[1](e[0](t))))))));case 9:return e[8](e[7](e[6](e[5](e[4](e[3](e[2](e[1](e[0](t)))))))));default:{let r=t;for(let o=0,n=e.length;o<n;o++)r=e[o](r);return r}}};var ur="Commit",yo="Failure";var Oo="WithRuntime";var bo=Symbol.for("effect/Effect"),Eo=Symbol.for("effect/Stream"),Co=Symbol.for("effect/Sink"),ko=Symbol.for("effect/Channel"),ct={_R:t=>t,_E:t=>t,_A:t=>t,_V:ge()},Qs={_A:t=>t,_In:t=>t,_L:t=>t,_E:t=>t,_R:t=>t},Xs={_Env:t=>t,_InErr:t=>t,_InElem:t=>t,_InDone:t=>t,_OutErr:t=>t,_OutElem:t=>t,_OutDone:t=>t},Z={[bo]:ct,[Eo]:ct,[Co]:Qs,[ko]:Xs,[m](t){return this===t},[f](){return S(this,It(this))},[Symbol.iterator](){return new gt(new z(this))},pipe(){return C(this,arguments)}},lr={[f](){return S(this,ho(this))},[m](t){let e=Object.keys(this),r=Object.keys(t);if(e.length!==r.length)return!1;for(let o of e)if(!(o in t&&x(this[o],t[o])))return!1;return!0}},fr={...Z,_op:ur},dr={...fr,...lr};var Io=Symbol.for("effect/Option"),vo={...Z,[Io]:{_A:t=>t},[y](){return this.toJSON()},toString(){return E(this.toJSON())}},ei=Object.assign(Object.create(vo),{_tag:"Some",_op:"Some",[m](t){return hr(t)&&xr(t)&&x(this.value,t.value)},[f](){return S(this,M(l(this._tag))(l(this.value)))},toJSON(){return{_id:"Option",_tag:this._tag,value:O(this.value)}}}),ri=l("None"),oi=Object.assign(Object.create(vo),{_tag:"None",_op:"None",[m](t){return hr(t)&&mr(t)},[f](){return ri},toJSON(){return{_id:"Option",_tag:this._tag}}}),hr=t=>_(t,Io),mr=t=>t._tag==="None",xr=t=>t._tag==="Some",Ao=Object.create(oi),Mo=t=>{let e=Object.create(ei);return e.value=t,e};var gr=Symbol.for("effect/Either"),wo={...Z,[gr]:{_R:t=>t},[y](){return this.toJSON()},toString(){return E(this.toJSON())}},si=Object.assign(Object.create(wo),{_tag:"Right",_op:"Right",[m](t){return _r(t)&&Ro(t)&&x(this.right,t.right)},[f](){return M(l(this._tag))(l(this.right))},toJSON(){return{_id:"Either",_tag:this._tag,right:O(this.right)}}}),ii=Object.assign(Object.create(wo),{_tag:"Left",_op:"Left",[m](t){return _r(t)&&To(t)&&x(this.left,t.left)},[f](){return M(l(this._tag))(l(this.left))},toJSON(){return{_id:"Either",_tag:this._tag,left:O(this.left)}}}),_r=t=>_(t,gr),To=t=>t._tag==="Left",Ro=t=>t._tag==="Right",Fo=t=>{let e=Object.create(ii);return e.left=t,e},Po=t=>{let e=Object.create(si);return e.right=t,e};var $t=Po,yr=Fo;var F=()=>Ao,Q=Mo;var U=mr,at=xr;var No=u(2,(t,e)=>U(t)?e():t.value);var Uo=No(er);var Yt=t=>Array.isArray(t)?t:Array.from(t);var Ha=Array.isArray;var Or=t=>Array.from(t).reverse();var Sr=u(3,(t,e,r)=>Yt(t).reduce((o,n,s)=>r(o,n,s),e));var Lo=Symbol.for("effect/Context/Tag"),Ee=Symbol.for("effect/Context/Reference"),pi="effect/STM",ui=Symbol.for(pi),Ho={...Z,_op:"Tag",[ui]:ct,[Lo]:{_Service:t=>t,_Identifier:t=>t},toString(){return E(this.toJSON())},toJSON(){return{_id:"Tag",key:this.key,stack:this.stack}},[y](){return this.toJSON()},of(t){return t},context(t){return kr(this,t)}},li={...Ho,[Ee]:Ee};var Bo=t=>()=>{let e=Error.stackTraceLimit;Error.stackTraceLimit=2;let r=new Error;Error.stackTraceLimit=e;function o(){}return Object.setPrototypeOf(o,Ho),o.key=t,Object.defineProperty(o,"stack",{get(){return r.stack}}),o},qo=()=>(t,e)=>{let r=Error.stackTraceLimit;Error.stackTraceLimit=2;let o=new Error;Error.stackTraceLimit=r;function n(){}return Object.setPrototypeOf(n,li),n.key=t,n.defaultValue=e.defaultValue,Object.defineProperty(n,"stack",{get(){return o.stack}}),n},Cr=Symbol.for("effect/Context"),fi={[Cr]:{_Services:t=>t},[m](t){if(Do(t)&&this.unsafeMap.size===t.unsafeMap.size){for(let e of this.unsafeMap.keys())if(!t.unsafeMap.has(e)||!x(this.unsafeMap.get(e),t.unsafeMap.get(e)))return!1;return!0}return!1},[f](){return S(this,ye(this.unsafeMap.size))},pipe(){return C(this,arguments)},toString(){return E(this.toJSON())},toJSON(){return{_id:"Context",services:Array.from(this.unsafeMap).map(O)}},[y](){return this.toJSON()}},Ce=t=>{let e=Object.create(fi);return e.unsafeMap=t,e},di=t=>{let e=new Error(`Service not found${t.key?`: ${String(t.key)}`:""}`);if(t.stack){let r=t.stack.split(`
|
|
2
|
+
`);if(r.length>2){let o=r[2].match(/at (.*)/);o&&(e.message=e.message+` (defined at ${o[1]})`)}}if(e.stack){let r=e.stack.split(`
|
|
3
|
+
`);r.splice(1,3),e.stack=r.join(`
|
|
4
|
+
`)}return e},Do=t=>_(t,Cr);var kr=(t,e)=>Ce(new Map([[t.key,e]])),jo=u(3,(t,e,r)=>{let o=new Map(t.unsafeMap);return o.set(e.key,r),Ce(o)}),Er=B("effect/Context/defaultValueCache",()=>new Map),Wo=t=>{if(Er.has(t.key))return Er.get(t.key);let e=t.defaultValue();return Er.set(t.key,e),e},Go=(t,e)=>t.unsafeMap.has(e.key)?t.unsafeMap.get(e.key):Wo(e),zo=u(2,(t,e)=>{if(!t.unsafeMap.has(e.key)){if(Ee in e)return Wo(e);throw di(e)}return t.unsafeMap.get(e.key)});var Jo=u(2,(t,e)=>{let r=new Map(t.unsafeMap);for(let[o,n]of e.unsafeMap)r.set(o,n);return Ce(r)});var Vo=kr,Yo=jo;var Ko=zo;var Zo=Jo;var vt=Bo,J=qo;var Qo=Z;var on=Symbol.for("effect/Micro"),ke=Symbol.for("effect/Micro/MicroExit"),Kt=t=>typeof t=="object"&&t!==null&&on in t,Xo=Symbol.for("effect/Micro/MicroCause");var mi={_E:R},Zt=class extends globalThis.Error{_tag;traces;[Xo];constructor(e,r,o){let n=`MicroCause.${e}`,s,i,c;if(r instanceof globalThis.Error){s=`(${n}) ${r.name}`,i=r.message;let a=i.split(`
|
|
5
|
+
`).length;c=r.stack?`(${n}) ${r.stack.split(`
|
|
6
|
+
`).slice(0,a+3).join(`
|
|
7
|
+
`)}`:`${s}: ${i}`}else s=n,i=go(r,0),c=`${s}: ${i}`;o.length>0&&(c+=`
|
|
8
|
+
${o.join(`
|
|
9
|
+
`)}`),super(i),this._tag=e,this.traces=o,this[Xo]=mi,this.name=s,this.stack=c}pipe(){return C(this,arguments)}toString(){return this.stack}[y](){return this.stack}},vr=class extends Zt{error;constructor(e,r=[]){super("Fail",e,r),this.error=e}},xi=(t,e=[])=>new vr(t,e),Ar=class extends Zt{defect;constructor(e,r=[]){super("Die",e,r),this.defect=e}},gi=(t,e=[])=>new Ar(t,e),Mr=class extends Zt{constructor(e=[]){super("Interrupt","interrupted",e)}},_i=(t=[])=>new Mr(t),yi=t=>t._tag==="Fail";var nn=t=>t._tag==="Interrupt";var tn=Symbol.for("effect/Micro/MicroFiber"),Oi={_A:R,_E:R},Ie=class{context;interruptible;[tn];_stack=[];_observers=[];_exit;_children;currentOpCount=0;constructor(e,r=!0){this.context=e,this.interruptible=r,this[tn]=Oi}getRef(e){return Go(this.context,e)}addObserver(e){return this._exit?(e(this._exit),co):(this._observers.push(e),()=>{let r=this._observers.indexOf(e);r>=0&&this._observers.splice(r,1)})}_interrupted=!1;unsafeInterrupt(){this._exit||(this._interrupted=!0,this.interruptible&&this.evaluate(Nr))}unsafePoll(){return this._exit}evaluate(e){if(this._exit)return;if(this._yielded!==void 0){let n=this._yielded;this._yielded=void 0,n()}let r=this.runLoop(e);if(r===At)return;let o=en.interruptChildren&&en.interruptChildren(this);if(o!==void 0)return this.evaluate(L(o,()=>r));this._exit=r;for(let n=0;n<this._observers.length;n++)this._observers[n](r);this._observers.length=0}runLoop(e){let r=!1,o=e;this.currentOpCount=0;try{for(;;){if(this.currentOpCount++,!r&&this.getRef(Tt).shouldYield(this)){r=!0;let n=o;o=L(pn,()=>n)}if(o=o[wr](this),o===At){let n=this._yielded;return ke in n?(this._yielded=void 0,n):At}}}catch(n){return _(o,wr)?Qt(n):Qt(`MicroFiber.runLoop: Not a valid effect: ${String(o)}`)}}getCont(e){for(;;){let r=this._stack.pop();if(!r)return;let o=r[ve]&&r[ve](this);if(o)return{[e]:o};if(r[e])return r}}_yielded=void 0;yieldWith(e){return this._yielded=e,At}children(){return this._children??=new Set}},en=B("effect/Micro/fiberMiddleware",()=>({interruptChildren:void 0}));var Si=t=>Ae(e=>wt(t.addObserver(r=>e(k(r)))));var sn=t=>tt(()=>(t.unsafeInterrupt(),Mi(Si(t)))),bi=t=>tt(()=>{for(let o of t)o.unsafeInterrupt();let e=t[Symbol.iterator](),r=tt(()=>{let o=e.next();for(;!o.done;){if(o.value.unsafePoll()){o=e.next();continue}let n=o.value;return Ae(s=>{n.addObserver(i=>{s(r)})})}return Ot});return r}),cn=Symbol.for("effect/Micro/identifier"),d=Symbol.for("effect/Micro/args"),wr=Symbol.for("effect/Micro/evaluate"),X=Symbol.for("effect/Micro/successCont"),_t=Symbol.for("effect/Micro/failureCont"),ve=Symbol.for("effect/Micro/ensureCont"),At=Symbol.for("effect/Micro/Yield"),Ei={_A:R,_E:R,_R:R},Ci={...Qo,_op:"Micro",[on]:Ei,pipe(){return C(this,arguments)},[Symbol.iterator](){return new gt(new z(this))},toJSON(){return{_id:"Micro",op:this[cn],...d in this?{args:this[d]}:void 0}},toString(){return E(this)},[y](){return E(this)}};function ki(t){return Qt("Micro.evaluate: Not implemented")}var te=t=>({...Ci,[cn]:t.op,[wr]:t.eval??ki,[X]:t.contA,[_t]:t.contE,[ve]:t.ensure}),et=t=>{let e=te(t);return function(){let r=Object.create(e);return r[d]=t.single===!1?arguments:arguments[0],r}},an=t=>{let e={...te(t),[ke]:ke,_tag:t.op,get[t.prop](){return this[d]},toJSON(){return{_id:"MicroExit",_tag:t.op,[t.prop]:this[d]}},[m](r){return Ri(r)&&r._tag===t.op&&x(this[d],r[d])},[f](){return S(this,M(q(t.op))(l(this[d])))}};return function(r){let o=Object.create(e);return o[d]=r,o[X]=void 0,o[_t]=void 0,o[ve]=void 0,o}},k=an({op:"Success",prop:"value",eval(t){let e=t.getCont(X);return e?e[X](this[d],t):t.yieldWith(this)}}),Mt=an({op:"Failure",prop:"cause",eval(t){let e=t.getCont(_t);for(;nn(this[d])&&e&&t.interruptible;)e=t.getCont(_t);return e?e[_t](this[d],t):t.yieldWith(this)}}),P=t=>Mt(xi(t)),wt=et({op:"Sync",eval(t){let e=this[d](),r=t.getCont(X);return r?r[X](e,t):t.yieldWith(Me(e))}}),tt=et({op:"Suspend",eval(t){return this[d]()}}),Ii=et({op:"Yield",eval(t){let e=!1;return t.getRef(Tt).scheduleTask(()=>{e||t.evaluate(Ot)},this[d]??0),t.yieldWith(()=>{e=!0})}}),pn=Ii(0);var yt=k(void 0);var Pr=t=>tt(()=>{try{return k(t.try())}catch(e){return P(t.catch(e))}});var $=t=>un(function(e,r){try{t.try(r).then(o=>e(k(o)),o=>e(P(t.catch(o))))}catch(o){e(P(t.catch(o)))}},t.try.length!==0),Rt=et({op:"WithMicroFiber",eval(t){return this[d](t)}});var un=et({op:"Async",single:!1,eval(t){let e=this[d][0],r=!1,o=!1,n=this[d][1]?new AbortController:void 0,s=e(i=>{r||(r=!0,o?t.evaluate(i):o=i)},n?.signal);return o!==!1?o:(o=!0,t._yielded=()=>{r=!0},n===void 0&&s===void 0||t._stack.push(vi(()=>(r=!0,n?.abort(),s??Ot))),At)}}),vi=et({op:"AsyncFinalizer",ensure(t){t.interruptible&&(t.interruptible=!1,t._stack.push(Lr(!0)))},contE(t,e){return nn(t)?L(this[d](),()=>Mt(t)):Mt(t)}}),Ae=t=>un(t,t.length>=2);var I=(...t)=>tt(()=>Ai(t.length===1?t[0]():t[1].call(t[0]))),Ai=et({op:"Iterator",contA(t,e){let r=this[d].next(t);return r.done?k(r.value):(e._stack.push(this),fo(r.value))},eval(t){return this[X](void 0,t)}}),ln=u(2,(t,e)=>Ti(t,r=>e));var j=u(2,(t,e)=>L(t,r=>{let o=Kt(e)?e:typeof e=="function"?e(r):e;return Kt(o)?o:k(o)})),ee=u(2,(t,e)=>L(t,r=>{let o=Kt(e)?e:typeof e=="function"?e(r):e;return Kt(o)?ln(o,r):k(r)})),Mi=t=>L(t,e=>Ot),fn=t=>qi(t,{onFailure:we,onSuccess:Me});var L=u(2,(t,e)=>{let r=Object.create(wi);return r[d]=t,r[X]=e,r}),wi=te({op:"OnSuccess",eval(t){return t._stack.push(this),this[d]}});var Ti=u(2,(t,e)=>L(t,r=>k(e(r)))),Ri=t=>_(t,ke),Me=k,we=Mt,Nr=we(_i());var Qt=t=>we(gi(t));var Ot=Me(void 0),Fi=t=>{for(let e of t)if(e._tag==="Failure")return e;return Ot},Pi="setImmediate"in globalThis?globalThis.setImmediate:t=>setTimeout(t,0),Xt=class{tasks=[];running=!1;scheduleTask(e,r){this.tasks.push(e),this.running||(this.running=!0,Pi(this.afterScheduled))}afterScheduled=()=>{this.running=!1,this.runTasks()};runTasks(){let e=this.tasks;this.tasks=[];for(let r=0,o=e.length;r<o;r++)e[r]()}shouldYield(e){return e.currentOpCount>=e.getRef(Tr)}flush(){for(;this.tasks.length>0;)this.runTasks()}},w=t=>Rt(e=>k(Ko(e.context,t)));var dn=u(2,(t,e)=>Rt(r=>{let o=r.context;return r.context=e(o),Di(t,()=>(r.context=o,yt))}));var Ur=u(2,(t,e)=>dn(t,Zo(e))),rt=u(3,(t,e,r)=>dn(t,Yo(e,r))),hn=u(3,(t,e,r)=>L(r,o=>rt(t,e,o))),Tr=class extends J()("effect/Micro/currentMaxOpsBeforeYield",{defaultValue:()=>2048}){},Rr=class extends J()("effect/Micro/currentConcurrency",{defaultValue:()=>"unbounded"}){},Tt=class extends J()("effect/Micro/currentScheduler",{defaultValue:()=>new Xt}){};var Ni=u(2,(t,e)=>tt(()=>{let r=e.schedule?Date.now():0,o=0,n=L(fn(t),s=>{if(e.while!==void 0&&!e.while(s))return s;if(e.times!==void 0&&o>=e.times)return s;o++;let i=pn;if(e.schedule!==void 0){let c=Date.now()-r,a=e.schedule(o,c);if(U(a))return s;i=gn(a.value)}return L(i,()=>n)});return n})),mn=u(t=>Kt(t[0]),(t,e)=>Ni(t,{...e,while:r=>r._tag==="Success"&&(e?.while===void 0||e.while(r.value))}));var Ui=u(2,(t,e)=>{let r=Object.create(Li);return r[d]=t,r[_t]=e,r}),Li=te({op:"OnFailure",eval(t){return t._stack.push(this),this[d]}}),Hi=u(3,(t,e,r)=>Ui(t,o=>e(o)?r(o):Mt(o))),Te=u(2,(t,e)=>Hi(t,yi,r=>e(r.error)));var xn=u(2,(t,e)=>{let r=Object.create(Bi);return r[d]=t,r[X]=e.onSuccess,r[_t]=e.onFailure,r}),Bi=te({op:"OnSuccessAndFailure",eval(t){return t._stack.push(this),this[d]}}),qi=u(2,(t,e)=>xn(t,{onFailure:r=>wt(()=>e.onFailure(r)),onSuccess:r=>wt(()=>e.onSuccess(r))}));var gn=t=>Ae(e=>{let r=setTimeout(()=>{e(yt)},t);return wt(()=>{clearTimeout(r)})}),_n=u(2,(t,e)=>j(gn(e),t));var Ir=Symbol.for("effect/Micro/MicroScope");var rn=class t{[Ir];state={_tag:"Open",finalizers:new Set};constructor(){this[Ir]=Ir}unsafeAddFinalizer(e){this.state._tag==="Open"&&this.state.finalizers.add(e)}addFinalizer(e){return tt(()=>this.state._tag==="Open"?(this.state.finalizers.add(e),yt):e(this.state.exit))}unsafeRemoveFinalizer(e){this.state._tag==="Open"&&this.state.finalizers.delete(e)}close(e){return tt(()=>{if(this.state._tag==="Open"){let r=Array.from(this.state.finalizers).reverse();return this.state={_tag:"Closed",exit:e},L(Hr(r,o=>fn(o(e))),Fi)}return yt})}get fork(){return wt(()=>{let e=new t;if(this.state._tag==="Closed")return e.state=this.state,e;function r(o){return e.close(o)}return this.state.finalizers.add(r),e.unsafeAddFinalizer(o=>wt(()=>this.unsafeRemoveFinalizer(r))),e})}};var Di=u(2,(t,e)=>Wi(r=>xn(r(t),{onFailure:o=>L(e(we(o)),()=>Mt(o)),onSuccess:o=>L(e(Me(o)),()=>k(o))})));var Lr=et({op:"SetInterruptible",ensure(t){if(t.interruptible=this[d],t._interrupted&&t.interruptible)return()=>Nr}}),ji=t=>Rt(e=>e.interruptible?t:(e.interruptible=!0,e._stack.push(Lr(!1)),e._interrupted?Nr:t)),Wi=t=>Rt(e=>e.interruptible?(e.interruptible=!1,e._stack.push(Lr(!0)),t(ji)):t(R));var Gi=et({op:"While",contA(t,e){return this[d].step(t),this[d].while()?(e._stack.push(this),this[d].body()):Ot},eval(t){return this[d].while()?(t._stack.push(this),this[d].body()):Ot}}),Hr=(t,e,r)=>Rt(o=>{let n=r?.concurrency==="inherit"?o.getRef(Rr):r?.concurrency??1,s=n==="unbounded"?Number.POSITIVE_INFINITY:Math.max(1,n),i=Yt(t),c=i.length;if(c===0)return r?.discard?yt:k([]);let a=r?.discard?void 0:new Array(c),p=0;return s===1?ln(Gi({while:()=>p<i.length,body:()=>e(i[p],p),step:a?h=>a[p++]=h:h=>p++}),a):Ae(h=>{let g=new Set,A,v=0,jt=0,dt=!1,ht=!1;function mt(){for(dt=!0;v<s&&p<c;){let xt=p,Ns=i[xt];p++,v++;try{let Wt=yn(o,e(Ns,xt),!0,!0);g.add(Wt),Wt.addObserver(Gt=>{g.delete(Wt),!ht&&(Gt._tag==="Failure"?A===void 0&&(A=Gt,c=p,g.forEach(Us=>Us.unsafeInterrupt())):a!==void 0&&(a[xt]=Gt.value),jt++,v--,jt===c?h(A??k(a)):!dt&&v<s&&mt())})}catch(Wt){A=Qt(Wt),c=p,g.forEach(Gt=>Gt.unsafeInterrupt())}}dt=!1}return mt(),tt(()=>(ht=!0,p=c,bi(g)))})});var yn=(t,e,r=!1,o=!1)=>{let n=new Ie(t.context,t.interruptible);return o||(t.children().add(n),n.addObserver(()=>t.children().delete(n))),r?n.evaluate(e):t.getRef(Tt).scheduleTask(()=>n.evaluate(e),0),n},On=t=>Rt(e=>k(yn(e,t,!1,!0)));var Sn=(t,e)=>{let r=new Ie(Tt.context(e?.scheduler??new Xt));if(r.evaluate(t),e?.signal)if(e.signal.aborted)r.unsafeInterrupt();else{let o=()=>r.unsafeInterrupt();e.signal.addEventListener("abort",o,{once:!0}),r.addObserver(()=>e.signal.removeEventListener("abort",o))}return r},zi=(t,e)=>new Promise((r,o)=>{Sn(t,e).addObserver(r)}),St=(t,e)=>zi(t,e).then(r=>{if(r._tag==="Failure")throw r.cause;return r.value}),Ji=t=>{let e=new Xt,r=Sn(t,{scheduler:e});return e.flush(),r._exit??Qt(r)},bn=t=>{let e=Ji(t);if(e._tag==="Failure")throw e.cause;return e.value};var Br="https://api.telegram.org",re={"\u{1F525}":"5104841245755180586","\u{1F44D}":"5107584321108051014","\u{1F44E}":"5104858069142078462","\u2764\uFE0F":"5159385139981059251","\u{1F389}":"5046509860389126442","\u{1F4A9}":"5046589136895476101"},$i=Object.keys(re),Vi=t=>typeof t=="string"&&t in re;var oe=t=>H.of({...t,base_url:t.base_url??Br}),H=class extends vt("TgBotClientConfig")(){};var En=Symbol.for("effect/Chunk");function Yi(t,e,r,o,n){for(let s=e;s<Math.min(t.length,e+n);s++)r[o+s-e]=t[s];return r}var Cn=[],Ki=t=>ao((e,r)=>e.length===r.length&&Ft(e).every((o,n)=>t(o,Pt(r,n)))),Zi=Ki(x),Qi={[En]:{_A:t=>t},toString(){return E(this.toJSON())},toJSON(){return{_id:"Chunk",values:Ft(this).map(O)}},[y](){return this.toJSON()},[m](t){return kn(t)&&Zi(this,t)},[f](){return S(this,Oe(Ft(this)))},[Symbol.iterator](){switch(this.backing._tag){case"IArray":return this.backing.array[Symbol.iterator]();case"IEmpty":return Cn[Symbol.iterator]();default:return Ft(this)[Symbol.iterator]()}},pipe(){return C(this,arguments)}},T=t=>{let e=Object.create(Qi);switch(e.backing=t,t._tag){case"IEmpty":{e.length=0,e.depth=0,e.left=e,e.right=e;break}case"IConcat":{e.length=t.left.length+t.right.length,e.depth=1+Math.max(t.left.depth,t.right.depth),e.left=t.left,e.right=t.right;break}case"IArray":{e.length=t.array.length,e.depth=0,e.left=ot,e.right=ot;break}case"ISingleton":{e.length=1,e.depth=0,e.left=ot,e.right=ot;break}case"ISlice":{e.length=t.length,e.depth=t.chunk.depth+1,e.left=ot,e.right=ot;break}}return e},kn=t=>_(t,En),ot=T({_tag:"IEmpty"}),bt=()=>ot,se=(...t)=>t.length===1?Et(t[0]):ec(t),Et=t=>T({_tag:"ISingleton",a:t}),In=t=>kn(t)?t:T({_tag:"IArray",array:Yt(t)}),qr=(t,e,r)=>{switch(t.backing._tag){case"IArray":{Yi(t.backing.array,0,e,r,t.length);break}case"IConcat":{qr(t.left,e,r),qr(t.right,e,r+t.left.length);break}case"ISingleton":{e[r]=t.backing.a;break}case"ISlice":{let o=0,n=r;for(;o<t.length;)e[n]=Pt(t,o),o+=1,n+=1;break}}};var Xi=t=>{switch(t.backing._tag){case"IEmpty":return Cn;case"IArray":return t.backing.array;default:{let e=new Array(t.length);return qr(t,e,0),t.backing={_tag:"IArray",array:e},t.left=ot,t.right=ot,t.depth=0,e}}},Ft=Xi,tc=t=>{switch(t.backing._tag){case"IEmpty":case"ISingleton":return t;case"IArray":return T({_tag:"IArray",array:Or(t.backing.array)});case"IConcat":return T({_tag:"IConcat",left:ne(t.backing.right),right:ne(t.backing.left)});case"ISlice":return vn(Or(Ft(t)))}},ne=tc;var vn=t=>T({_tag:"IArray",array:t}),ec=t=>vn(t),Pt=u(2,(t,e)=>{switch(t.backing._tag){case"IEmpty":throw new Error("Index out of bounds");case"ISingleton":{if(e!==0)throw new Error("Index out of bounds");return t.backing.a}case"IArray":{if(e>=t.length||e<0)throw new Error("Index out of bounds");return t.backing.array[e]}case"IConcat":return e<t.left.length?Pt(t.left,e):Pt(t.right,e-t.left.length);case"ISlice":return Pt(t.backing.chunk,e+t.backing.offset)}});var Re=u(2,(t,e)=>nt(Et(e),t));var nt=u(2,(t,e)=>{if(t.backing._tag==="IEmpty")return e;if(e.backing._tag==="IEmpty")return t;let r=e.depth-t.depth;if(Math.abs(r)<=1)return T({_tag:"IConcat",left:t,right:e});if(r<-1)if(t.left.depth>=t.right.depth){let o=nt(t.right,e);return T({_tag:"IConcat",left:t.left,right:o})}else{let o=nt(t.right.right,e);if(o.depth===t.depth-3){let n=T({_tag:"IConcat",left:t.right.left,right:o});return T({_tag:"IConcat",left:t.left,right:n})}else{let n=T({_tag:"IConcat",left:t.left,right:t.right.left});return T({_tag:"IConcat",left:n,right:o})}}else if(e.right.depth>=e.left.depth){let o=nt(t,e.left);return T({_tag:"IConcat",left:o,right:e.right})}else{let o=nt(t,e.left.left);if(o.depth===e.depth-3){let n=T({_tag:"IConcat",left:o,right:e.left.right});return T({_tag:"IConcat",left:n,right:e.right})}else{let n=T({_tag:"IConcat",left:e.left.right,right:e.right});return T({_tag:"IConcat",left:o,right:n})}}});var An=t=>t.length===0,Fe=t=>t.length>0;var Mn=t=>Pt(t,0),Pe=Mn;var Dr=Math.pow(2,5),Tn=Dr-1,Rn=Dr/2,Fn=Dr/4;function rc(t){return t-=t>>1&1431655765,t=(t&858993459)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,t&127}function ut(t,e){return e>>>t&Tn}function lt(t){return 1<<t}function Ne(t,e){return rc(t&e-1)}var Pn=(t,e)=>({value:t,previous:e});function Ct(t,e,r,o){let n=o;if(!t){let s=o.length;n=new Array(s);for(let i=0;i<s;++i)n[i]=o[i]}return n[e]=r,n}function jr(t,e,r){let o=r.length-1,n=0,s=0,i=r;if(t)n=s=e;else for(i=new Array(o);n<e;)i[s++]=r[n++];for(++n;n<=o;)i[s++]=r[n++];return t&&(i.length=o),i}function Nn(t,e,r,o){let n=o.length;if(t){let a=n;for(;a>=e;)o[a--]=o[a];return o[e]=r,o}let s=0,i=0,c=new Array(n+1);for(;s<e;)c[i++]=o[s++];for(c[e]=r;s<n;)c[++i]=o[s++];return c}var st=class t{_tag="EmptyNode";modify(e,r,o,n,s,i){let c=o(F());return U(c)?new t:(++i.value,new Nt(e,n,s,c))}};function G(t){return sr(t,"EmptyNode")}function nc(t){return G(t)||t._tag==="LeafNode"||t._tag==="CollisionNode"}function Ue(t,e){return G(t)?!1:e===t.edit}var Nt=class t{edit;hash;key;value;_tag="LeafNode";constructor(e,r,o,n){this.edit=e,this.hash=r,this.key=o,this.value=n}modify(e,r,o,n,s,i){if(x(s,this.key)){let a=o(this.value);return a===this.value?this:U(a)?(--i.value,new st):Ue(this,e)?(this.value=a,this):new t(e,n,s,a)}let c=o(F());return U(c)?this:(++i.value,Un(e,r,this.hash,this,n,new t(e,n,s,c)))}},Wr=class t{edit;hash;children;_tag="CollisionNode";constructor(e,r,o){this.edit=e,this.hash=r,this.children=o}modify(e,r,o,n,s,i){if(n===this.hash){let a=Ue(this,e),p=this.updateCollisionList(a,e,this.hash,this.children,o,s,i);return p===this.children?this:p.length>1?new t(e,this.hash,p):p[0]}let c=o(F());return U(c)?this:(++i.value,Un(e,r,this.hash,this,n,new Nt(e,n,s,c)))}updateCollisionList(e,r,o,n,s,i,c){let a=n.length;for(let h=0;h<a;++h){let g=n[h];if("key"in g&&x(i,g.key)){let A=g.value,v=s(A);return v===A?n:U(v)?(--c.value,jr(e,h,n)):Ct(e,h,new Nt(r,o,i,v),n)}}let p=s(F());return U(p)?n:(++c.value,Ct(e,a,new Nt(r,o,i,p),n))}},ie=class t{edit;mask;children;_tag="IndexedNode";constructor(e,r,o){this.edit=e,this.mask=r,this.children=o}modify(e,r,o,n,s,i){let c=this.mask,a=this.children,p=ut(r,n),h=lt(p),g=Ne(c,h),A=c&h,v=Ue(this,e);if(!A){let xt=new st().modify(e,r+5,o,n,s,i);return xt?a.length>=Rn?ic(e,p,xt,c,a):new t(e,c|h,Nn(v,g,xt,a)):this}let jt=a[g],dt=jt.modify(e,r+5,o,n,s,i);if(jt===dt)return this;let ht=c,mt;if(G(dt)){if(ht&=~h,!ht)return new st;if(a.length<=2&&nc(a[g^1]))return a[g^1];mt=jr(v,g,a)}else mt=Ct(v,g,dt,a);return v?(this.mask=ht,this.children=mt,this):new t(e,ht,mt)}},Gr=class t{edit;size;children;_tag="ArrayNode";constructor(e,r,o){this.edit=e,this.size=r,this.children=o}modify(e,r,o,n,s,i){let c=this.size,a=this.children,p=ut(r,n),h=a[p],g=(h||new st).modify(e,r+5,o,n,s,i);if(h===g)return this;let A=Ue(this,e),v;if(G(h)&&!G(g))++c,v=Ct(A,p,g,a);else if(!G(h)&&G(g)){if(--c,c<=Fn)return sc(e,c,p,a);v=Ct(A,p,new st,a)}else v=Ct(A,p,g,a);return A?(this.size=c,this.children=v,this):new t(e,c,v)}};function sc(t,e,r,o){let n=new Array(e-1),s=0,i=0;for(let c=0,a=o.length;c<a;++c)if(c!==r){let p=o[c];p&&!G(p)&&(n[s++]=p,i|=1<<c)}return new ie(t,i,n)}function ic(t,e,r,o,n){let s=[],i=o,c=0;for(let a=0;i;++a)i&1&&(s[a]=n[c++]),i>>>=1;return s[e]=r,new Gr(t,c+1,s)}function cc(t,e,r,o,n,s){if(r===n)return new Wr(t,r,[s,o]);let i=ut(e,r),c=ut(e,n);if(i===c)return a=>new ie(t,lt(i)|lt(c),[a]);{let a=i<c?[o,s]:[s,o];return new ie(t,lt(i)|lt(c),a)}}function Un(t,e,r,o,n,s){let i,c=e;for(;;){let a=cc(t,c,r,o,n,s);if(typeof a=="function")i=Pn(a,i),c=c+5;else{let p=a;for(;i!=null;)p=i.value(p),i=i.previous;return p}}}var Ln="effect/HashMap",zr=Symbol.for(Ln),pc={[zr]:zr,[Symbol.iterator](){return new Le(this,(t,e)=>[t,e])},[f](){let t=l(Ln);for(let e of this)t^=b(l(e[0]),M(l(e[1])));return S(this,t)},[m](t){if(lc(t)){if(t._size!==this._size)return!1;for(let e of this){let r=b(t,fc(e[0],l(e[0])));if(U(r))return!1;if(!x(e[1],r.value))return!1}return!0}return!1},toString(){return E(this.toJSON())},toJSON(){return{_id:"HashMap",values:Array.from(this).map(O)}},[y](){return this.toJSON()},pipe(){return C(this,arguments)}},Jr=(t,e,r,o)=>{let n=Object.create(pc);return n._editable=t,n._edit=e,n._root=r,n._size=o,n},Le=class t{map;f;v;constructor(e,r){this.map=e,this.f=r,this.v=Hn(this.map._root,this.f,void 0)}next(){if(U(this.v))return{done:!0,value:void 0};let e=this.v.value;return this.v=He(e.cont),{done:!1,value:e.value}}[Symbol.iterator](){return new t(this.map,this.f)}},He=t=>t?Bn(t[0],t[1],t[2],t[3],t[4]):F(),Hn=(t,e,r=void 0)=>{switch(t._tag){case"LeafNode":return at(t.value)?Q({value:e(t.key,t.value.value),cont:r}):He(r);case"CollisionNode":case"ArrayNode":case"IndexedNode":{let o=t.children;return Bn(o.length,o,0,e,r)}default:return He(r)}},Bn=(t,e,r,o,n)=>{for(;r<t;){let s=e[r++];if(s&&!G(s))return Hn(s,o,[t,e,r,o,n])}return He(n)},uc=Jr(!1,0,new st,0),qn=()=>uc;var lc=t=>_(t,zr);var fc=u(3,(t,e,r)=>{let o=t._root,n=0;for(;;)switch(o._tag){case"LeafNode":return x(e,o.key)?o.value:F();case"CollisionNode":{if(r===o.hash){let s=o.children;for(let i=0,c=s.length;i<c;++i){let a=s[i];if("key"in a&&x(e,a.key))return a.value}}return F()}case"IndexedNode":{let s=ut(n,r),i=lt(s);if(o.mask&i){o=o.children[Ne(o.mask,i)],n+=5;break}return F()}case"ArrayNode":{if(o=o.children[ut(n,r)],o){n+=5;break}return F()}default:return F()}});var $r=u(3,(t,e,r)=>hc(t,e,()=>Q(r))),dc=u(3,(t,e,r)=>t._editable?(t._root=e,t._size=r,t):e===t._root?t:Jr(t._editable,t._edit,e,r)),Dn=t=>new Le(t,e=>e);var Be=t=>t._size,jn=t=>Jr(!0,t._edit+1,t._root,t._size);var hc=u(3,(t,e,r)=>mc(t,e,l(e),r)),mc=u(4,(t,e,r,o)=>{let n={value:t._size},s=t._root.modify(t._editable?t._edit:NaN,0,o,r,e,n);return b(t,dc(s,n.value))});var Wn=u(2,(t,e)=>Gn(t,void 0,(r,o,n)=>e(o,n))),Gn=u(3,(t,e,r)=>{let o=t._root;if(o._tag==="LeafNode")return at(o.value)?r(e,o.value.value,o.key):e;if(o._tag==="EmptyNode")return e;let n=[o.children],s;for(;s=n.pop();)for(let i=0,c=s.length;i<c;){let a=s[i++];a&&!G(a)&&(a._tag==="LeafNode"?at(a.value)&&(e=r(e,a.value.value,a.key)):n.push(a.children))}return e});var zn="effect/HashSet",qe=Symbol.for(zn),gc={[qe]:qe,[Symbol.iterator](){return Dn(this._keyMap)},[f](){return S(this,M(l(this._keyMap))(l(zn)))},[m](t){return Jn(t)?Be(this._keyMap)===Be(t._keyMap)&&x(this._keyMap,t._keyMap):!1},toString(){return E(this.toJSON())},toJSON(){return{_id:"HashSet",values:Array.from(this).map(O)}},[y](){return this.toJSON()},pipe(){return C(this,arguments)}},Vr=t=>{let e=Object.create(gc);return e._keyMap=t,e},Jn=t=>_(t,qe),_c=Vr(qn()),Yr=()=>_c;var $n=t=>Be(t._keyMap),Vn=t=>Vr(jn(t._keyMap)),Yn=t=>(t._keyMap._editable=!1,t),Kn=u(2,(t,e)=>{let r=Vn(t);return e(r),Yn(r)}),De=u(2,(t,e)=>t._keyMap._editable?($r(e,!0)(t._keyMap),t):Vr($r(e,!0)(t._keyMap)));var Zn=u(2,(t,e)=>Kn(Yr(),r=>{Qn(t,o=>De(r,o));for(let o of e)De(r,o)}));var Qn=u(2,(t,e)=>Wn(t._keyMap,(r,o)=>e(o)));var ce=Yr;var Xn=$n;var je=De;var We=Zn;var Sc=Object.assign(Object.create(Array.prototype),{[f](){return S(this,Oe(this))},[m](t){return Array.isArray(t)&&this.length===t.length?this.every((e,r)=>x(e,t[r])):!1}}),ts=function(){function t(e){e&&Object.assign(this,e)}return t.prototype=lr,t}();var Kr="Die",Ge="Empty",ze="Fail",Zr="Interrupt",Lt="Parallel",Ht="Sequential";var ss="effect/Cause",is=Symbol.for(ss),Cc={_E:t=>t},Xr={[is]:Cc,[f](){return b(l(ss),M(l(vc(this))),S(this))},[m](t){return kc(t)&&Ic(this,t)},pipe(){return C(this,arguments)},toJSON(){switch(this._tag){case"Empty":return{_id:"Cause",_tag:this._tag};case"Die":return{_id:"Cause",_tag:this._tag,defect:O(this.defect)};case"Interrupt":return{_id:"Cause",_tag:this._tag,fiberId:this.fiberId.toJSON()};case"Fail":return{_id:"Cause",_tag:this._tag,failure:O(this.error)};case"Sequential":case"Parallel":return{_id:"Cause",_tag:this._tag,left:O(this.left),right:O(this.right)}}},toString(){return to(this)},[y](){return this.toJSON()}};var $e=t=>{let e=Object.create(Xr);return e._tag=ze,e.error=t,e};var cs=(t,e)=>{let r=Object.create(Xr);return r._tag=Lt,r.left=t,r.right=e,r},ae=(t,e)=>{let r=Object.create(Xr);return r._tag=Ht,r.left=t,r.right=e,r},kc=t=>_(t,is);var as=t=>ps(void 0,Mc)(t);var Ic=(t,e)=>{let r=Et(t),o=Et(e);for(;Fe(r)&&Fe(o);){let[n,s]=b(Pe(r),os([ce(),bt()],([a,p],h)=>{let[g,A]=Qr(h);return Q([b(a,We(g)),b(p,nt(A))])})),[i,c]=b(Pe(o),os([ce(),bt()],([a,p],h)=>{let[g,A]=Qr(h);return Q([b(a,We(g)),b(p,nt(A))])}));if(!x(n,i))return!1;r=s,o=c}return!0},vc=t=>Ac(Et(t),bt()),Ac=(t,e)=>{for(;;){let[r,o]=b(t,Sr([ce(),bt()],([s,i],c)=>{let[a,p]=Qr(c);return[b(s,We(a)),b(i,nt(p))]})),n=Xn(r)>0?b(e,Re(r)):e;if(An(o))return ne(n);t=o,e=n}throw new Error(Jt("Cause.flattenCauseLoop"))};var Qr=t=>{let e=t,r=[],o=ce(),n=bt();for(;e!==void 0;)switch(e._tag){case Ge:{if(r.length===0)return[o,n];e=r.pop();break}case ze:{if(o=je(o,se(e._tag,e.error)),r.length===0)return[o,n];e=r.pop();break}case Kr:{if(o=je(o,se(e._tag,e.defect)),r.length===0)return[o,n];e=r.pop();break}case Zr:{if(o=je(o,se(e._tag,e.fiberId)),r.length===0)return[o,n];e=r.pop();break}case Ht:{switch(e.left._tag){case Ge:{e=e.right;break}case Ht:{e=ae(e.left.left,ae(e.left.right,e.right));break}case Lt:{e=cs(ae(e.left.left,e.right),ae(e.left.right,e.right));break}default:{n=Re(n,e.right),e=e.left;break}}break}case Lt:{r.push(e.right),e=e.left;break}}throw new Error(Jt("Cause.evaluateCauseLoop"))};var Mc={emptyCase:xe,failCase:tr,dieCase:tr,interruptCase:xe,sequentialCase:(t,e,r)=>e&&r,parallelCase:(t,e,r)=>e&&r};var es="SequentialCase",rs="ParallelCase";var os=u(3,(t,e,r)=>{let o=e,n=t,s=[];for(;n!==void 0;){let i=r(o,n);switch(o=at(i)?i.value:o,n._tag){case Ht:{s.push(n.right),n=n.left;break}case Lt:{s.push(n.right),n=n.left;break}default:{n=void 0;break}}n===void 0&&s.length>0&&(n=s.pop())}return o}),ps=u(3,(t,e,r)=>{let o=[t],n=[];for(;o.length>0;){let i=o.pop();switch(i._tag){case Ge:{n.push($t(r.emptyCase(e)));break}case ze:{n.push($t(r.failCase(e,i.error)));break}case Kr:{n.push($t(r.dieCase(e,i.defect)));break}case Zr:{n.push($t(r.interruptCase(e,i.fiberId)));break}case Ht:{o.push(i.right),o.push(i.left),n.push(yr({_tag:es}));break}case Lt:{o.push(i.right),o.push(i.left),n.push(yr({_tag:rs}));break}}}let s=[];for(;n.length>0;){let i=n.pop();switch(i._tag){case"Left":{switch(i.left._tag){case es:{let c=s.pop(),a=s.pop(),p=r.sequentialCase(e,c,a);s.push(p);break}case rs:{let c=s.pop(),a=s.pop(),p=r.parallelCase(e,c,a);s.push(p);break}}break}case"Right":{s.push(i.right);break}}}if(s.length===0)throw new Error("BUG: Cause.reduceWithContext - please report an issue at https://github.com/Effect-TS/effect/issues");return s.pop()}),to=(t,e)=>as(t)?"All fibers interrupted without errors.":Pc(t).map(function(r){return e?.renderErrorCause!==!0||r.cause===void 0?r.stack:`${r.stack} {
|
|
10
|
+
${us(r.cause," ")}
|
|
11
|
+
}`}).join(`
|
|
12
|
+
`),us=(t,e)=>{let r=t.stack.split(`
|
|
13
|
+
`),o=`${e}[cause]: ${r[0]}`;for(let n=1,s=r.length;n<s;n++)o+=`
|
|
14
|
+
${e}${r[n]}`;return t.cause&&(o+=` {
|
|
15
|
+
${us(t.cause,`${e} `)}
|
|
16
|
+
${e}}`),o},Je=class t extends globalThis.Error{span=void 0;constructor(e){let r=typeof e=="object"&&e!==null,o=Error.stackTraceLimit;Error.stackTraceLimit=1,super(wc(e),r&&"cause"in e&&typeof e.cause<"u"?{cause:new t(e.cause)}:void 0),this.message===""&&(this.message="An error has occurred"),Error.stackTraceLimit=o,this.name=e instanceof Error?e.name:"Error",r&&(ns in e&&(this.span=e[ns]),Object.keys(e).forEach(n=>{n in this||(this[n]=e[n])})),this.stack=Fc(`${this.name}: ${this.message}`,e instanceof Error&&e.stack?e.stack:"",this.span)}},wc=t=>{if(typeof t=="string")return t;if(typeof t=="object"&&t!==null&&t instanceof Error)return t.message;try{if(_(t,"toString")&&zt(t.toString)&&t.toString!==Object.prototype.toString&&t.toString!==globalThis.Array.prototype.toString)return t.toString()}catch{}return ar(t)},Tc=/\((.*)\)/g,Rc=B("effect/Tracer/spanToTrace",()=>new WeakMap),Fc=(t,e,r)=>{let o=[t],n=e.startsWith(t)?e.slice(t.length).split(`
|
|
17
|
+
`):e.split(`
|
|
18
|
+
`);for(let s=1;s<n.length&&!n[s].includes("Generator.next");s++){if(n[s].includes("effect_internal_function")){o.pop();break}o.push(n[s].replace(/at .*effect_instruction_i.*\((.*)\)/,"at $1").replace(/EffectPrimitive\.\w+/,"<anonymous>"))}if(r){let s=r,i=0;for(;s&&s._tag==="Span"&&i<10;){let c=Rc.get(s);if(typeof c=="function"){let a=c();if(typeof a=="string"){let p=a.matchAll(Tc),h=!1;for(let[,g]of p)h=!0,o.push(` at ${s.name} (${g})`);h||o.push(` at ${s.name} (${a.replace(/^at /,"")})`)}else o.push(` at ${s.name}`)}else o.push(` at ${s.name}`);s=Uo(s.parent),i++}}return o.join(`
|
|
19
|
+
`)},ns=Symbol.for("effect/SpanAnnotation"),Pc=t=>ps(t,void 0,{emptyCase:()=>[],dieCase:(e,r)=>[new Je(r)],failCase:(e,r)=>[new Je(r)],interruptCase:()=>[],parallelCase:(e,r,o)=>[...r,...o],sequentialCase:(e,r,o)=>[...r,...o]});var Bt=class t{self;called=!1;constructor(e){this.self=e}next(e){return this.called?{value:e,done:!0}:(this.called=!0,{value:this.self,done:!1})}return(e){return{value:e,done:!0}}throw(e){throw e}[Symbol.iterator](){return new t(this.self)}};var Ve=Symbol.for("effect/Effect");var eo=class{_op;effect_instruction_i0=void 0;effect_instruction_i1=void 0;effect_instruction_i2=void 0;trace=void 0;[Ve]=ct;constructor(e){this._op=e}[m](e){return this===e}[f](){return S(this,It(this))}pipe(){return C(this,arguments)}toJSON(){return{_id:"Effect",_op:this._op,effect_instruction_i0:O(this.effect_instruction_i0),effect_instruction_i1:O(this.effect_instruction_i1),effect_instruction_i2:O(this.effect_instruction_i2)}}toString(){return E(this.toJSON())}[y](){return this.toJSON()}[Symbol.iterator](){return new Bt(new z(this))}},ro=class{_op;effect_instruction_i0=void 0;effect_instruction_i1=void 0;effect_instruction_i2=void 0;trace=void 0;[Ve]=ct;constructor(e){this._op=e,this._tag=e}[m](e){return Es(e)&&e._op==="Failure"&&x(this.effect_instruction_i0,e.effect_instruction_i0)}[f](){return b(q(this._tag),M(l(this.effect_instruction_i0)),S(this))}get cause(){return this.effect_instruction_i0}pipe(){return C(this,arguments)}toJSON(){return{_id:"Exit",_tag:this._op,cause:this.cause.toJSON()}}toString(){return E(this.toJSON())}[y](){return this.toJSON()}[Symbol.iterator](){return new Bt(new z(this))}},ls=class{_op;effect_instruction_i0=void 0;effect_instruction_i1=void 0;effect_instruction_i2=void 0;trace=void 0;[Ve]=ct;constructor(e){this._op=e,this._tag=e}[m](e){return Es(e)&&e._op==="Success"&&x(this.effect_instruction_i0,e.effect_instruction_i0)}[f](){return b(q(this._tag),M(l(this.effect_instruction_i0)),S(this))}get value(){return this.effect_instruction_i0}pipe(){return C(this,arguments)}toJSON(){return{_id:"Exit",_tag:this._op,value:O(this.value)}}toString(){return E(this.toJSON())}[y](){return this.toJSON()}[Symbol.iterator](){return new Bt(new z(this))}},Uc=t=>_(t,Ve),Lc=t=>{let e=new eo(Oo);return e.effect_instruction_i0=t,e};var oo=Symbol.for("effect/SpanAnnotation"),fs=Symbol.for("effect/OriginalAnnotation");var Hc=(t,e)=>at(e)?new Proxy(t,{has(r,o){return o===oo||o===fs||o in r},get(r,o){return o===oo?e.value:o===fs?t:r[o]}}):t;var Bc=t=>nr(t)&&!(oo in t)?Lc(e=>ds($e(Hc(t,Wc(e))))):ds($e(t));var ds=t=>{let e=new ro(yo);return e.effect_instruction_i0=t,e};var El={_tag:"All",syslog:0,label:"ALL",ordinal:Number.MIN_SAFE_INTEGER,pipe(){return C(this,arguments)}};var Cl={_tag:"None",syslog:7,label:"OFF",ordinal:Number.MAX_SAFE_INTEGER,pipe(){return C(this,arguments)}};var qc="effect/RequestResolver",bs=Symbol.for(qc),Dc={_A:t=>t,_R:t=>t},hs=class t{runAll;target;[bs]=Dc;constructor(e,r){this.runAll=e,this.target=r}[f](){return S(this,this.target?l(this.target):It(this))}[m](e){return this.target?jc(e)&&x(this.target,e.target):this===e}identified(...e){return new t(this.runAll,In(e))}pipe(){return C(this,arguments)}},jc=t=>_(t,bs);var no=function(){class t extends globalThis.Error{commit(){return Bc(this)}toJSON(){return{...this}}[y](){return this.toString!==globalThis.Error.prototype.toString?this.stack?`${this.toString()}
|
|
20
|
+
${this.stack.split(`
|
|
21
|
+
`).slice(1).join(`
|
|
22
|
+
`)}`:this.toString():"Bun"in globalThis?to($e(this),{renderErrorCause:!0}):this}}return Object.assign(t.prototype,dr),t}(),kt=(t,e)=>{class r extends no{_tag=e}return Object.assign(r.prototype,t),r.prototype.name=e,r},ms=Symbol.for("effect/Cause/errors/RuntimeException"),kl=kt({[ms]:ms},"RuntimeException");var xs=Symbol.for("effect/Cause/errors/InterruptedException"),Il=kt({[xs]:xs},"InterruptedException");var gs=Symbol.for("effect/Cause/errors/IllegalArgument"),vl=kt({[gs]:gs},"IllegalArgumentException");var _s=Symbol.for("effect/Cause/errors/NoSuchElement"),Al=kt({[_s]:_s},"NoSuchElementException");var ys=Symbol.for("effect/Cause/errors/InvalidPubSubCapacityException"),Ml=kt({[ys]:ys},"InvalidPubSubCapacityException"),Os=Symbol.for("effect/Cause/errors/ExceededCapacityException"),wl=kt({[Os]:Os},"ExceededCapacityException");var Ss=Symbol.for("effect/Cause/errors/Timeout"),Tl=kt({[Ss]:Ss},"TimeoutException");var Es=t=>Uc(t)&&"_tag"in t&&(t._tag==="Success"||t._tag==="Failure");var Wc=t=>{let e=t.currentSpan;return e!==void 0&&e._tag==="Span"?Q(e):F()};var pe=ts,Cs=t=>{class e extends pe{_tag=t}return e};var zc=function(){let t=Symbol.for("effect/Data/Error/plainArgs");return class extends no{constructor(r){super(r?.message,r?.cause?{cause:r.cause}:void 0),r&&(Object.assign(this,r),Object.defineProperty(this,t,{value:r,enumerable:!1}))}toJSON(){return{...this[t],...this}}}}(),qt=t=>{class e extends zc{_tag=t}return e.prototype.name=t,e};var ue=class t extends Cs("BotResponse"){static make(e){return new t({response:e})}static ignore=new t({})},ft=class extends vt("BotUpdateHandlers")(){};var ks=t=>{for(let[e,r]of Object.entries(t))if(e!="update_id")return{type:e,...r}};var Is=t=>{let e=t[0];for(let r=1;r<t.length;r++)e+=t[r]==="_"?t[++r].toUpperCase():t[r];return e};var Y=class t extends qt("TgBotClientError"){static missingSuccess=new t({reason:{type:"ClientInternalError",cause:"Expected 'success' to be defined"}})};var vs=t=>typeof t=="object"&&t!=null&&"file_content"in t&&t.file_content instanceof Uint8Array&&"file_name"in t&&typeof t.file_name=="string",As=t=>typeof t=="object"&&t!=null&&"ok"in t&&typeof t.ok=="boolean",Ms=t=>typeof t=="object"&&t!=null&&"bot_token"in t&&typeof t.bot_token=="string";var ws=t=>{let e=Object.entries(t);if(e.length==0)return;let r=new FormData;for(let[o,n]of e)n&&(typeof n!="object"?r.append(o,`${n}`):vs(n)?r.append(o,new Blob([n.file_content]),n.file_name):r.append(o,JSON.stringify(n)));return r};var it=(t,e)=>I(function*(){let r=yield*w(H),o=yield*$({try:()=>fetch(`${r.base_url}/bot${r.bot_token}/${Is(t)}`,{body:ws(e)??null,method:"POST"}),catch:s=>new Y({reason:{type:"ClientInternalError",cause:s}})}),n=yield*$({try:()=>o.json(),catch:()=>new Y({reason:{type:"UnexpectedResponse",response:o}})});return As(n)?o.ok?n.result:yield*P(new Y({reason:{type:"NotOkResponse",...n.error_code?{errorCode:n.error_code}:void 0,...n.description?{details:n.description}:void 0}})):yield*P(new Y({reason:{type:"UnexpectedResponse",response:n}}))});var le=class t extends pe{static make(e){let r=e.batch_size??10,o=e.poll_timeout??10,n=e.max_empty_responses,s=e.log_level??"info",i=e.on_error;(r<10||r>100)&&(console.warn("Wrong batch_size, must be in [10..100], using 10 instead"),r=10),(o<2||o>10)&&(console.warn("Wrong poll_timeout, must be in [2..10], using 2 instead"),o=10),n&&n<2&&(console.warn("Wrong max_empty_responses, must be in [2..infinity], using infinity"),n=void 0),s||(s="info"),i||(i="stop");let c=new t({batch_size:r,poll_timeout:o,max_empty_responses:n,log_level:s,on_error:i});return console.log("bot poll settings",c),c}},K=class extends J()("BotSettings",{defaultValue(){return le.make({})}}){};var fe=class extends pe{},Ts=t=>I(function*(){let e=yield*w(K),r=yield*w(ft);return r.type=="single"?yield*Vc(t,r,e):yield*$c(t,r,e)}),$c=(t,e,r)=>Pr({try:()=>e.on_batch(t),catch:o=>o}).pipe(j(o=>o instanceof Promise?$({try:()=>o,catch:n=>n}):k(o)),j(o=>new fe({hasErrors:!o,updates:t})),Te(o=>(console.log("handle batch error",{errorMessage:o instanceof Error?o.message:void 0,updates:t.map(n=>Object.keys(n).at(1))}),k(new fe({hasErrors:!0,updates:t}))))),Dt=class extends qt("HandleUpdateError"){},Vc=(t,e,r)=>Hr(t,o=>Yc(o,e).pipe(Te(n=>(console.log("update handle error",{updateId:o.update_id,updateKey:Object.keys(o).at(1),name:n._tag,...n.cause instanceof Error?{error:n.cause.message}:void 0}),k(n)))),{concurrency:10}).pipe(j(o=>(r.log_level=="debug"&&console.debug("handle batch result",o),new fe({hasErrors:!o.every(n=>n==null),updates:t})))),Yc=(t,e)=>I(function*(){let r=ks(t);if(!r)return yield*P(new Dt({name:"UnknownUpdate",update:t}));let o=e[`on_${r.type}`];if(!o)return yield*P(new Dt({name:"HandlerNotDefined",update:t}));r.type=="message"&&"text"in r&&console.info("Got a new text message",{chatId:r.chat.id,chatType:r.chat.type,message:`${r.text.slice(0,5)}...`});let n,s=yield*Pr({try:()=>o(r),catch:c=>new Dt({name:"BotHandlerError",update:t,cause:c})}).pipe(j(c=>c instanceof Promise?$({try:()=>c,catch:a=>new Dt({name:"BotHandlerError",update:t,cause:a})}):k(c)),Te(c=>(n=c,console.log("error",{updateId:t.update_id,updateKey:Object.keys(t).at(1),name:c._tag,...c.cause instanceof Error?{error:c.cause.message}:void 0}),k(ue.make({type:"message",text:`Some internal error has happend(${c.name}) while handling this message`,message_effect_id:re["\u{1F4A9}"],...t.message?.message_id?{reply_parameters:{message_id:t.message?.message_id}}:void 0}))))),i=yield*w(K);if(!s&&i.log_level=="debug"){console.log(`Bot response is undefined for update with ID #${t.update_id}.`);return}if("chat"in r&&s.response){let c=yield*it(`send_${s.response.type}`,{...s.response,chat_id:r.chat.id});i.log_level=="debug"&&console.debug("bot response",c)}return n});var Ke=class extends J()("BotFetchUpdatesService",{defaultValue:()=>{let e={lastUpdateId:void 0,emptyResponses:0},r=Kc(e).pipe(ee(n=>{let s=n.map(i=>i.update_id).sort().at(-1);console.log("updating last update id",s),e.lastUpdateId=s?s+1:void 0,console.log(e)})),o=Zc(e);return{state:e,fetchUpdates:r,commit:o}}}){},Ze=class extends qt("FetchUpdatesError"){},Kc=t=>I(function*(){let e=yield*w(K);if(e.max_empty_responses&&t.emptyResponses==e.max_empty_responses)return yield*P(new Ze({name:"TooManyEmptyResponses"}));let r=t.lastUpdateId;e.log_level=="debug"&&console.debug("getting updates",t);let o=yield*it("get_updates",{timeout:e.poll_timeout,...r?{offset:r}:void 0}).pipe(j(n=>n.sort(s=>s.update_id)));return o.length?(console.debug(`got a batch of updates (${o.length})`),t.emptyResponses=0,o):(t.emptyResponses+=1,[])}),Zc=t=>I(function*(){return console.log("commit",{pollState:t}),t.lastUpdateId?yield*it("get_updates",{offset:t.lastUpdateId,limit:0}).pipe(j(j(w(K),e=>{e.log_level=="debug"&&console.debug("committed offset",t)}))):yield*P(new Ze({name:"NoUpdatesToCommit"}))});var de=class extends J()("BotRunService",{defaultValue:()=>{console.log("Initiating BotRunService");let e={fiber:void 0};return{runBotInBackground:Qc(e),getFiber:()=>e.fiber}}}){},Qc=t=>I(function*(){console.log("run bot");let e=yield*w(Ke),r=_n(1e3)(e.fetchUpdates.pipe(j(o=>Ts(o)),ee(({updates:o})=>o.length>0?e.commit:yt))).pipe(mn({while:o=>!o.hasErrors}),On,ee(o=>o.addObserver(n=>{console.log("bot's fiber has been closed",n)})));t.fiber&&(console.log("killing previous bot's fiber"),yield*sn(t.fiber)),t.fiber=yield*r,console.log("Fetching bot updates via long polling...")});var Rs=t=>I(function*(){if(t.type=="config")return oe(t);let e=yield*$({try:async()=>{let{readFileSync:r}=await import("fs");return JSON.parse(await r("config.json","utf-8"))},catch:r=>(console.warn("invalid tg bot config",r),"ReadingConfigError")});return Ms(e)?oe(e):yield*P("InvalidConfig")});var so=t=>I(function*(){let e=Vo(H,yield*Rs(t)),r=yield*w(de);return yield*r.runBotInBackground.pipe(Ur(e),rt(ft,t.mode),rt(K,le.make(t.poll??{}))),{reload:n=>r.runBotInBackground.pipe(rt(ft,n),Ur(e),St),fiber:r.getFiber}});var Xc=t=>so(t).pipe(St),ta=t=>(Object.keys(t).length==0&&console.warn("No handlers are defined for bot"),t);var Fs=t=>I(function*(){let e=yield*it("get_file",{file_id:t}),r=yield*w(H),o=e.file_path;if(!o||o.length==0)return yield*P(new Y({reason:{type:"UnableToGetFile",cause:"File path not defined"}}));let n=o.replaceAll("/","-"),s=`${r.base_url}/file/bot${r.bot_token}/${o}`,i=yield*$({try:()=>fetch(s).then(a=>a.arrayBuffer()),catch:a=>new Y({reason:{type:"UnableToGetFile",cause:a}})});return new File([new Uint8Array(i)],n)});var he=class extends vt("ClientFileService")(){},Ps=I(function*(){return{getFile:t=>Fs(t.file_id)}});var ea=t=>{let e=oe(t);return I(function*(){let o=yield*w(he);return{execute:(n,s)=>it(n,s).pipe(rt(H,e),St),getFile:n=>o.getFile(n).pipe(rt(H,e),St)}}).pipe(hn(he,Ps),rt(H,e),bn)};0&&(module.exports={BotResponse,BotRunService,BotUpdateHandlersTag,MESSAGE_EFFECTS,defaultBaseUrl,defineBot,isMessageEffect,launchBot,makeTgBotClient,messageEffectIdCodes,runTgChatBot});
|