@xbibzlibrary/telebibz 0.1.19 → 0.2.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.
Files changed (80) hide show
  1. package/CHANGELOG.md +28 -8
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.id.md +25 -5
  4. package/README.md +26 -6
  5. package/README.zh-CN.md +25 -5
  6. package/RELEASE_AUTOMATION.md +17 -5
  7. package/bin/telebibz.mjs +1 -1
  8. package/dist/src/api/client.d.ts +3 -1
  9. package/dist/src/api/client.d.ts.map +1 -1
  10. package/dist/src/api/client.js +3 -1
  11. package/dist/src/api/client.js.map +1 -1
  12. package/dist/src/api/transport.d.ts +3 -1
  13. package/dist/src/api/transport.d.ts.map +1 -1
  14. package/dist/src/api/transport.js +3 -2
  15. package/dist/src/api/transport.js.map +1 -1
  16. package/dist/src/branding/terminal.d.ts +62 -0
  17. package/dist/src/branding/terminal.d.ts.map +1 -1
  18. package/dist/src/branding/terminal.js +258 -0
  19. package/dist/src/branding/terminal.js.map +1 -1
  20. package/dist/src/cli.d.ts.map +1 -1
  21. package/dist/src/cli.js +7 -3
  22. package/dist/src/cli.js.map +1 -1
  23. package/dist/src/context/context.d.ts +24 -1
  24. package/dist/src/context/context.d.ts.map +1 -1
  25. package/dist/src/context/context.js +102 -8
  26. package/dist/src/context/context.js.map +1 -1
  27. package/dist/src/core/bot.d.ts +18 -1
  28. package/dist/src/core/bot.d.ts.map +1 -1
  29. package/dist/src/core/bot.js +106 -23
  30. package/dist/src/core/bot.js.map +1 -1
  31. package/dist/src/keyboard/index.d.ts +12 -0
  32. package/dist/src/keyboard/index.d.ts.map +1 -1
  33. package/dist/src/keyboard/index.js +13 -1
  34. package/dist/src/keyboard/index.js.map +1 -1
  35. package/dist/src/observability/logger.d.ts +28 -1
  36. package/dist/src/observability/logger.d.ts.map +1 -1
  37. package/dist/src/observability/logger.js +110 -0
  38. package/dist/src/observability/logger.js.map +1 -1
  39. package/dist/src/plugins/plugin.d.ts +2 -0
  40. package/dist/src/plugins/plugin.d.ts.map +1 -1
  41. package/dist/src/plugins/plugin.js +11 -4
  42. package/dist/src/plugins/plugin.js.map +1 -1
  43. package/dist/src/router/router.d.ts +19 -0
  44. package/dist/src/router/router.d.ts.map +1 -1
  45. package/dist/src/router/router.js +125 -23
  46. package/dist/src/router/router.js.map +1 -1
  47. package/dist/src/state/forms.d.ts +0 -1
  48. package/dist/src/state/forms.d.ts.map +1 -1
  49. package/dist/src/state/forms.js +27 -24
  50. package/dist/src/state/forms.js.map +1 -1
  51. package/dist/src/storage/storage.d.ts +10 -0
  52. package/dist/src/storage/storage.d.ts.map +1 -1
  53. package/dist/src/storage/storage.js +20 -2
  54. package/dist/src/storage/storage.js.map +1 -1
  55. package/dist/src/utils/text.d.ts +22 -0
  56. package/dist/src/utils/text.d.ts.map +1 -1
  57. package/dist/src/utils/text.js +0 -0
  58. package/dist/src/utils/text.js.map +1 -1
  59. package/dist/src/webhook/handler.d.ts +3 -0
  60. package/dist/src/webhook/handler.d.ts.map +1 -1
  61. package/dist/src/webhook/handler.js +85 -0
  62. package/dist/src/webhook/handler.js.map +1 -1
  63. package/dist-cjs/src/api/client.js +3 -1
  64. package/dist-cjs/src/api/transport.js +3 -2
  65. package/dist-cjs/src/branding/terminal.js +264 -1
  66. package/dist-cjs/src/cli.js +7 -3
  67. package/dist-cjs/src/context/context.js +102 -8
  68. package/dist-cjs/src/core/bot.js +104 -21
  69. package/dist-cjs/src/keyboard/index.js +13 -1
  70. package/dist-cjs/src/observability/logger.js +113 -1
  71. package/dist-cjs/src/plugins/plugin.js +11 -4
  72. package/dist-cjs/src/router/router.js +126 -24
  73. package/dist-cjs/src/state/forms.js +27 -24
  74. package/dist-cjs/src/storage/storage.js +20 -2
  75. package/dist-cjs/src/utils/text.js +0 -0
  76. package/dist-cjs/src/webhook/handler.js +86 -0
  77. package/docs/API.id.md +57 -3
  78. package/docs/API.md +59 -3
  79. package/docs/API.zh-CN.md +56 -2
  80. package/package.json +3 -3
