@xbibzlibrary/telebibz 0.4.4 → 3.0.1
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/CHANGELOG.md +35 -138
- package/LICENSE +1 -1
- package/NOTICE.md +9 -4
- package/README.md +173 -242
- package/examples/01-quickstart.js +13 -0
- package/examples/02-menu-tombol.js +22 -0
- package/examples/03-wizard.js +29 -0
- package/examples/04-broadcast.js +25 -0
- package/examples/05-kirim-file.js +19 -0
- package/examples/06-menu.js +35 -0
- package/examples/07-inline-query.js +18 -0
- package/index.d.ts +81 -0
- package/index.js +42 -0
- package/lib/api.js +154 -0
- package/lib/broadcast.js +35 -0
- package/lib/composer.js +174 -0
- package/lib/context.js +190 -0
- package/lib/errors.js +35 -0
- package/lib/file.js +41 -0
- package/lib/inline-query.js +28 -0
- package/lib/keyboard.js +83 -0
- package/lib/logger.js +38 -0
- package/lib/menus.js +90 -0
- package/lib/net.js +115 -0
- package/lib/ratelimit.js +61 -0
- package/lib/runner.js +45 -0
- package/lib/session.js +36 -0
- package/lib/telebibz.js +190 -0
- package/lib/wizard.js +81 -0
- package/package.json +35 -97
- package/test/all.test.js +334 -0
- package/CODE_OF_CONDUCT.md +0 -37
- package/CONTRIBUTING.md +0 -59
- package/CONTRIBUTION_RULES.md +0 -41
- package/GOVERNANCE.md +0 -47
- package/README.id.md +0 -292
- package/README.zh-CN.md +0 -292
- package/RELEASE_AUTOMATION.md +0 -78
- package/RELEASE_POLICY.md +0 -32
- package/SECURITY.md +0 -47
- package/SHOWCASE.md +0 -29
- package/SUPPORT.md +0 -30
- package/assets/readme-preview.html +0 -75
- package/assets/telebibz-logo.png +0 -0
- package/assets/telebibz-readme-preview.png +0 -0
- package/bin/telebibz.mjs +0 -3
- package/dist/generated/api.d.ts +0 -13
- package/dist/generated/api.d.ts.map +0 -1
- package/dist/generated/api.js +0 -192
- package/dist/generated/api.js.map +0 -1
- package/dist/src/api/client.d.ts +0 -62
- package/dist/src/api/client.d.ts.map +0 -1
- package/dist/src/api/client.js +0 -104
- package/dist/src/api/client.js.map +0 -1
- package/dist/src/api/errors.d.ts +0 -45
- package/dist/src/api/errors.d.ts.map +0 -1
- package/dist/src/api/errors.js +0 -65
- package/dist/src/api/errors.js.map +0 -1
- package/dist/src/api/index.d.ts +0 -6
- package/dist/src/api/index.d.ts.map +0 -1
- package/dist/src/api/index.js +0 -6
- package/dist/src/api/index.js.map +0 -1
- package/dist/src/api/telegram-types/LICENSE +0 -21
- package/dist/src/api/telegram-types/api.d.ts +0 -22
- package/dist/src/api/telegram-types/checklist.d.ts +0 -72
- package/dist/src/api/telegram-types/inline.d.ts +0 -692
- package/dist/src/api/telegram-types/langs.d.ts +0 -193
- package/dist/src/api/telegram-types/manage.d.ts +0 -1144
- package/dist/src/api/telegram-types/markup.d.ts +0 -268
- package/dist/src/api/telegram-types/message.d.ts +0 -1537
- package/dist/src/api/telegram-types/methods.d.ts +0 -2870
- package/dist/src/api/telegram-types/mod.d.ts +0 -14
- package/dist/src/api/telegram-types/passport.d.ts +0 -163
- package/dist/src/api/telegram-types/payment.d.ts +0 -570
- package/dist/src/api/telegram-types/rich.d.ts +0 -1010
- package/dist/src/api/telegram-types/settings.d.ts +0 -120
- package/dist/src/api/telegram-types/story.d.ts +0 -89
- package/dist/src/api/telegram-types/update.d.ts +0 -84
- package/dist/src/api/telegram.d.ts +0 -7
- package/dist/src/api/telegram.d.ts.map +0 -1
- package/dist/src/api/telegram.js +0 -2
- package/dist/src/api/telegram.js.map +0 -1
- package/dist/src/api/transport.d.ts +0 -68
- package/dist/src/api/transport.d.ts.map +0 -1
- package/dist/src/api/transport.js +0 -264
- package/dist/src/api/transport.js.map +0 -1
- package/dist/src/api/types.d.ts +0 -466
- package/dist/src/api/types.d.ts.map +0 -1
- package/dist/src/api/types.js +0 -2
- package/dist/src/api/types.js.map +0 -1
- package/dist/src/branding/terminal.d.ts +0 -77
- package/dist/src/branding/terminal.d.ts.map +0 -1
- package/dist/src/branding/terminal.js +0 -328
- package/dist/src/branding/terminal.js.map +0 -1
- package/dist/src/broadcast/broadcast.d.ts +0 -50
- package/dist/src/broadcast/broadcast.d.ts.map +0 -1
- package/dist/src/broadcast/broadcast.js +0 -56
- package/dist/src/broadcast/broadcast.js.map +0 -1
- package/dist/src/cache/cache.d.ts +0 -34
- package/dist/src/cache/cache.d.ts.map +0 -1
- package/dist/src/cache/cache.js +0 -41
- package/dist/src/cache/cache.js.map +0 -1
- package/dist/src/cli.d.ts +0 -2
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -84
- package/dist/src/cli.js.map +0 -1
- package/dist/src/context/context.d.ts +0 -124
- package/dist/src/context/context.d.ts.map +0 -1
- package/dist/src/context/context.js +0 -302
- package/dist/src/context/context.js.map +0 -1
- package/dist/src/core/bot.d.ts +0 -204
- package/dist/src/core/bot.d.ts.map +0 -1
- package/dist/src/core/bot.js +0 -506
- package/dist/src/core/bot.js.map +0 -1
- package/dist/src/core/events.d.ts +0 -75
- package/dist/src/core/events.d.ts.map +0 -1
- package/dist/src/core/events.js +0 -35
- package/dist/src/core/events.js.map +0 -1
- package/dist/src/core/webhook-reply.d.ts +0 -34
- package/dist/src/core/webhook-reply.d.ts.map +0 -1
- package/dist/src/core/webhook-reply.js +0 -37
- package/dist/src/core/webhook-reply.js.map +0 -1
- package/dist/src/index.d.ts +0 -24
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -24
- package/dist/src/index.js.map +0 -1
- package/dist/src/keyboard/index.d.ts +0 -46
- package/dist/src/keyboard/index.d.ts.map +0 -1
- package/dist/src/keyboard/index.js +0 -55
- package/dist/src/keyboard/index.js.map +0 -1
- package/dist/src/middleware/compose.d.ts +0 -5
- package/dist/src/middleware/compose.d.ts.map +0 -1
- package/dist/src/middleware/compose.js +0 -17
- package/dist/src/middleware/compose.js.map +0 -1
- package/dist/src/observability/logger.d.ts +0 -78
- package/dist/src/observability/logger.d.ts.map +0 -1
- package/dist/src/observability/logger.js +0 -285
- package/dist/src/observability/logger.js.map +0 -1
- package/dist/src/plugins/plugin.d.ts +0 -38
- package/dist/src/plugins/plugin.d.ts.map +0 -1
- package/dist/src/plugins/plugin.js +0 -59
- package/dist/src/plugins/plugin.js.map +0 -1
- package/dist/src/queue/queue.d.ts +0 -77
- package/dist/src/queue/queue.d.ts.map +0 -1
- package/dist/src/queue/queue.js +0 -213
- package/dist/src/queue/queue.js.map +0 -1
- package/dist/src/router/router.d.ts +0 -61
- package/dist/src/router/router.d.ts.map +0 -1
- package/dist/src/router/router.js +0 -183
- package/dist/src/router/router.js.map +0 -1
- package/dist/src/state/conversation.d.ts +0 -56
- package/dist/src/state/conversation.d.ts.map +0 -1
- package/dist/src/state/conversation.js +0 -133
- package/dist/src/state/conversation.js.map +0 -1
- package/dist/src/state/forms.d.ts +0 -34
- package/dist/src/state/forms.d.ts.map +0 -1
- package/dist/src/state/forms.js +0 -44
- package/dist/src/state/forms.js.map +0 -1
- package/dist/src/state/menu.d.ts +0 -78
- package/dist/src/state/menu.d.ts.map +0 -1
- package/dist/src/state/menu.js +0 -127
- package/dist/src/state/menu.js.map +0 -1
- package/dist/src/storage/storage.d.ts +0 -146
- package/dist/src/storage/storage.d.ts.map +0 -1
- package/dist/src/storage/storage.js +0 -195
- package/dist/src/storage/storage.js.map +0 -1
- package/dist/src/telegram-features.d.ts +0 -33
- package/dist/src/telegram-features.d.ts.map +0 -1
- package/dist/src/telegram-features.js +0 -71
- package/dist/src/telegram-features.js.map +0 -1
- package/dist/src/testing.d.ts +0 -24
- package/dist/src/testing.d.ts.map +0 -1
- package/dist/src/testing.js +0 -38
- package/dist/src/testing.js.map +0 -1
- package/dist/src/utils/concurrency.d.ts +0 -25
- package/dist/src/utils/concurrency.d.ts.map +0 -1
- package/dist/src/utils/concurrency.js +0 -52
- package/dist/src/utils/concurrency.js.map +0 -1
- package/dist/src/utils/files.d.ts +0 -45
- package/dist/src/utils/files.d.ts.map +0 -1
- package/dist/src/utils/files.js +0 -53
- package/dist/src/utils/files.js.map +0 -1
- package/dist/src/utils/text.d.ts +0 -39
- package/dist/src/utils/text.d.ts.map +0 -1
- package/dist/src/utils/text.js +0 -56
- package/dist/src/utils/text.js.map +0 -1
- package/dist/src/webhook/handler.d.ts +0 -19
- package/dist/src/webhook/handler.d.ts.map +0 -1
- package/dist/src/webhook/handler.js +0 -141
- package/dist/src/webhook/handler.js.map +0 -1
- package/dist-cjs/generated/api.js +0 -194
- package/dist-cjs/package.json +0 -3
- package/dist-cjs/src/api/client.js +0 -107
- package/dist-cjs/src/api/errors.js +0 -74
- package/dist-cjs/src/api/index.js +0 -21
- package/dist-cjs/src/api/telegram-types/LICENSE +0 -21
- package/dist-cjs/src/api/telegram-types/api.d.ts +0 -22
- package/dist-cjs/src/api/telegram-types/checklist.d.ts +0 -72
- package/dist-cjs/src/api/telegram-types/inline.d.ts +0 -692
- package/dist-cjs/src/api/telegram-types/langs.d.ts +0 -193
- package/dist-cjs/src/api/telegram-types/manage.d.ts +0 -1144
- package/dist-cjs/src/api/telegram-types/markup.d.ts +0 -268
- package/dist-cjs/src/api/telegram-types/message.d.ts +0 -1537
- package/dist-cjs/src/api/telegram-types/methods.d.ts +0 -2870
- package/dist-cjs/src/api/telegram-types/mod.d.ts +0 -14
- package/dist-cjs/src/api/telegram-types/passport.d.ts +0 -163
- package/dist-cjs/src/api/telegram-types/payment.d.ts +0 -570
- package/dist-cjs/src/api/telegram-types/rich.d.ts +0 -1010
- package/dist-cjs/src/api/telegram-types/settings.d.ts +0 -120
- package/dist-cjs/src/api/telegram-types/story.d.ts +0 -89
- package/dist-cjs/src/api/telegram-types/update.d.ts +0 -84
- package/dist-cjs/src/api/telegram.js +0 -2
- package/dist-cjs/src/api/transport.js +0 -267
- package/dist-cjs/src/api/types.js +0 -2
- package/dist-cjs/src/branding/terminal.js +0 -338
- package/dist-cjs/src/broadcast/broadcast.js +0 -58
- package/dist-cjs/src/cache/cache.js +0 -45
- package/dist-cjs/src/cli.js +0 -86
- package/dist-cjs/src/context/context.js +0 -305
- package/dist-cjs/src/core/bot.js +0 -510
- package/dist-cjs/src/core/events.js +0 -38
- package/dist-cjs/src/core/webhook-reply.js +0 -42
- package/dist-cjs/src/index.js +0 -47
- package/dist-cjs/src/keyboard/index.js +0 -61
- package/dist-cjs/src/middleware/compose.js +0 -20
- package/dist-cjs/src/observability/logger.js +0 -293
- package/dist-cjs/src/plugins/plugin.js +0 -63
- package/dist-cjs/src/queue/queue.js +0 -219
- package/dist-cjs/src/router/router.js +0 -186
- package/dist-cjs/src/state/conversation.js +0 -139
- package/dist-cjs/src/state/forms.js +0 -47
- package/dist-cjs/src/state/menu.js +0 -133
- package/dist-cjs/src/storage/storage.js +0 -202
- package/dist-cjs/src/telegram-features.js +0 -76
- package/dist-cjs/src/testing.js +0 -45
- package/dist-cjs/src/utils/concurrency.js +0 -57
- package/dist-cjs/src/utils/files.js +0 -58
- package/dist-cjs/src/utils/text.js +0 -63
- package/dist-cjs/src/webhook/handler.js +0 -144
- package/docs/API.id.md +0 -1935
- package/docs/API.md +0 -1969
- package/docs/API.zh-CN.md +0 -1929
- package/docs/GETTING_STARTED.id.md +0 -85
- package/docs/GETTING_STARTED.md +0 -85
- package/docs/GETTING_STARTED.zh-CN.md +0 -85
- package/docs/GITHUB_PACKAGES.id.md +0 -82
- package/docs/GITHUB_PACKAGES.md +0 -82
- package/docs/GITHUB_PACKAGES.zh-CN.md +0 -82
- package/docs/README.md +0 -48
- package/docs/STORAGE.id.md +0 -105
- package/docs/STORAGE.md +0 -105
- package/docs/STORAGE.zh-CN.md +0 -105
- package/examples/README.md +0 -37
- package/examples/files.ts +0 -35
- package/examples/minimal.ts +0 -12
- package/examples/tsconfig.json +0 -9
- package/examples/webhook.ts +0 -42
- package/examples/wizard-registration.ts +0 -42
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
// Higher number = more verbose. `silent` must sort BELOW `error` so that every
|
|
2
|
-
// message level is filtered out (a value above all others would let every
|
|
3
|
-
// message through, including errors).
|
|
4
|
-
const priorities = { silent: -1, error: 0, warn: 1, info: 2, debug: 3, trace: 4 };
|
|
5
|
-
const defaultRedactKeys = ["token", "secret", "password", "authorization", "cookie", "private_key", "api_key", "npm_token", "bot_token"];
|
|
6
|
-
const ANSI = {
|
|
7
|
-
reset: "\u001b[0m",
|
|
8
|
-
dim: "\u001b[2m",
|
|
9
|
-
red: "\u001b[31m",
|
|
10
|
-
yellow: "\u001b[33m",
|
|
11
|
-
green: "\u001b[32m",
|
|
12
|
-
cyan: "\u001b[36m",
|
|
13
|
-
blue: "\u001b[34m",
|
|
14
|
-
magenta: "\u001b[35m",
|
|
15
|
-
};
|
|
16
|
-
function isObject(value) { return typeof value === "object" && value !== null; }
|
|
17
|
-
function shouldRedact(key, keys) { const normalized = key.toLowerCase().replace(/[-_]/g, ""); return keys.some((candidate) => normalized.includes(candidate.toLowerCase().replace(/[-_]/g, ""))); }
|
|
18
|
-
function redactString(value) {
|
|
19
|
-
return value
|
|
20
|
-
.replace(/\b\d{6,12}:[A-Za-z0-9_-]{20,}\b/g, "[REDACTED_TELEGRAM_TOKEN]")
|
|
21
|
-
.replace(/\bnpm_[A-Za-z0-9]{20,}\b/g, "[REDACTED_NPM_TOKEN]");
|
|
22
|
-
}
|
|
23
|
-
function safeValue(value, keys, seen = new WeakSet()) {
|
|
24
|
-
if (typeof value === "string")
|
|
25
|
-
return redactString(value);
|
|
26
|
-
if (typeof value === "bigint")
|
|
27
|
-
return `${value}n`;
|
|
28
|
-
if (value instanceof Error)
|
|
29
|
-
return safeValue({ name: value.name, message: value.message, stack: value.stack }, keys, seen);
|
|
30
|
-
if (Array.isArray(value)) {
|
|
31
|
-
if (seen.has(value))
|
|
32
|
-
return "[Circular]";
|
|
33
|
-
seen.add(value);
|
|
34
|
-
return value.map((item) => safeValue(item, keys, seen));
|
|
35
|
-
}
|
|
36
|
-
if (!isObject(value))
|
|
37
|
-
return value;
|
|
38
|
-
if (seen.has(value))
|
|
39
|
-
return "[Circular]";
|
|
40
|
-
seen.add(value);
|
|
41
|
-
const result = {};
|
|
42
|
-
for (const [key, nested] of Object.entries(value))
|
|
43
|
-
result[key] = shouldRedact(key, keys) ? "[REDACTED]" : safeValue(nested, keys, seen);
|
|
44
|
-
return result;
|
|
45
|
-
}
|
|
46
|
-
export function redact(value, keys = defaultRedactKeys) { return safeValue(value, keys); }
|
|
47
|
-
function updateType(update) {
|
|
48
|
-
if (update.callback_query)
|
|
49
|
-
return "callback_query";
|
|
50
|
-
if (update.inline_query)
|
|
51
|
-
return "inline_query";
|
|
52
|
-
if (update.business_message)
|
|
53
|
-
return "business_message";
|
|
54
|
-
if (update.edited_business_message)
|
|
55
|
-
return "edited_business_message";
|
|
56
|
-
if (update.guest_message)
|
|
57
|
-
return "guest_message";
|
|
58
|
-
if (update.edited_guest_message)
|
|
59
|
-
return "edited_guest_message";
|
|
60
|
-
if (update.message_reaction)
|
|
61
|
-
return "message_reaction";
|
|
62
|
-
if (update.message_reaction_count)
|
|
63
|
-
return "message_reaction_count";
|
|
64
|
-
if (update.chat_boost)
|
|
65
|
-
return "chat_boost";
|
|
66
|
-
if (update.removed_chat_boost)
|
|
67
|
-
return "removed_chat_boost";
|
|
68
|
-
if (update.message)
|
|
69
|
-
return "message";
|
|
70
|
-
if (update.edited_message)
|
|
71
|
-
return "edited_message";
|
|
72
|
-
if (update.channel_post)
|
|
73
|
-
return "channel_post";
|
|
74
|
-
if (update.edited_channel_post)
|
|
75
|
-
return "edited_channel_post";
|
|
76
|
-
if (update.my_chat_member)
|
|
77
|
-
return "my_chat_member";
|
|
78
|
-
if (update.chat_member)
|
|
79
|
-
return "chat_member";
|
|
80
|
-
if (update.chat_join_request)
|
|
81
|
-
return "chat_join_request";
|
|
82
|
-
if (update.poll)
|
|
83
|
-
return "poll";
|
|
84
|
-
if (update.poll_answer)
|
|
85
|
-
return "poll_answer";
|
|
86
|
-
return "unknown";
|
|
87
|
-
}
|
|
88
|
-
export const INCOMING_TEXT_LIMIT = 50;
|
|
89
|
-
function padNumber(value) { return String(value).padStart(2, "0"); }
|
|
90
|
-
/** Formats a date as `dd/mm/yyyy hh:mm:ss` in local time. */
|
|
91
|
-
export function formatLocalStamp(date = new Date()) {
|
|
92
|
-
return `${padNumber(date.getDate())}/${padNumber(date.getMonth() + 1)}/${date.getFullYear()} ${padNumber(date.getHours())}:${padNumber(date.getMinutes())}:${padNumber(date.getSeconds())}`;
|
|
93
|
-
}
|
|
94
|
-
function truncateForDisplay(value, limit = INCOMING_TEXT_LIMIT) {
|
|
95
|
-
if (value.length <= limit)
|
|
96
|
-
return { text: value, truncated: false };
|
|
97
|
-
return { text: `${value.slice(0, limit)}…`, truncated: true };
|
|
98
|
-
}
|
|
99
|
-
function nicknameFromUser(user) {
|
|
100
|
-
if (!user)
|
|
101
|
-
return undefined;
|
|
102
|
-
const name = [user.first_name, user.last_name].filter(Boolean).join(" ").trim();
|
|
103
|
-
return name.length > 0 ? name : user.username ?? String(user.id);
|
|
104
|
-
}
|
|
105
|
-
function messageMediaType(message) {
|
|
106
|
-
for (const key of ["photo", "video", "video_note", "animation", "document", "audio", "voice", "sticker", "location", "venue", "contact", "dice", "poll", "story", "paid_media"]) {
|
|
107
|
-
if (message[key] !== undefined)
|
|
108
|
-
return key;
|
|
109
|
-
}
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Builds the human-readable description of an incoming update used for the
|
|
114
|
-
* `[ => ] Message From ...` terminal lines. Text messages and commands are
|
|
115
|
-
* truncated to 50 characters; callback button data is shown in full.
|
|
116
|
-
*/
|
|
117
|
-
export function describeIncomingUpdate(update) {
|
|
118
|
-
const callback = update.callback_query;
|
|
119
|
-
if (callback) {
|
|
120
|
-
const result = { kind: "Callback", fromId: callback.from.id, nickname: nicknameFromUser(callback.from), contentLabel: "Data", content: callback.data };
|
|
121
|
-
return result;
|
|
122
|
-
}
|
|
123
|
-
const message = (update.message ?? update.edited_message ?? update.channel_post ?? update.edited_channel_post ?? update.business_message ?? update.edited_business_message ?? update.guest_message ?? update.edited_guest_message);
|
|
124
|
-
if (message) {
|
|
125
|
-
const from = message.from;
|
|
126
|
-
const nickname = nicknameFromUser(from) ?? (message.chat.title !== undefined ? String(message.chat.title) : message.chat.id !== undefined ? String(message.chat.id) : undefined);
|
|
127
|
-
const input = { kind: "Message", fromId: from?.id ?? message.chat.id, nickname };
|
|
128
|
-
const text = message.text;
|
|
129
|
-
if (text !== undefined) {
|
|
130
|
-
const truncated = truncateForDisplay(text);
|
|
131
|
-
input.contentLabel = "Text";
|
|
132
|
-
input.content = truncated.text;
|
|
133
|
-
input.truncated = truncated.truncated;
|
|
134
|
-
}
|
|
135
|
-
else if (message.caption !== undefined) {
|
|
136
|
-
const truncated = truncateForDisplay(message.caption);
|
|
137
|
-
input.contentLabel = "Caption";
|
|
138
|
-
input.content = truncated.text;
|
|
139
|
-
input.truncated = truncated.truncated;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
const media = messageMediaType(message);
|
|
143
|
-
if (media !== undefined)
|
|
144
|
-
input.contentLabel = media === "photo" ? "Photo" : media.replace(/_/g, " ").replace(/^./, (character) => character.toUpperCase());
|
|
145
|
-
}
|
|
146
|
-
return input;
|
|
147
|
-
}
|
|
148
|
-
const inline = update.inline_query;
|
|
149
|
-
if (inline) {
|
|
150
|
-
const truncated = truncateForDisplay(inline.query);
|
|
151
|
-
return { kind: "Inline Query", fromId: inline.from.id, nickname: nicknameFromUser(inline.from), contentLabel: "Query", content: truncated.text, truncated: truncated.truncated };
|
|
152
|
-
}
|
|
153
|
-
const chosen = update.chosen_inline_result;
|
|
154
|
-
if (chosen)
|
|
155
|
-
return { kind: "Inline Result", fromId: chosen.from.id, nickname: nicknameFromUser(chosen.from), contentLabel: "Result", content: chosen.result_id };
|
|
156
|
-
const chatScoped = update.chat_member ?? update.my_chat_member ?? update.chat_join_request;
|
|
157
|
-
if (chatScoped) {
|
|
158
|
-
return { kind: "Update", fromId: chatScoped.from.id, nickname: nicknameFromUser(chatScoped.from), contentLabel: "Chat", content: chatScoped.chat.title ?? String(chatScoped.chat.id) };
|
|
159
|
-
}
|
|
160
|
-
const reaction = update.message_reaction;
|
|
161
|
-
const reactor = nicknameFromUser(reaction?.from);
|
|
162
|
-
if (reactor)
|
|
163
|
-
return { kind: "Reaction", fromId: reaction?.from?.id, nickname: reactor };
|
|
164
|
-
return { kind: "Update", context: { type: updateType(update) } };
|
|
165
|
-
}
|
|
166
|
-
export function summarizeUpdate(update, includeContent = false) {
|
|
167
|
-
const callback = update.callback_query;
|
|
168
|
-
const message = (update.message ?? update.edited_message ?? update.channel_post ?? update.edited_channel_post ?? update.business_message ?? update.edited_business_message ?? update.guest_message ?? update.edited_guest_message ?? callback?.message);
|
|
169
|
-
const summary = { updateId: update.update_id, type: updateType(update) };
|
|
170
|
-
if (message?.chat?.id !== undefined)
|
|
171
|
-
summary.chatId = message.chat.id;
|
|
172
|
-
if (message?.from?.id !== undefined)
|
|
173
|
-
summary.fromUserId = message.from.id;
|
|
174
|
-
if (message?.message_id !== undefined)
|
|
175
|
-
summary.messageId = message.message_id;
|
|
176
|
-
if (includeContent) {
|
|
177
|
-
const text = message?.text ?? message?.caption;
|
|
178
|
-
if (text !== undefined)
|
|
179
|
-
summary.text = text;
|
|
180
|
-
if (callback?.data !== undefined)
|
|
181
|
-
summary.callbackData = callback.data;
|
|
182
|
-
}
|
|
183
|
-
return summary;
|
|
184
|
-
}
|
|
185
|
-
function levelColor(level) {
|
|
186
|
-
if (level === "error")
|
|
187
|
-
return ANSI.red;
|
|
188
|
-
if (level === "warn")
|
|
189
|
-
return ANSI.yellow;
|
|
190
|
-
if (level === "debug")
|
|
191
|
-
return ANSI.blue;
|
|
192
|
-
if (level === "trace")
|
|
193
|
-
return ANSI.magenta;
|
|
194
|
-
return ANSI.green;
|
|
195
|
-
}
|
|
196
|
-
function formatEntry(entry, color, format) {
|
|
197
|
-
if (format === "json") {
|
|
198
|
-
const line = JSON.stringify(entry);
|
|
199
|
-
return color ? `${ANSI.dim}${line}${ANSI.reset}` : line;
|
|
200
|
-
}
|
|
201
|
-
const time = entry.timestamp.slice(11, 23);
|
|
202
|
-
const label = entry.level.toUpperCase().padEnd(5, " ");
|
|
203
|
-
const context = entry.context && Object.keys(entry.context).length ? ` ${JSON.stringify(entry.context)}` : "";
|
|
204
|
-
const line = `${time} ${label} ${entry.event}${context}`;
|
|
205
|
-
return color ? `${levelColor(entry.level)}${line}${ANSI.reset}` : line;
|
|
206
|
-
}
|
|
207
|
-
function createDefaultSink(options, redactKeys) {
|
|
208
|
-
const stream = options.stream ?? process.stdout;
|
|
209
|
-
const color = options.color ?? Boolean(stream.isTTY && !process.env.NO_COLOR);
|
|
210
|
-
const format = options.format ?? "pretty";
|
|
211
|
-
return (entry) => {
|
|
212
|
-
if (typeof entry.text === "string") {
|
|
213
|
-
stream.write(`${redactString(entry.text)}\n`);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
const safeEntry = redact(entry, redactKeys);
|
|
217
|
-
const line = formatEntry(safeEntry, color, format);
|
|
218
|
-
stream.write(`${line}\n`);
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
export class Logger {
|
|
222
|
-
level;
|
|
223
|
-
format;
|
|
224
|
-
color;
|
|
225
|
-
includeUpdateContent;
|
|
226
|
-
sink;
|
|
227
|
-
redactKeys;
|
|
228
|
-
baseContext;
|
|
229
|
-
constructor(options = {}) {
|
|
230
|
-
this.level = options.level ?? "info";
|
|
231
|
-
this.format = options.format ?? "pretty";
|
|
232
|
-
const stream = options.stream ?? process.stdout;
|
|
233
|
-
this.color = options.color ?? Boolean(stream.isTTY && !process.env.NO_COLOR);
|
|
234
|
-
this.includeUpdateContent = options.includeUpdateContent ?? false;
|
|
235
|
-
this.redactKeys = options.redactKeys ?? defaultRedactKeys;
|
|
236
|
-
this.sink = options.sink ?? createDefaultSink({ color: this.color, format: this.format, stream }, this.redactKeys);
|
|
237
|
-
this.baseContext = options.context ?? {};
|
|
238
|
-
}
|
|
239
|
-
child(context) { return new Logger({ level: this.level, format: this.format, color: this.color, sink: this.sink, includeUpdateContent: this.includeUpdateContent, redactKeys: this.redactKeys, context: { ...this.baseContext, ...context } }); }
|
|
240
|
-
trace(event, context) { this.write("trace", event, context); }
|
|
241
|
-
debug(event, context) { this.write("debug", event, context); }
|
|
242
|
-
info(event, context) { this.write("info", event, context); }
|
|
243
|
-
warn(event, context) { this.write("warn", event, context); }
|
|
244
|
-
error(event, context) { this.write("error", event, context); }
|
|
245
|
-
/**
|
|
246
|
-
* Logs an incoming update as the human-readable terminal line:
|
|
247
|
-
* `[ => ] Message From {id} {nickname} {dd/mm/yyyy} {hh:mm:ss}` followed by
|
|
248
|
-
* an indented content line. In `json` format it emits a structured entry
|
|
249
|
-
* with the event name `update.received`.
|
|
250
|
-
*/
|
|
251
|
-
incoming(input) {
|
|
252
|
-
if (priorities.info > priorities[this.level])
|
|
253
|
-
return;
|
|
254
|
-
if (this.format === "json") {
|
|
255
|
-
const context = { kind: input.kind, ...(input.fromId !== undefined ? { fromId: input.fromId } : {}), ...(input.nickname !== undefined ? { nickname: input.nickname } : {}), ...(input.content !== undefined ? { content: input.content } : {}), ...(input.truncated ? { truncated: true } : {}), ...input.context };
|
|
256
|
-
this.write("info", "update.received", context);
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
const stamp = formatLocalStamp();
|
|
260
|
-
const identity = [input.fromId !== undefined ? String(input.fromId) : undefined, input.nickname].filter(Boolean).join(" ");
|
|
261
|
-
const arrow = this.color ? `\u001b[36m\u001b[1m[ => ]\u001b[0m` : "[ => ]";
|
|
262
|
-
const kind = this.color ? `\u001b[1m${input.kind}\u001b[0m` : input.kind;
|
|
263
|
-
const header = `${arrow} ${kind} From ${identity} ${this.color ? `\u001b[2m${stamp}\u001b[0m` : stamp}`;
|
|
264
|
-
const lines = [redactString(header)];
|
|
265
|
-
if (input.content !== undefined || input.contentLabel !== undefined) {
|
|
266
|
-
const label = input.contentLabel ?? "Content";
|
|
267
|
-
const value = input.content ?? "";
|
|
268
|
-
const contentLine = ` ↳ ${label}: ${value}`;
|
|
269
|
-
lines.push(this.color ? `\u001b[2m${redactString(contentLine)}\u001b[0m` : redactString(contentLine));
|
|
270
|
-
}
|
|
271
|
-
this.sink({ timestamp: new Date().toISOString(), level: "info", event: "update.received", text: lines.join("\n") });
|
|
272
|
-
}
|
|
273
|
-
write(level, event, context = {}) {
|
|
274
|
-
if (priorities[level] > priorities[this.level])
|
|
275
|
-
return;
|
|
276
|
-
const merged = { ...this.baseContext, ...context };
|
|
277
|
-
const safe = redact(merged, this.redactKeys);
|
|
278
|
-
const entry = { timestamp: new Date().toISOString(), level, event };
|
|
279
|
-
if (Object.keys(safe).length)
|
|
280
|
-
entry.context = safe;
|
|
281
|
-
this.sink(entry);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
export function createLogger(options) { return new Logger(options); }
|
|
285
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/observability/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export interface Plugin<Context = unknown> {
|
|
2
|
-
name: string;
|
|
3
|
-
version?: string;
|
|
4
|
-
install?: (api: PluginApi<Context>) => void | Promise<void>;
|
|
5
|
-
setup?: (api: PluginApi<Context>) => void | Promise<void>;
|
|
6
|
-
onStart?: (api: PluginApi<Context>) => void | Promise<void>;
|
|
7
|
-
onUpdate?: (context: Context) => void | Promise<void>;
|
|
8
|
-
onStop?: (api: PluginApi<Context>) => void | Promise<void>;
|
|
9
|
-
dispose?: (api: PluginApi<Context>) => void | Promise<void>;
|
|
10
|
-
}
|
|
11
|
-
export interface PluginApi<Context> {
|
|
12
|
-
bot: unknown;
|
|
13
|
-
services: ServiceContainer;
|
|
14
|
-
registerMiddleware: (middleware: unknown) => void;
|
|
15
|
-
registerRoute: (route: unknown) => void;
|
|
16
|
-
}
|
|
17
|
-
export declare class ServiceContainer {
|
|
18
|
-
private readonly values;
|
|
19
|
-
register<T>(name: string | symbol, value: T): this;
|
|
20
|
-
get<T>(name: string | symbol): T;
|
|
21
|
-
has(name: string | symbol): boolean;
|
|
22
|
-
delete(name: string | symbol): boolean;
|
|
23
|
-
}
|
|
24
|
-
export declare class PluginManager<Context> {
|
|
25
|
-
private readonly plugins;
|
|
26
|
-
private readonly api;
|
|
27
|
-
private setupComplete;
|
|
28
|
-
constructor(bot: unknown);
|
|
29
|
-
use(plugin: Plugin<Context>): this;
|
|
30
|
-
/** Installs plugins once; re-running setup after a restart must not double-register middleware. */
|
|
31
|
-
setup(): Promise<void>;
|
|
32
|
-
start(): Promise<void>;
|
|
33
|
-
update(context: Context): Promise<void>;
|
|
34
|
-
stop(): Promise<void>;
|
|
35
|
-
dispose(): Promise<void>;
|
|
36
|
-
list(): readonly Plugin<Context>[];
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,OAAO;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,SAAS,CAAC,OAAO;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,kBAAkB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAClD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC;IAChC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;CACvC;AAED,qBAAa,aAAa,CAAC,OAAO;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,aAAa,CAAS;gBAClB,GAAG,EAAE,OAAO;IAqBxB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI;IAClC,mGAAmG;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IACtB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IACrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,IAAI,IAAI,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE;CACnC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
export class ServiceContainer {
|
|
2
|
-
values = new Map();
|
|
3
|
-
register(name, value) { this.values.set(name, value); return this; }
|
|
4
|
-
get(name) { if (!this.values.has(name))
|
|
5
|
-
throw new Error(`Service not registered: ${String(name)}`); return this.values.get(name); }
|
|
6
|
-
has(name) { return this.values.has(name); }
|
|
7
|
-
delete(name) { return this.values.delete(name); }
|
|
8
|
-
}
|
|
9
|
-
export class PluginManager {
|
|
10
|
-
plugins = [];
|
|
11
|
-
api;
|
|
12
|
-
setupComplete = false;
|
|
13
|
-
constructor(bot) {
|
|
14
|
-
const host = bot;
|
|
15
|
-
this.api = {
|
|
16
|
-
bot,
|
|
17
|
-
services: new ServiceContainer(),
|
|
18
|
-
registerMiddleware: (middleware) => {
|
|
19
|
-
if (typeof middleware !== "function" || !host.use)
|
|
20
|
-
throw new TypeError("Plugin middleware must be a function and the bot must support use().");
|
|
21
|
-
host.use(middleware);
|
|
22
|
-
},
|
|
23
|
-
registerRoute: (route) => {
|
|
24
|
-
if (typeof route === "function") {
|
|
25
|
-
route(bot);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (!route || typeof route !== "object" || !host.router?.route)
|
|
29
|
-
throw new TypeError("Plugin route must be a registration function or route descriptor.");
|
|
30
|
-
const descriptor = route;
|
|
31
|
-
if (typeof descriptor.matcher !== "function" || !Array.isArray(descriptor.middleware) || descriptor.middleware.some((item) => typeof item !== "function"))
|
|
32
|
-
throw new TypeError("Plugin route descriptor is invalid.");
|
|
33
|
-
host.router.route(descriptor.matcher, ...descriptor.middleware);
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
use(plugin) { if (this.plugins.some((existing) => existing.name === plugin.name))
|
|
38
|
-
throw new Error(`Plugin already registered: ${plugin.name}`); this.plugins.push(plugin); return this; }
|
|
39
|
-
/** Installs plugins once; re-running setup after a restart must not double-register middleware. */
|
|
40
|
-
async setup() {
|
|
41
|
-
if (this.setupComplete)
|
|
42
|
-
return;
|
|
43
|
-
for (const plugin of this.plugins) {
|
|
44
|
-
await plugin.install?.(this.api);
|
|
45
|
-
await plugin.setup?.(this.api);
|
|
46
|
-
}
|
|
47
|
-
this.setupComplete = true;
|
|
48
|
-
}
|
|
49
|
-
async start() { for (const plugin of this.plugins)
|
|
50
|
-
await plugin.onStart?.(this.api); }
|
|
51
|
-
async update(context) { for (const plugin of this.plugins)
|
|
52
|
-
await plugin.onUpdate?.(context); }
|
|
53
|
-
async stop() { for (const plugin of this.plugins)
|
|
54
|
-
await plugin.onStop?.(this.api); }
|
|
55
|
-
async dispose() { for (const plugin of [...this.plugins].reverse())
|
|
56
|
-
await plugin.dispose?.(this.api); }
|
|
57
|
-
list() { return this.plugins; }
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
export interface Job<T = unknown> {
|
|
2
|
-
id: string;
|
|
3
|
-
data: T;
|
|
4
|
-
attempts: number;
|
|
5
|
-
priority: number;
|
|
6
|
-
runAt: number;
|
|
7
|
-
status: "queued" | "running" | "completed" | "failed" | "cancelled";
|
|
8
|
-
error?: unknown;
|
|
9
|
-
}
|
|
10
|
-
export interface QueueOptions {
|
|
11
|
-
concurrency?: number;
|
|
12
|
-
retries?: number;
|
|
13
|
-
backoffMs?: number;
|
|
14
|
-
maxBackoffMs?: number;
|
|
15
|
-
onError?: (error: unknown, job: Job) => void | Promise<void>;
|
|
16
|
-
}
|
|
17
|
-
type Worker<T> = (job: Job<T>, signal: AbortSignal) => Promise<void>;
|
|
18
|
-
export declare class TaskQueue<T = unknown> {
|
|
19
|
-
private readonly worker;
|
|
20
|
-
private readonly options;
|
|
21
|
-
private readonly pending;
|
|
22
|
-
private readonly jobs;
|
|
23
|
-
private readonly controllers;
|
|
24
|
-
private active;
|
|
25
|
-
private sequence;
|
|
26
|
-
private draining;
|
|
27
|
-
private closed;
|
|
28
|
-
constructor(worker: Worker<T>, options?: QueueOptions);
|
|
29
|
-
add(data: T, options?: {
|
|
30
|
-
id?: string;
|
|
31
|
-
priority?: number;
|
|
32
|
-
delayMs?: number;
|
|
33
|
-
}): Job<T>;
|
|
34
|
-
get(id: string): Job<T> | undefined;
|
|
35
|
-
cancel(id: string): boolean;
|
|
36
|
-
onIdle(): Promise<void>;
|
|
37
|
-
close(): Promise<void>;
|
|
38
|
-
private drain;
|
|
39
|
-
private run;
|
|
40
|
-
}
|
|
41
|
-
export interface ScheduledJob {
|
|
42
|
-
id: string;
|
|
43
|
-
cancel: () => void;
|
|
44
|
-
nextRunAt?: Date | undefined;
|
|
45
|
-
}
|
|
46
|
-
export interface SchedulerOptions {
|
|
47
|
-
onError?: (error: unknown, id: string) => void | Promise<void>;
|
|
48
|
-
}
|
|
49
|
-
interface CronField {
|
|
50
|
-
min: number;
|
|
51
|
-
max: number;
|
|
52
|
-
values: Set<number>;
|
|
53
|
-
}
|
|
54
|
-
export interface CronExpression {
|
|
55
|
-
minute: CronField;
|
|
56
|
-
hour: CronField;
|
|
57
|
-
dayOfMonth: CronField;
|
|
58
|
-
month: CronField;
|
|
59
|
-
dayOfWeek: CronField;
|
|
60
|
-
}
|
|
61
|
-
export declare function parseCronExpression(expression: string): CronExpression;
|
|
62
|
-
export declare function nextCronOccurrence(expression: string | CronExpression, from?: Date): Date;
|
|
63
|
-
export declare class Scheduler {
|
|
64
|
-
private readonly options;
|
|
65
|
-
private readonly timers;
|
|
66
|
-
private readonly nextRuns;
|
|
67
|
-
constructor(options?: SchedulerOptions);
|
|
68
|
-
every(id: string, intervalMs: number, task: () => void | Promise<void>): ScheduledJob;
|
|
69
|
-
after(id: string, delayMs: number, task: () => void | Promise<void>): ScheduledJob;
|
|
70
|
-
cron(id: string, expression: string, task: () => void | Promise<void>): ScheduledJob;
|
|
71
|
-
getNextRun(id: string): Date | undefined;
|
|
72
|
-
cancel(id: string): boolean;
|
|
73
|
-
clear(): void;
|
|
74
|
-
private run;
|
|
75
|
-
}
|
|
76
|
-
export {};
|
|
77
|
-
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}
|