@@ -82,6 +82,84 @@ function updateType(update) {
82
82
  return "poll_answer";
83
83
  return "unknown";
84
84
  }
85
+ export const INCOMING_TEXT_LIMIT = 50;
86
+ function padNumber(value) { return String(value).padStart(2, "0"); }
87
+ /** Formats a date as `dd/mm/yyyy hh:mm:ss` in local time. */
88
+ export function formatLocalStamp(date = new Date()) {
89
+ return `${padNumber(date.getDate())}/${padNumber(date.getMonth() + 1)}/${date.getFullYear()} ${padNumber(date.getHours())}:${padNumber(date.getMinutes())}:${padNumber(date.getSeconds())}`;
90
+ }
91
+ function truncateForDisplay(value, limit = INCOMING_TEXT_LIMIT) {
92
+ if (value.length <= limit)
93
+ return { text: value, truncated: false };
94
+ return { text: `${value.slice(0, limit)}…`, truncated: true };
95
+ }
96
+ function nicknameFromUser(user) {
97
+ if (!user)
98
+ return undefined;
99
+ const name = [user.first_name, user.last_name].filter(Boolean).join(" ").trim();
100
+ return name.length > 0 ? name : user.username ?? String(user.id);
101
+ }
102
+ function messageMediaType(message) {
103
+ for (const key of ["photo", "video", "video_note", "animation", "document", "audio", "voice", "sticker", "location", "venue", "contact", "dice", "poll", "story", "paid_media"]) {
104
+ if (message[key] !== undefined)
105
+ return key;
106
+ }
107
+ return undefined;
108
+ }
109
+ /**
110
+ * Builds the human-readable description of an incoming update used for the
111
+ * `[ => ] Message From ...` terminal lines. Text messages and commands are
112
+ * truncated to 50 characters; callback button data is shown in full.
113
+ */
114
+ export function describeIncomingUpdate(update) {
115
+ const callback = update.callback_query;
116
+ if (callback) {
117
+ const result = { kind: "Callback", fromId: callback.from.id, nickname: nicknameFromUser(callback.from), contentLabel: "Data", content: callback.data };
118
+ return result;
119
+ }
120
+ 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);
121
+ if (message) {
122
+ const from = message.from;
123
+ const nickname = nicknameFromUser(from) ?? (message.chat.title !== undefined ? String(message.chat.title) : message.chat.id !== undefined ? String(message.chat.id) : undefined);
124
+ const input = { kind: "Message", fromId: from?.id ?? message.chat.id, nickname };
125
+ const text = message.text;
126
+ if (text !== undefined) {
127
+ const truncated = truncateForDisplay(text);
128
+ input.contentLabel = "Text";
129
+ input.content = truncated.text;
130
+ input.truncated = truncated.truncated;
131
+ }
132
+ else if (message.caption !== undefined) {
133
+ const truncated = truncateForDisplay(message.caption);
134
+ input.contentLabel = "Caption";
135
+ input.content = truncated.text;
136
+ input.truncated = truncated.truncated;
137
+ }
138
+ else {
139
+ const media = messageMediaType(message);
140
+ if (media !== undefined)
141
+ input.contentLabel = media === "photo" ? "Photo" : media.replace(/_/g, " ").replace(/^./, (character) => character.toUpperCase());
142
+ }
143
+ return input;
144
+ }
145
+ const inline = update.inline_query;
146
+ if (inline) {
147
+ const truncated = truncateForDisplay(inline.query);
148
+ return { kind: "Inline Query", fromId: inline.from.id, nickname: nicknameFromUser(inline.from), contentLabel: "Query", content: truncated.text, truncated: truncated.truncated };
149
+ }
150
+ const chosen = update.chosen_inline_result;
151
+ if (chosen)
152
+ return { kind: "Inline Result", fromId: chosen.from.id, nickname: nicknameFromUser(chosen.from), contentLabel: "Result", content: chosen.result_id };
153
+ const chatScoped = update.chat_member ?? update.my_chat_member ?? update.chat_join_request;
154
+ if (chatScoped) {
155
+ return { kind: "Update", fromId: chatScoped.from.id, nickname: nicknameFromUser(chatScoped.from), contentLabel: "Chat", content: chatScoped.chat.title ?? String(chatScoped.chat.id) };
156
+ }
157
+ const reaction = update.message_reaction;
158
+ const reactor = nicknameFromUser(reaction?.from);
159
+ if (reactor)
160
+ return { kind: "Reaction", fromId: reaction?.from?.id, nickname: reactor };
161
+ return { kind: "Update", context: { type: updateType(update) } };
162
+ }
85
163
  export function summarizeUpdate(update, includeContent = false) {
86
164
  const callback = update.callback_query;
87
165
  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);
@@ -128,6 +206,10 @@ function createDefaultSink(options, redactKeys) {
128
206
  const color = options.color ?? Boolean(stream.isTTY && !process.env.NO_COLOR);
129
207
  const format = options.format ?? "pretty";
130
208
  return (entry) => {
209
+ if (typeof entry.text === "string") {
210
+ stream.write(`${redactString(entry.text)}\n`);
211
+ return;
212
+ }
131
213
  const safeEntry = redact(entry, redactKeys);
132
214
  const line = formatEntry(safeEntry, color, format);
133
215
  stream.write(`${line}\n`);
@@ -157,6 +239,34 @@ export class Logger {
157
239
  info(event, context) { this.write("info", event, context); }
158
240
  warn(event, context) { this.write("warn", event, context); }
159
241
  error(event, context) { this.write("error", event, context); }
242
+ /**
243
+ * Logs an incoming update as the human-readable terminal line:
244
+ * `[ => ] Message From {id} {nickname} {dd/mm/yyyy} {hh:mm:ss}` followed by
245
+ * an indented content line. In `json` format it emits a structured entry
246
+ * with the event name `update.received`.
247
+ */
248
+ incoming(input) {
249
+ if (priorities.info > priorities[this.level])
250
+ return;
251
+ if (this.format === "json") {
252
+ 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 };
253
+ this.write("info", "update.received", context);
254
+ return;
255
+ }
256
+ const stamp = formatLocalStamp();
257
+ const identity = [input.fromId !== undefined ? String(input.fromId) : undefined, input.nickname].filter(Boolean).join(" ");
258
+ const arrow = this.color ? `\u001b[36m\u001b[1m[ => ]\u001b[0m` : "[ => ]";
259
+ const kind = this.color ? `\u001b[1m${input.kind}\u001b[0m` : input.kind;
260
+ const header = `${arrow} ${kind} From ${identity} ${this.color ? `\u001b[2m${stamp}\u001b[0m` : stamp}`;
261
+ const lines = [redactString(header)];
262
+ if (input.content !== undefined || input.contentLabel !== undefined) {
263
+ const label = input.contentLabel ?? "Content";
264
+ const value = input.content ?? "";
265
+ const contentLine = ` ↳ ${label}: ${value}`;
266
+ lines.push(this.color ? `\u001b[2m${redactString(contentLine)}\u001b[0m` : redactString(contentLine));
267
+ }
268
+ this.sink({ timestamp: new Date().toISOString(), level: "info", event: "update.received", text: lines.join("\n") });
269
+ }
160
270
  write(level, event, context = {}) {
161
271
  if (priorities[level] > priorities[this.level])
162
272
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/observability/logger.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,GAA6B,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5G,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACzI,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,WAAW;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,YAAY;CACb,CAAC;AAaX,SAAS,QAAQ,CAAC,KAAc,IAAsC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;AAC3H,SAAS,YAAY,CAAC,GAAW,EAAE,IAAuB,IAAa,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvO,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK;SACT,OAAO,CAAC,kCAAkC,EAAE,2BAA2B,CAAC;SACxE,OAAO,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAuB,EAAE,OAAO,IAAI,OAAO,EAAU;IACtF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IAClD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3H,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxI,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,OAA0B,iBAAiB,IAAa,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/H,SAAS,UAAU,CAAC,MAAc;IAChC,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,cAAc,CAAC;IAC/C,IAAI,MAAM,CAAC,gBAAgB;QAAE,OAAO,kBAAkB,CAAC;IACvD,IAAI,MAAM,CAAC,uBAAuB;QAAE,OAAO,yBAAyB,CAAC;IACrE,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,MAAM,CAAC,oBAAoB;QAAE,OAAO,sBAAsB,CAAC;IAC/D,IAAI,MAAM,CAAC,gBAAgB;QAAE,OAAO,kBAAkB,CAAC;IACvD,IAAI,MAAM,CAAC,sBAAsB;QAAE,OAAO,wBAAwB,CAAC;IACnE,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,YAAY,CAAC;IAC3C,IAAI,MAAM,CAAC,kBAAkB;QAAE,OAAO,oBAAoB,CAAC;IAC3D,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,cAAc,CAAC;IAC/C,IAAI,MAAM,CAAC,mBAAmB;QAAE,OAAO,qBAAqB,CAAC;IAC7D,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,aAAa,CAAC;IAC7C,IAAI,MAAM,CAAC,iBAAiB;QAAE,OAAO,mBAAmB,CAAC;IACzD,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAC/B,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,aAAa,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAID,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,cAAc,GAAG,KAAK;IACpE,MAAM,QAAQ,GAA8B,MAAM,CAAC,cAAc,CAAC;IAClE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,oBAAoB,IAAI,QAAQ,EAAE,OAAO,CAAwB,CAAC;IAC/Q,MAAM,OAAO,GAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACxF,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1E,IAAI,OAAO,EAAE,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAC9E,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,OAAO,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5C,IAAI,QAAQ,EAAE,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,KAAwB;IAC1C,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IACvC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACzC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IACxC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,KAAe,EAAE,KAAc,EAAE,MAAiB;IACrE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9G,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,CAAC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2D,EAAE,UAA6B;IACnH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC1C,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,CAAa,CAAC;QACxD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,MAAM;IACR,KAAK,CAAW;IAChB,MAAM,CAAY;IAClB,KAAK,CAAU;IACf,oBAAoB,CAAU;IACtB,IAAI,CAAa;IACjB,UAAU,CAAoB;IAC9B,WAAW,CAAa;IAEzC,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,KAAK,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACnH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAmB,IAAY,OAAO,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrQ,KAAK,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACzF,KAAK,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,KAAK,CAAC,KAAa,EAAE,OAAoB,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEjF,KAAK,CAAC,KAAkC,EAAE,KAAa,EAAE,UAAsB,EAAE;QACvF,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QACvD,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAe,CAAC;QAC3D,MAAM,KAAK,GAAa,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9E,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,OAAuB,IAAY,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/observability/logger.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,10 @@ export declare class ServiceContainer {
24
24
  export declare class PluginManager<Context> {
25
25
  private readonly plugins;
26
26
  private readonly api;
27
+ private setupComplete;
27
28
  constructor(bot: unknown);
28
29
  use(plugin: Plugin<Context>): this;
30
+ /** Installs plugins once; re-running setup after a restart must not double-register middleware. */
29
31
  setup(): Promise<void>;
30
32
  start(): Promise<void>;
31
33
  update(context: Context): Promise<void>;
@@ -1 +1 @@
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;gBAC7B,GAAG,EAAE,OAAO;IAqBxB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IACtB,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
+ {"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"}
@@ -9,6 +9,7 @@ export class ServiceContainer {
9
9
  export class PluginManager {
10
10
  plugins = [];
11
11
  api;
12
+ setupComplete = false;
12
13
  constructor(bot) {
13
14
  const host = bot;
14
15
  this.api = {
@@ -35,10 +36,16 @@ export class PluginManager {
35
36
  }
36
37
  use(plugin) { if (this.plugins.some((existing) => existing.name === plugin.name))
37
38
  throw new Error(`Plugin already registered: ${plugin.name}`); this.plugins.push(plugin); return this; }
38
- async setup() { for (const plugin of this.plugins) {
39
- await plugin.install?.(this.api);
40
- await plugin.setup?.(this.api);
41
- } }
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
+ }
42
49
  async start() { for (const plugin of this.plugins)
43
50
  await plugin.onStart?.(this.api); }
44
51
  async update(context) { for (const plugin of this.plugins)
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface RoutableContext {
5
5
  };
6
6
  message: {
7
7
  text?: string;
8
+ caption?: string;
8
9
  chat?: {
9
10
  id: number | string;
10
11
  };
@@ -14,6 +15,12 @@ export interface RoutableContext {
14
15
  data?: string;
15
16
  } | undefined;
16
17
  params: Record<string, string>;
18
+ match?: RegExpMatchArray | undefined;
19
+ args?: string[] | undefined;
20
+ me?: {
21
+ username?: string;
22
+ id?: number;
23
+ } | undefined;
17
24
  }
18
25
  type Matcher<Context> = (ctx: Context) => boolean | Promise<boolean>;
19
26
  type Handler<Context> = Middleware<Context>;
@@ -22,7 +29,13 @@ export interface RouterOptions {
22
29
  /** `first` prevents accidental double replies; `all` runs every matching route explicitly. */
23
30
  matchMode?: RouterMatchMode;
24
31
  }
32
+ /** Update types accepted by `on()` filters, mirroring the Telegram `Update` object. */
33
+ export declare const UPDATE_FILTER_TYPES: readonly ["message", "edited_message", "channel_post", "edited_channel_post", "business_connection", "business_message", "edited_business_message", "deleted_business_messages", "guest_message", "message_reaction", "message_reaction_count", "inline_query", "chosen_inline_result", "callback_query", "shipping_query", "pre_checkout_query", "purchased_paid_media", "poll", "poll_answer", "my_chat_member", "chat_member", "chat_join_request", "chat_boost", "removed_chat_boost"];
34
+ export type UpdateFilterType = typeof UPDATE_FILTER_TYPES[number];
35
+ /** Filter grammar: an update type such as `message`, optionally narrowed by a payload field: `message:text`. */
36
+ export type UpdateFilter = `${UpdateFilterType}` | `${UpdateFilterType}:${string}`;
25
37
  export declare class Router<Context extends RoutableContext> {
38
+ private readonly middlewares;
26
39
  private readonly routes;
27
40
  private sequence;
28
41
  readonly matchMode: RouterMatchMode;
@@ -34,6 +47,12 @@ export declare class Router<Context extends RoutableContext> {
34
47
  regex(expression: RegExp, ...middleware: Handler<Context>[]): this;
35
48
  callback(pattern: string | RegExp, ...middleware: Handler<Context>[]): this;
36
49
  chat(chatId: number | string, ...middleware: Handler<Context>[]): this;
50
+ /**
51
+ * Registers handlers for update types, with optional payload narrowing:
52
+ * `on("message")`, `on("message:photo")`, `on("callback_query:data")`,
53
+ * or an array such as `["message:text", "callback_query:data"]`.
54
+ */
55
+ on(filter: UpdateFilter | UpdateFilter[], ...middleware: Handler<Context>[]): this;
37
56
  predicate(matcher: Matcher<Context>, ...middleware: Handler<Context>[]): this;
38
57
  nest(child: Router<Context>): this;
39
58
  handle(ctx: Context, terminal?: () => Promise<void>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/router/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IAC/F,aAAa,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACrE,KAAK,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAcD,qBAAa,MAAM,CAAC,OAAO,SAAS,eAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAK;IACrB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;gBAExB,OAAO,GAAE,aAAkB;IAIvC,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAM5C,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAMzE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAWvE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAI5D,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAIlE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAW3E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAOtE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAI7E,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI;IAM5B,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAW1E"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/router/router.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,52 @@ function testRegExp(expression, value) {
3
3
  expression.lastIndex = 0;
4
4
  return expression.test(value);
5
5
  }
6
+ /** Update types accepted by `on()` filters, mirroring the Telegram `Update` object. */
7
+ export const UPDATE_FILTER_TYPES = [
8
+ "message",
9
+ "edited_message",
10
+ "channel_post",
11
+ "edited_channel_post",
12
+ "business_connection",
13
+ "business_message",
14
+ "edited_business_message",
15
+ "deleted_business_messages",
16
+ "guest_message",
17
+ "message_reaction",
18
+ "message_reaction_count",
19
+ "inline_query",
20
+ "chosen_inline_result",
21
+ "callback_query",
22
+ "shipping_query",
23
+ "pre_checkout_query",
24
+ "purchased_paid_media",
25
+ "poll",
26
+ "poll_answer",
27
+ "my_chat_member",
28
+ "chat_member",
29
+ "chat_join_request",
30
+ "chat_boost",
31
+ "removed_chat_boost",
32
+ ];
33
+ const updateFilterTypes = new Set(UPDATE_FILTER_TYPES);
34
+ function assertValidFilter(filter) {
35
+ const type = filter.split(":", 1)[0] ?? "";
36
+ if (!updateFilterTypes.has(type))
37
+ throw new TypeError(`Unknown update type in filter "${filter}". Expected one of: ${UPDATE_FILTER_TYPES.join(", ")}.`);
38
+ }
39
+ function matchesFilter(ctx, filter) {
40
+ const separator = filter.indexOf(":");
41
+ const type = separator < 0 ? filter : filter.slice(0, separator);
42
+ const field = separator < 0 ? undefined : filter.slice(separator + 1);
43
+ const payload = ctx.update[type];
44
+ if (payload === undefined || payload === null)
45
+ return false;
46
+ if (field === undefined || field === "")
47
+ return true;
48
+ return typeof payload === "object" && payload[field] !== undefined;
49
+ }
6
50
  export class Router {
51
+ middlewares = [];
7
52
  routes = [];
8
53
  sequence = 0;
9
54
  matchMode;
@@ -13,7 +58,7 @@ export class Router {
13
58
  use(...middleware) {
14
59
  if (middleware.length === 0)
15
60
  return this;
16
- this.routes.push({ priority: -1_000_000 + this.sequence++, matcher: () => true, middleware });
61
+ this.middlewares.push(...middleware);
17
62
  return this;
18
63
  }
19
64
  route(matcher, ...middleware) {
@@ -24,29 +69,61 @@ export class Router {
24
69
  }
25
70
  command(name, ...middleware) {
26
71
  return this.route(async (ctx) => {
27
- const text = ctx.message?.text;
72
+ const text = ctx.message?.text ?? ctx.message?.caption;
28
73
  if (!text?.startsWith("/"))
29
74
  return false;
30
- const command = text.slice(1).split(/[\s@]/, 1)[0] ?? "";
31
- return typeof name === "string"
75
+ const parts = text.slice(1).split(/\s+/);
76
+ const commandWithBot = parts[0] ?? "";
77
+ const [command, botUsername] = commandWithBot.split("@");
78
+ if (botUsername && ctx.me?.username && botUsername.toLowerCase() !== ctx.me.username.toLowerCase()) {
79
+ return false;
80
+ }
81
+ const matched = typeof name === "string"
32
82
  ? command === name.replace(/^\//, "")
33
- : testRegExp(name, command);
83
+ : testRegExp(name, command ?? "");
84
+ if (matched) {
85
+ ctx.args = parts.slice(1);
86
+ }
87
+ return matched;
34
88
  }, ...middleware);
35
89
  }
36
90
  text(value, ...middleware) {
37
- return this.route((ctx) => ctx.message?.text === value, ...middleware);
91
+ return this.route((ctx) => {
92
+ const text = ctx.message?.text ?? ctx.message?.caption;
93
+ return text === value;
94
+ }, ...middleware);
38
95
  }
39
96
  regex(expression, ...middleware) {
40
- return this.route((ctx) => testRegExp(expression, ctx.message?.text ?? ""), ...middleware);
97
+ return this.route((ctx) => {
98
+ const text = ctx.message?.text ?? ctx.message?.caption ?? "";
99
+ const match = text.match(expression);
100
+ if (match) {
101
+ ctx.match = match;
102
+ return true;
103
+ }
104
+ return false;
105
+ }, ...middleware);
41
106
  }
42
107
  callback(pattern, ...middleware) {
43
108
  return this.route((ctx) => {
44
109
  const data = ctx.callbackQuery?.data ?? "";
45
- return typeof pattern === "string"
46
- ? pattern.endsWith("*")
47
- ? data.startsWith(pattern.slice(0, -1))
48
- : data === pattern
49
- : testRegExp(pattern, data);
110
+ if (typeof pattern === "string") {
111
+ if (pattern.endsWith("*")) {
112
+ const prefix = pattern.slice(0, -1);
113
+ if (data.startsWith(prefix)) {
114
+ ctx.params = { ...ctx.params, wildcard: data.slice(prefix.length) };
115
+ return true;
116
+ }
117
+ return false;
118
+ }
119
+ return data === pattern;
120
+ }
121
+ const match = data.match(pattern);
122
+ if (match) {
123
+ ctx.match = match;
124
+ return true;
125
+ }
126
+ return false;
50
127
  }, ...middleware);
51
128
  }
52
129
  chat(chatId, ...middleware) {
@@ -55,6 +132,19 @@ export class Router {
55
132
  return id !== undefined && (id === chatId || String(id) === String(chatId));
56
133
  }, ...middleware);
57
134
  }
135
+ /**
136
+ * Registers handlers for update types, with optional payload narrowing:
137
+ * `on("message")`, `on("message:photo")`, `on("callback_query:data")`,
138
+ * or an array such as `["message:text", "callback_query:data"]`.
139
+ */
140
+ on(filter, ...middleware) {
141
+ const filters = (Array.isArray(filter) ? filter : [filter]).map((value) => String(value));
142
+ if (filters.length === 0)
143
+ throw new Error("At least one update filter is required.");
144
+ for (const value of filters)
145
+ assertValidFilter(value);
146
+ return this.route((ctx) => filters.some((value) => matchesFilter(ctx, value)), ...middleware);
147
+ }
58
148
  predicate(matcher, ...middleware) {
59
149
  return this.route(matcher, ...middleware);
60
150
  }
@@ -64,18 +154,30 @@ export class Router {
64
154
  });
65
155
  }
66
156
  async handle(ctx, terminal) {
67
- const ordered = [...this.routes].sort((left, right) => left.priority - right.priority);
68
- let matched = false;
69
- for (const route of ordered) {
70
- if (!(await route.matcher(ctx)))
71
- continue;
72
- matched = true;
73
- await compose(route.middleware)(ctx);
74
- if (this.matchMode === "first")
75
- break;
157
+ const routeDispatcher = async (currentCtx, next) => {
158
+ const ordered = [...this.routes].sort((left, right) => left.priority - right.priority);
159
+ let matched = false;
160
+ for (const route of ordered) {
161
+ if (!(await route.matcher(currentCtx)))
162
+ continue;
163
+ matched = true;
164
+ await compose(route.middleware)(currentCtx);
165
+ if (this.matchMode === "first")
166
+ break;
167
+ }
168
+ if (!matched) {
169
+ if (terminal)
170
+ await terminal();
171
+ else
172
+ await next();
173
+ }
174
+ };
175
+ if (this.middlewares.length === 0) {
176
+ await routeDispatcher(ctx, async () => { });
177
+ }
178
+ else {
179
+ await compose([...this.middlewares, routeDispatcher])(ctx);
76
180
  }
77
- if (!matched)
78
- await terminal?.();
79
181
  }
80
182
  }
81
183
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/router/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/router/router.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ export interface Field<T> {
12
12
  }
13
13
  export declare class Form<T extends Record<string, unknown>> {
14
14
  private readonly fields;
15
- private readonly values;
16
15
  field<K extends keyof T & string>(definition: Field<T[K]> & {
17
16
  name: K;
18
17
  }): this;
@@ -1 +1 @@
1
- {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/state/forms.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AACjF,MAAM,WAAW,KAAK,CAAC,CAAC;IAAI,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;AACjN,qBAAa,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI;IACxE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;IAChI,KAAK,IAAI,IAAI;CACd;AACD,eAAO,MAAM,UAAU;oBAAqB,OAAO,KAAG,MAAM;oBAA8G,OAAO,KAAG,MAAM;qBAAiL,OAAO,KAAG,MAAM;mBAAwJ,OAAO,KAAG,MAAM;iBAAkK,OAAO,KAAG,MAAM;CAAgI,CAAC"}
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/state/forms.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AACjF,MAAM,WAAW,KAAK,CAAC,CAAC;IAAI,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;AACjN,qBAAa,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI;IACxE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC;IAsBhI,KAAK,IAAI,IAAI;CACd;AACD,eAAO,MAAM,UAAU;oBAAqB,OAAO,KAAG,MAAM;oBAA8G,OAAO,KAAG,MAAM;qBAAiL,OAAO,KAAG,MAAM;mBAAwJ,OAAO,KAAG,MAAM;iBAAkK,OAAO,KAAG,MAAM;CAAgI,CAAC"}
@@ -1,31 +1,34 @@
1
1
  export class Form {
2
2
  fields = new Map();
3
- values = {};
4
3
  field(definition) { this.fields.set(definition.name, definition); return this; }
5
- async parse(input) { const issues = []; for (const [name, field] of this.fields) {
6
- const raw = input[name];
7
- if ((raw === undefined || raw === null || raw === "") && field.required) {
8
- issues.push({ path: name, message: "Field is required", code: "required" });
9
- continue;
4
+ async parse(input) {
5
+ const issues = [];
6
+ const values = {};
7
+ for (const [name, field] of this.fields) {
8
+ const raw = input[name];
9
+ if ((raw === undefined || raw === null || raw === "") && field.required) {
10
+ issues.push({ path: name, message: "Field is required", code: "required" });
11
+ continue;
12
+ }
13
+ if (raw === undefined || raw === null || raw === "")
14
+ continue;
15
+ try {
16
+ let value = field.parse(raw);
17
+ if (field.transform)
18
+ value = await field.transform(value);
19
+ const error = await field.validate?.(value);
20
+ if (error)
21
+ issues.push({ path: name, message: error, code: "invalid" });
22
+ else
23
+ values[name] = value;
24
+ }
25
+ catch (error) {
26
+ issues.push({ path: name, message: error instanceof Error ? error.message : "Invalid value", code: "parse" });
27
+ }
10
28
  }
11
- if (raw === undefined || raw === null || raw === "")
12
- continue;
13
- try {
14
- let value = field.parse(raw);
15
- if (field.transform)
16
- value = await field.transform(value);
17
- const error = await field.validate?.(value);
18
- if (error)
19
- issues.push({ path: name, message: error, code: "invalid" });
20
- else
21
- this.values[name] = value;
22
- }
23
- catch (error) {
24
- issues.push({ path: name, message: error instanceof Error ? error.message : "Invalid value", code: "parse" });
25
- }
26
- } return issues.length ? { success: false, issues } : { success: true, data: this.values }; }
27
- reset() { for (const key of Object.keys(this.values))
28
- delete this.values[key]; }
29
+ return issues.length ? { success: false, issues } : { success: true, data: values };
30
+ }
31
+ reset() { }
29
32
  }
30
33
  export const validators = { string: (value) => { if (typeof value !== "string")
31
34
  throw new TypeError("Expected string"); return value; }, number: (value) => { const number = typeof value === "number" ? value : Number(value); if (!Number.isFinite(number))