@adriangalilea/utils 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -302,7 +302,7 @@ Then `pnpm install`. Every `ctx.send` / `ctx.sendDocument` / `ctx.reply` / etc.
302
302
 
303
303
  | Subpath | What it does |
304
304
  |---|---|
305
- | `@adriangalilea/utils/bot/kit` | `gracefulStart(bot, opts?)` — SIGINT/SIGTERM → `bot.stop()` → exit; force-kills if shutdown hangs. DMs the admin `@<bot> started.` / `@<bot> shutting down.` by default when `KEV.TELEGRAM_ADMIN_ID` is set (graceful only — crashes don't trigger `onStop`); pass `notifyAdmin: false` to disable or `notifyAdmin: 12345` for an explicit chat id.<br>`adminContext({ adminId? })` — reads `TELEGRAM_ADMIN_ID` from `kev` (with optional hardcoded fallback), decorates `ctx.adminId` + `ctx.isAdmin`.<br>`prefixStorage(storage, prefix)` — namespaces every key on a shared `@gramio/storage` backend. **Required when several bots share one Redis** — `@gramio/session`'s default key is `String(senderId)`, so the same user collides across bots and the last writer wins (silently). Apply once at construction; everything downstream inherits the namespace. |
305
+ | `@adriangalilea/utils/bot/kit` | `gracefulStart(bot, opts?)` — SIGINT/SIGTERM → `bot.stop()` → exit; force-kills if shutdown hangs. DMs the admin `@<bot> started.` / `@<bot> shutting down.` by default when `KEV.TELEGRAM_ADMIN_ID` is set (graceful only — crashes don't trigger `onStop`); pass `notifyAdmin: false` to disable or `notifyAdmin: 12345` for an explicit chat id.<br>`adminContext({ adminId? })` — reads `TELEGRAM_ADMIN_ID` from `kev` (with optional hardcoded fallback), decorates `ctx.adminId` + `ctx.isAdmin`.<br>`botSession(opts)` — **drop-in replacement for `@gramio/session`'s `session()`** that auto-namespaces every key as `bot-<id>:<senderId>` using `ctx.bot.info.id` (populated by `getMe()` at startup). Use this instead of `session()` — full stop. Multiple bots sharing one Redis stay isolated by construction; every plugin in this package derives the same prefix internally via `botStorageKey(ctx, userId)` / `botSubKey(ctx, sub)`. No regex, no manual prefix argument, no way to forget.<br>`prefixStorage(storage, prefix)` — escape hatch for adding a top-level prefix on top of the bot-id namespace; almost never needed. |
306
306
  | `@adriangalilea/utils/bot/access-control` | Personal-bot ACL — gates non-admin/non-default users; admin gets DM with `[✅ Aprobar][❌ Denegar]` on first attempt; `/access` opens a persistent menu (revoke / reapprove / list pending). Backed by `@gramio/session` per-user + a small index. **Native alternative**: BotFather → Bot Settings → Access → "Restrict bot usage" — flat allow-list at Telegram. Use this plugin when you want in-bot approval flow instead of a BotFather round-trip; both can coexist. |
307
307
  | `@adriangalilea/utils/bot/coalesce` | Joins client-split inbound messages back into one. When a user pastes >4096 chars, Telegram clients fragment it into separate `message` updates with no marker. Middleware detects the burst and emits one combined event. |
308
308
  | `@adriangalilea/utils/bot/llm` | The full LLM-chatbot pipeline in one module. **Input:** `streamChat(response)` parses OpenAI-compatible SSE (OpenAI, vllm, mlx-lm, llama.cpp, Together, Groq, …) into a typed `AsyncGenerator<{type: 'content' \| 'reasoning', text}>`. **Output:** `ctx.startStream()` (low-level: debounced markdown to Telegram, 4000-char split, exposes `wasPartial` after `.end()`). `ctx.startChatStream(response)` (high-level: consumes the stream, renders reasoning as a Telegram `expandable_blockquote` entity + content as streamed markdown — both go through `markdownToFormattable` with graceful degradation — returns `{ content, reasoning }`). **History:** `llmHistory({...})` returns `.plugin` (decorates `ctx.llm` with `.add() / .get() / .clear() / .all() / .clearAll()`, per-(user, thread) OpenAI `ChatMessage` shape, persisted in the shared session record so the menu's 🗑 Forget wipes it automatically) AND `.menuItem` (drop-in "🗑 Delete this thread" for `botMenu` — wipes the LLM history AND calls `deleteForumTopic` so the Telegram thread + all its messages disappear from the chat; falls back to Redis-only clear when no `threadId` is present). |
@@ -313,16 +313,15 @@ Standard wiring:
313
313
  ```typescript
314
314
  import { Bot } from 'gramio'
315
315
  import { redisStorage } from '@gramio/storage-redis'
316
- import { adminContext, gracefulStart, prefixStorage } from '@adriangalilea/utils/bot/kit'
316
+ import { adminContext, botSession, gracefulStart } from '@adriangalilea/utils/bot/kit'
317
317
  import { accessControl } from '@adriangalilea/utils/bot/access-control'
318
- import { session } from '@gramio/session'
319
318
  import { llmStream, llmHistory } from '@adriangalilea/utils/bot/llm'
320
319
 
321
- // Wrap the raw backend once. The prefix MUST be unique per bot — without
322
- // it, multiple bots sharing the same Redis collide on `String(senderId)`
323
- // and silently overwrite each other's user records.
324
- const storage = prefixStorage(redisStorage(), 'mybot:')
325
- const userSession = session({ storage, key: 'session', initial: () => ({}) })
320
+ // Raw redis is fine — bot-id namespacing happens inside botSession +
321
+ // every plugin via ctx.bot.info.id. Multiple bots sharing this Redis
322
+ // stay isolated by construction. No manual prefix to remember.
323
+ const storage = redisStorage()
324
+ const userSession = botSession({ storage, key: 'session', initial: () => ({}) })
326
325
  const chat = llmHistory({ session: userSession, maxTurns: 20, retentionDays: 7 })
327
326
 
328
327
  const bot = new Bot(process.env.BOT_TOKEN!)
@@ -1 +1 @@
1
- {"version":3,"file":"access-control.d.ts","sourceRoot":"","sources":["../../src/bot/access-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-control.d.ts","sourceRoot":"","sources":["../../src/bot/access-control.ts"],"names":[],"mappings":"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"}
@@ -93,12 +93,10 @@
93
93
  */
94
94
  import { CallbackData, InlineKeyboard, Plugin, } from "gramio";
95
95
  import { say } from "../say/index.js";
96
- const INDEX_KEY = "ac:index";
96
+ import { botStorageKey, botSubKey } from "./kit.js";
97
97
  const FIRST_MSG_LIMIT = 200;
98
98
  const DEFAULT_THROTTLE_MS = 6 * 60 * 60 * 1000;
99
99
  const FALLBACK_LANG = "en";
100
- /** gramio's `@gramio/session` default `getSessionKey` is `String(senderId)`. */
101
- const sessionKey = (userId) => String(userId);
102
100
  // ─── callback schemas ──────────────────────────────────────────────
103
101
  //
104
102
  // Short `nameId`s keep callback_data under Telegram's 64-byte cap.
@@ -155,23 +153,24 @@ const requestKeyboard = (uid, lang) => new InlineKeyboard()
155
153
  .text(say({ en: "✅ Approve", es: "✅ Aprobar" }, lang), acApprove.pack({ uid }), { style: "success" })
156
154
  .text(say({ en: "❌ Deny", es: "❌ Denegar" }, lang), acDeny.pack({ uid }), { style: "danger" });
157
155
  // ─── index helpers ─────────────────────────────────────────────────
158
- const loadIndex = async (storage) => {
159
- const raw = (await storage.get(INDEX_KEY));
156
+ const indexKey = (ctx) => botSubKey(ctx, "ac:index");
157
+ const loadIndex = async (storage, ctx) => {
158
+ const raw = (await storage.get(indexKey(ctx)));
160
159
  return {
161
160
  pending: raw?.pending ?? [],
162
161
  approved: raw?.approved ?? [],
163
162
  denied: raw?.denied ?? [],
164
163
  };
165
164
  };
166
- const saveIndex = (storage, idx) => storage.set(INDEX_KEY, idx);
167
- const indexAdd = async (storage, bucket, uid) => {
168
- const idx = await loadIndex(storage);
165
+ const saveIndex = (storage, ctx, idx) => storage.set(indexKey(ctx), idx);
166
+ const indexAdd = async (storage, ctx, bucket, uid) => {
167
+ const idx = await loadIndex(storage, ctx);
169
168
  if (!idx[bucket].includes(uid))
170
169
  idx[bucket].push(uid);
171
- await saveIndex(storage, idx);
170
+ await saveIndex(storage, ctx, idx);
172
171
  };
173
- const indexMove = async (storage, uid, from, to) => {
174
- const idx = await loadIndex(storage);
172
+ const indexMove = async (storage, ctx, uid, from, to) => {
173
+ const idx = await loadIndex(storage, ctx);
175
174
  const remove = (list) => {
176
175
  const i = list.indexOf(uid);
177
176
  if (i >= 0)
@@ -187,22 +186,21 @@ const indexMove = async (storage, uid, from, to) => {
187
186
  }
188
187
  if (!idx[to].includes(uid))
189
188
  idx[to].push(uid);
190
- await saveIndex(storage, idx);
189
+ await saveIndex(storage, ctx, idx);
191
190
  };
192
- const loadFullRecord = async (storage, userId) => (await storage.get(sessionKey(userId))) ??
193
- {};
194
- const saveAccess = async (storage, userId, rec) => {
195
- const full = await loadFullRecord(storage, userId);
191
+ const loadFullRecord = async (storage, ctx, userId) => (await storage.get(botStorageKey(ctx, userId))) ?? {};
192
+ const saveAccess = async (storage, ctx, userId, rec) => {
193
+ const full = await loadFullRecord(storage, ctx, userId);
196
194
  full.access = rec;
197
- await storage.set(sessionKey(userId), full);
195
+ await storage.set(botStorageKey(ctx, userId), full);
198
196
  };
199
- const loadAccess = async (storage, userId) => {
200
- const full = await loadFullRecord(storage, userId);
197
+ const loadAccess = async (storage, ctx, userId) => {
198
+ const full = await loadFullRecord(storage, ctx, userId);
201
199
  return full.access;
202
200
  };
203
201
  /** Read recipient's stored language (set by bot/language); fallback to en. */
204
- const langOfUser = async (storage, userId) => {
205
- const full = await loadFullRecord(storage, userId);
202
+ const langOfUser = async (storage, ctx, userId) => {
203
+ const full = await loadFullRecord(storage, ctx, userId);
206
204
  return full.language ?? FALLBACK_LANG;
207
205
  };
208
206
  /** Read current ctx's lang. */
@@ -315,7 +313,7 @@ export const accessControl = (opts) => {
315
313
  rejectedAttempts: 0,
316
314
  };
317
315
  if (isFirstRequest) {
318
- await indexAdd(storage, "pending", userId);
316
+ await indexAdd(storage, ctx, "pending", userId);
319
317
  }
320
318
  else {
321
319
  rec.rejectedAttempts = (rec.rejectedAttempts ?? 0) + 1;
@@ -324,7 +322,7 @@ export const accessControl = (opts) => {
324
322
  if (shouldNotify) {
325
323
  rec.lastNotifiedAt = now;
326
324
  try {
327
- const adminLang = await langOfUser(storage, ctx.adminId);
325
+ const adminLang = await langOfUser(storage, ctx, ctx.adminId);
328
326
  await ctx.bot.api.sendMessage({
329
327
  chat_id: ctx.adminId,
330
328
  text: requestNotificationText(userId, rec, !isFirstRequest, adminLang),
@@ -363,7 +361,7 @@ export const accessControl = (opts) => {
363
361
  show_alert: true,
364
362
  });
365
363
  const uid = ctx.queryData.uid;
366
- const rec = await loadAccess(storage, uid);
364
+ const rec = await loadAccess(storage, ctx, uid);
367
365
  if (!rec)
368
366
  return ctx.answer({
369
367
  text: say({ en: "Not found.", es: "No encontrado." }, aLang),
@@ -375,11 +373,11 @@ export const accessControl = (opts) => {
375
373
  rec.approvedBy = ctx.adminId;
376
374
  rec.deniedAt = undefined;
377
375
  rec.deniedBy = undefined;
378
- await saveAccess(storage, uid, rec);
379
- await indexMove(storage, uid, wasPending ? "pending" : wasDenied ? "denied" : "any", "approved");
376
+ await saveAccess(storage, ctx, uid, rec);
377
+ await indexMove(storage, ctx, uid, wasPending ? "pending" : wasDenied ? "denied" : "any", "approved");
380
378
  if (rec.chatId !== undefined) {
381
379
  try {
382
- const sLang = await langOfUser(storage, uid);
380
+ const sLang = await langOfUser(storage, ctx, uid);
383
381
  await ctx.bot.api.sendMessage({
384
382
  chat_id: rec.chatId,
385
383
  text: say(wasDenied
@@ -421,7 +419,7 @@ export const accessControl = (opts) => {
421
419
  show_alert: true,
422
420
  });
423
421
  const uid = ctx.queryData.uid;
424
- const rec = await loadAccess(storage, uid);
422
+ const rec = await loadAccess(storage, ctx, uid);
425
423
  if (!rec)
426
424
  return ctx.answer({
427
425
  text: say({ en: "Not found.", es: "No encontrado." }, aLang),
@@ -430,11 +428,11 @@ export const accessControl = (opts) => {
430
428
  rec.status = "denied";
431
429
  rec.deniedAt = Date.now();
432
430
  rec.deniedBy = ctx.adminId;
433
- await saveAccess(storage, uid, rec);
434
- await indexMove(storage, uid, wasPending ? "pending" : "any", "denied");
431
+ await saveAccess(storage, ctx, uid, rec);
432
+ await indexMove(storage, ctx, uid, wasPending ? "pending" : "any", "denied");
435
433
  if (rec.chatId !== undefined) {
436
434
  try {
437
- const sLang = await langOfUser(storage, uid);
435
+ const sLang = await langOfUser(storage, ctx, uid);
438
436
  await ctx.bot.api.sendMessage({
439
437
  chat_id: rec.chatId,
440
438
  text: say({ en: "❌ Access denied.", es: "❌ Acceso denegado." }, sLang),
@@ -468,7 +466,7 @@ export const accessControl = (opts) => {
468
466
  show_alert: true,
469
467
  });
470
468
  const uid = ctx.queryData.uid;
471
- const rec = await loadAccess(storage, uid);
469
+ const rec = await loadAccess(storage, ctx, uid);
472
470
  if (!rec)
473
471
  return ctx.answer({
474
472
  text: say({ en: "Not found.", es: "No encontrado." }, aLang),
@@ -476,11 +474,11 @@ export const accessControl = (opts) => {
476
474
  rec.status = "denied";
477
475
  rec.deniedAt = Date.now();
478
476
  rec.deniedBy = ctx.adminId;
479
- await saveAccess(storage, uid, rec);
480
- await indexMove(storage, uid, "approved", "denied");
477
+ await saveAccess(storage, ctx, uid, rec);
478
+ await indexMove(storage, ctx, uid, "approved", "denied");
481
479
  if (rec.chatId !== undefined) {
482
480
  try {
483
- const sLang = await langOfUser(storage, uid);
481
+ const sLang = await langOfUser(storage, ctx, uid);
484
482
  await ctx.bot.api.sendMessage({
485
483
  chat_id: rec.chatId,
486
484
  text: say({
@@ -536,18 +534,18 @@ export const accessControl = (opts) => {
536
534
  if (!ctx.isAdmin)
537
535
  return;
538
536
  const aLang = ctxLang(ctx);
539
- const v = mainView(await loadIndex(storage), defaults, aLang);
537
+ const v = mainView(await loadIndex(storage, ctx), defaults, aLang);
540
538
  await ctx.send(v.text, { reply_markup: v.keyboard });
541
539
  }));
542
540
  };
543
541
  const renderView = async (ctx, storage, defaults, view, lang) => {
544
- const idx = await loadIndex(storage);
542
+ const idx = await loadIndex(storage, ctx);
545
543
  const v = view === "approved"
546
- ? await listView(storage, idx, "approved", defaults, lang)
544
+ ? await listView(storage, ctx, idx, "approved", defaults, lang)
547
545
  : view === "pending"
548
- ? await listView(storage, idx, "pending", defaults, lang)
546
+ ? await listView(storage, ctx, idx, "pending", defaults, lang)
549
547
  : view === "denied"
550
- ? await listView(storage, idx, "denied", defaults, lang)
548
+ ? await listView(storage, ctx, idx, "denied", defaults, lang)
551
549
  : mainView(idx, defaults, lang);
552
550
  try {
553
551
  await ctx.editText(v.text, { reply_markup: v.keyboard });
@@ -578,11 +576,11 @@ const mainView = (idx, defaults, lang) => {
578
576
  .text(say({ en: "✖️ Close", es: "✖️ Cerrar" }, lang), acClose.pack({}));
579
577
  return { text, keyboard };
580
578
  };
581
- const listView = async (storage, idx, filter, defaults, lang) => {
579
+ const listView = async (storage, ctx, idx, filter, defaults, lang) => {
582
580
  const ids = idx[filter];
583
581
  // Cap at 20 to keep callback_data + rendering sane.
584
582
  const shownIds = ids.slice(0, 20);
585
- const records = await Promise.all(shownIds.map(async (id) => ({ id, rec: await loadAccess(storage, id) })));
583
+ const records = await Promise.all(shownIds.map(async (id) => ({ id, rec: await loadAccess(storage, ctx, id) })));
586
584
  const headerEmoji = filter === "approved" ? "✅" : filter === "pending" ? "⏳" : "❌";
587
585
  const headerLabel = filter === "approved"
588
586
  ? say({ en: "Approved", es: "Aprobados" }, lang)
@@ -661,9 +659,12 @@ export const simulateAccessRequest = async (bot, storage, adminId, fakeUser, mes
661
659
  rejectedAttempts: 0,
662
660
  lastNotifiedAt: now,
663
661
  };
664
- await saveAccess(storage, fakeUser.id, rec);
665
- await indexAdd(storage, "pending", fakeUser.id);
666
- const adminLang = await langOfUser(storage, adminId);
662
+ // `BotCtx` shape (`{ bot: { info } }`) — `bot` here is the Bot
663
+ // instance itself, which exposes `info` directly after `bot.start`.
664
+ const botCtx = { bot: { info: bot.info } };
665
+ await saveAccess(storage, botCtx, fakeUser.id, rec);
666
+ await indexAdd(storage, botCtx, "pending", fakeUser.id);
667
+ const adminLang = await langOfUser(storage, botCtx, adminId);
667
668
  await bot.api.sendMessage({
668
669
  chat_id: adminId,
669
670
  text: requestNotificationText(fakeUser.id, rec, false, adminLang),
@@ -1 +1 @@
1
- {"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../src/bot/access-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../src/bot/access-control.ts"],"names":[],"mappings":"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"}
package/dist/bot/kit.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Foundational helpers every bot wants. Three things:
2
+ * Foundational helpers every bot wants.
3
3
  *
4
4
  * `gracefulStart(bot, opts?)` — wires SIGINT/SIGTERM to bot.stop(),
5
5
  * runs an optional shutdown hook, force-kills if it hangs. DMs the
@@ -12,31 +12,37 @@
12
12
  * every context with `ctx.adminId` (number) and `ctx.isAdmin`
13
13
  * (boolean). Throws at startup if neither source provides an id.
14
14
  *
15
- * `prefixStorage(storage, prefix)` — wraps any `@gramio/storage`
16
- * adapter to namespace every key with a fixed prefix. ESSENTIAL
17
- * when several bots share the same backend (e.g. one Redis): the
18
- * session plugin keys records by `String(senderId)`, so the same
19
- * user's id collides across bots and the last writer wins.
15
+ * `botSession(opts)` — drop-in replacement for `@gramio/session`'s
16
+ * `session()` that AUTOMATICALLY namespaces every key with the
17
+ * calling bot's id (parsed from `ctx.bot.options.token`). When
18
+ * several bots share one Redis instance, each writes to a disjoint
19
+ * keyspace (`bot-<id>:<senderId>`) with no manual wiring. Every
20
+ * plugin in this package (`accessControl`, `botMenu`,
21
+ * `llmHistory`, …) derives the SAME prefix from `ctx.bot` for its
22
+ * own storage access, so the whole package stays isolated by
23
+ * construction. Use this instead of `session()` — full stop.
20
24
  *
21
- * Peer deps: `gramio`, `@gramio/storage`.
25
+ * Peer deps: `gramio`, `@gramio/session`, `@gramio/storage`.
22
26
  *
23
27
  * @example
24
28
  * import { Bot } from 'gramio'
25
29
  * import { redisStorage } from '@gramio/storage-redis'
26
- * import { adminContext, gracefulStart, prefixStorage } from '@adriangalilea/utils/bot/kit'
30
+ * import { adminContext, gracefulStart, botSession } from '@adriangalilea/utils/bot/kit'
27
31
  *
28
- * // ONE prefixed storage instance — pass it to session AND every plugin.
29
- * const storage = prefixStorage(redisStorage(), 'mybot:')
32
+ * const storage = redisStorage() // share across bots, safe
33
+ * const userSession = botSession({ storage, initial: () => ({}) })
30
34
  *
31
35
  * const bot = new Bot(process.env.BOT_TOKEN!)
32
- * .extend(adminContext({ adminId: 190202471 })) // KEV wins, 190… is fallback
36
+ * .extend(adminContext({ adminId: 190202471 })) // KEV wins, 190… is fallback
37
+ * .extend(userSession)
33
38
  * .command('whoami', (ctx) => ctx.send(`admin? ${ctx.isAdmin}`))
34
39
  *
35
40
  * await gracefulStart(bot, { onShutdown: () => db.end() })
36
41
  */
42
+ import { session, type SessionOptions } from "@gramio/session";
37
43
  import type { Storage } from "@gramio/storage";
38
- import type { AnyBot } from "gramio";
39
- import { Plugin } from "gramio";
44
+ import type { Plugin as PluginType } from "gramio";
45
+ import { type AnyBot } from "gramio";
40
46
  export type GracefulStartOptions = {
41
47
  /** Runs after `bot.stop()` resolves, before `process.exit`. Close DBs, flush logs. */
42
48
  onShutdown?: () => Promise<void> | void;
@@ -73,7 +79,7 @@ export type AdminContextOptions = {
73
79
  /** Hardcoded fallback used when `KEV.TELEGRAM_ADMIN_ID` is unset. */
74
80
  adminId?: number;
75
81
  };
76
- export declare const adminContext: (opts?: AdminContextOptions) => Plugin<{}, import("gramio").DeriveDefinitions & {
82
+ export declare const adminContext: (opts?: AdminContextOptions) => PluginType<{}, import("gramio").DeriveDefinitions & {
77
83
  global: {
78
84
  adminId: number;
79
85
  };
@@ -83,42 +89,88 @@ export declare const adminContext: (opts?: AdminContextOptions) => Plugin<{}, im
83
89
  };
84
90
  }, {}>;
85
91
  /**
86
- * Wraps any `@gramio/storage` adapter so every read / write goes
87
- * through `${prefix}${key}`. Pass the wrapped instance to your
88
- * `session({...})` AND to every plugin's `storage` option — they all
89
- * inherit the namespace, no per-plugin wiring needed.
92
+ * Returns the calling bot's numeric id from `ctx.bot.info.id`. Throws
93
+ * if called before `bot.start()` / `bot.init()` populates it — should
94
+ * never happen from inside an event handler, where gramio guarantees
95
+ * `bot.info` is set.
96
+ *
97
+ * Note on the structural cast: gramio's `BotLike` (the interface
98
+ * contexts are typed against) intentionally omits `info` to decouple
99
+ * Context types from the full Bot class. At runtime `ctx.bot` IS the
100
+ * full Bot, so the cast is sound — just papering over a deliberate
101
+ * type-vs-runtime gap.
102
+ */
103
+ export declare const botId: (ctx: {
104
+ bot: unknown;
105
+ }) => number;
106
+ /**
107
+ * Computes the storage key for an arbitrary user under the CALLING
108
+ * bot's namespace. Use whenever a plugin needs to read or write
109
+ * **another user's** session record from inside a handler (typical:
110
+ * admin approves a stranger, /forget wipes a stranger after a takedown
111
+ * request). For the current user, the session plugin handles keying
112
+ * automatically when wired via `botSession`.
113
+ */
114
+ export declare const botStorageKey: (ctx: {
115
+ bot: unknown;
116
+ }, userId: number) => string;
117
+ /**
118
+ * Static-key variant — namespace an arbitrary sub-key (e.g. an admin
119
+ * index, a feature flag, a counter) under the calling bot's prefix.
120
+ * Use this for bot-side state that isn't keyed by a specific user.
90
121
  *
91
- * **Why this exists.** `@gramio/session`'s default `getSessionKey` is
92
- * `String(senderId)`. If two bots share the same Redis (or any
93
- * shared-backend storage), the same Telegram user id collides across
94
- * bots — the last writer wins, `/settings → 📥 Export` returns whatever
95
- * the other bot last wrote, etc. A unique prefix per bot makes the
96
- * keyspace disjoint.
122
+ * botSubKey(ctx, 'ac:index') → 'bot-<id>:ac:index'
123
+ * botSubKey(ctx, 'metrics') → 'bot-<id>:metrics'
124
+ */
125
+ export declare const botSubKey: (ctx: {
126
+ bot: unknown;
127
+ }, subKey: string) => string;
128
+ /**
129
+ * Drop-in replacement for `@gramio/session`'s `session()` that forces
130
+ * the storage key to include the calling bot's id. Equivalent to
131
+ * passing `getSessionKey: (ctx) => bot-${id}:${senderId}` explicitly,
132
+ * but baked in so no consumer can forget.
97
133
  *
98
- * Recommended prefix shapes:
99
- * - `'mybot:'` — explicit, human-readable in Redis GUIs.
100
- * - `'<bot-username>:'` — derive from BotFather handle once at start.
101
- * - `'<bot-id>:'` — Telegram's numeric bot id from `getMe`.
134
+ * Returns a plain `@gramio/session` plugin — same shape, same derives,
135
+ * fully interchangeable in `.extend(userSession)` chains and plugin
136
+ * options like `accessControl({ session: userSession, … })`.
102
137
  *
103
- * **Storage layout** with `prefixStorage(s, 'mybot:')`:
138
+ * `getSessionKey` can still be overridden for advanced cases (e.g. a
139
+ * per-chat session in groups); the override is wrapped so it still
140
+ * receives the `bot-<id>:` prefix. Don't override unless you know what
141
+ * you're doing — every plugin in this package expects the
142
+ * `bot-<id>:<userId>` shape for cross-user storage reads.
104
143
  *
105
- * s['mybot:190202471'] = { access, language, llm } ← user 190…'s record
106
- * s['mybot:ac:index'] = { pending, approved, denied }
144
+ * @example
145
+ * import { redisStorage } from '@gramio/storage-redis'
146
+ * import { botSession } from '@adriangalilea/utils/bot/kit'
107
147
  *
108
- * s['otherbot:190202471'] = { … } ← same user, other bot
148
+ * const storage = redisStorage() // shared across N bots, safe
109
149
  *
110
- * No two bots can read each other's data. Forget / Export operate on
111
- * the prefixed keys via the same wrapper.
150
+ * const userSession = botSession({
151
+ * storage,
152
+ * key: 'session',
153
+ * initial: () => ({}),
154
+ * })
112
155
  *
113
- * @example
114
- * import { prefixStorage } from '@adriangalilea/utils/bot/kit'
115
- * import { redisStorage } from '@gramio/storage-redis'
156
+ * bot.extend(userSession)
157
+ */
158
+ export declare const botSession: <Data = unknown, Key extends string = "session", Lazy extends boolean = false>(opts: SessionOptions<Data, Key, Lazy>) => ReturnType<typeof session<Data, Key, Lazy>>;
159
+ /**
160
+ * Wraps any `@gramio/storage` adapter so every key gets a fixed
161
+ * `${prefix}` prepended.
162
+ *
163
+ * **You almost never need this.** The library's plugins are isolated
164
+ * by bot id automatically when you wire `botSession` (see above) —
165
+ * `prefixStorage` exists for edge cases:
116
166
  *
117
- * const storage = prefixStorage(redisStorage(), 'mybot:')
167
+ * - Sharing a Redis instance with a NON-bot system, and you want a
168
+ * top-level prefix on top of the bot-id namespace.
169
+ * - Migrating from an older deployment that used a custom prefix.
118
170
  *
119
- * const userSession = session({ storage, key: 'session', initial: () => ({}) })
120
- * const menu = botMenu({ adminContact: '@me', personalData: { storage }, ... })
121
- * bot.extend(accessControl({ session: userSession, storage, defaults: [] }))
171
+ * In those cases the wrapper composes cleanly with `botSession`'s
172
+ * internal prefix: final keys look like `${prefix}bot-<id>:<userId>`.
122
173
  */
123
174
  export declare const prefixStorage: (storage: Storage, prefix: string) => Storage;
175
+ export type { PluginType };
124
176
  //# sourceMappingURL=kit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../../src/bot/kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,MAAM,oBAAoB,GAAG;IAClC,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC;IACtC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,GACzB,KAAK,MAAM,EACX,OAAM,oBAAyB,KAC7B,OAAO,CAAC,IAAI,CA+Ed,CAAC;AAIF,MAAM,MAAM,mBAAmB,GAAG;IACjC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAM,mBAAwB;;;;;;;;MAqB1D,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,EAAE,QAAQ,MAAM,KAAG,OAQhE,CAAC"}
1
+ {"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../../src/bot/kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,QAAQ,CAAC;AAK7C,MAAM,MAAM,oBAAoB,GAAG;IAClC,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC;IACtC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,GACzB,KAAK,MAAM,EACX,OAAM,oBAAyB,KAC7B,OAAO,CAAC,IAAI,CA+Ed,CAAC;AAIF,MAAM,MAAM,mBAAmB,GAAG;IACjC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAM,mBAAwB;;;;;;;;MAqB1D,CAAC;AAiBF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,KAAG,MAO7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACzB,KAAK;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EACrB,QAAQ,MAAM,KACZ,MAAuC,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GACrB,KAAK;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EACrB,QAAQ,MAAM,KACZ,MAAuC,CAAC;AAI3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,UAAU,GACtB,IAAI,GAAG,OAAO,EACd,GAAG,SAAS,MAAM,GAAG,SAAS,EAC9B,IAAI,SAAS,OAAO,GAAG,KAAK,EAE5B,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,KACnC,UAAU,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CA0B5C,CAAC;AAIF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,EAAE,QAAQ,MAAM,KAAG,OAQhE,CAAC;AAIF,YAAY,EAAE,UAAU,EAAE,CAAC"}
package/dist/bot/kit.js CHANGED
@@ -1,3 +1,45 @@
1
+ /**
2
+ * Foundational helpers every bot wants.
3
+ *
4
+ * `gracefulStart(bot, opts?)` — wires SIGINT/SIGTERM to bot.stop(),
5
+ * runs an optional shutdown hook, force-kills if it hangs. DMs the
6
+ * admin on start/stop by default (`@<bot> started.` /
7
+ * `@<bot> shutting down.`) when `KEV.TELEGRAM_ADMIN_ID` is set —
8
+ * pass `notifyAdmin: false` to disable.
9
+ *
10
+ * `adminContext({ adminId? })` — reads admin Telegram id from KEV
11
+ * (`TELEGRAM_ADMIN_ID`) with optional hardcoded fallback. Decorates
12
+ * every context with `ctx.adminId` (number) and `ctx.isAdmin`
13
+ * (boolean). Throws at startup if neither source provides an id.
14
+ *
15
+ * `botSession(opts)` — drop-in replacement for `@gramio/session`'s
16
+ * `session()` that AUTOMATICALLY namespaces every key with the
17
+ * calling bot's id (parsed from `ctx.bot.options.token`). When
18
+ * several bots share one Redis instance, each writes to a disjoint
19
+ * keyspace (`bot-<id>:<senderId>`) with no manual wiring. Every
20
+ * plugin in this package (`accessControl`, `botMenu`,
21
+ * `llmHistory`, …) derives the SAME prefix from `ctx.bot` for its
22
+ * own storage access, so the whole package stays isolated by
23
+ * construction. Use this instead of `session()` — full stop.
24
+ *
25
+ * Peer deps: `gramio`, `@gramio/session`, `@gramio/storage`.
26
+ *
27
+ * @example
28
+ * import { Bot } from 'gramio'
29
+ * import { redisStorage } from '@gramio/storage-redis'
30
+ * import { adminContext, gracefulStart, botSession } from '@adriangalilea/utils/bot/kit'
31
+ *
32
+ * const storage = redisStorage() // share across bots, safe
33
+ * const userSession = botSession({ storage, initial: () => ({}) })
34
+ *
35
+ * const bot = new Bot(process.env.BOT_TOKEN!)
36
+ * .extend(adminContext({ adminId: 190202471 })) // KEV wins, 190… is fallback
37
+ * .extend(userSession)
38
+ * .command('whoami', (ctx) => ctx.send(`admin? ${ctx.isAdmin}`))
39
+ *
40
+ * await gracefulStart(bot, { onShutdown: () => db.end() })
41
+ */
42
+ import { session } from "@gramio/session";
1
43
  import { Plugin } from "gramio";
2
44
  import { kev } from "../platform/kev.js";
3
45
  export const gracefulStart = async (bot, opts = {}) => {
@@ -91,44 +133,123 @@ export const adminContext = (opts = {}) => {
91
133
  isAdmin: "senderId" in ctx && ctx.senderId === adminId,
92
134
  }));
93
135
  };
94
- // ─── prefixStorage ─────────────────────────────────────────────────
136
+ // ─── bot-id-namespaced keys ────────────────────────────────────────
137
+ //
138
+ // gramio fills `bot.info` from `getMe()` during `bot.init` / `bot.start`,
139
+ // so by the time any handler runs `ctx.bot.info.id` is the bot's stable
140
+ // numeric id. We use it to prefix every storage key the library writes:
141
+ // `bot-<id>:<userId>` (per-user) or `bot-<id>:<subKey>` (bot-side).
142
+ //
143
+ // Why this exists: `@gramio/session` defaults `getSessionKey` to
144
+ // `String(senderId)`. If two bots share one Redis (the canonical
145
+ // "personal bot fleet" setup), every user id collides across bots and
146
+ // the last writer wins — silently corrupting state and leaking
147
+ // neighbouring bots' data on /export. Putting the bot id in the key
148
+ // removes the collision entirely without forcing the user to remember
149
+ // to wrap storage manually.
95
150
  /**
96
- * Wraps any `@gramio/storage` adapter so every read / write goes
97
- * through `${prefix}${key}`. Pass the wrapped instance to your
98
- * `session({...})` AND to every plugin's `storage` option — they all
99
- * inherit the namespace, no per-plugin wiring needed.
151
+ * Returns the calling bot's numeric id from `ctx.bot.info.id`. Throws
152
+ * if called before `bot.start()` / `bot.init()` populates it — should
153
+ * never happen from inside an event handler, where gramio guarantees
154
+ * `bot.info` is set.
100
155
  *
101
- * **Why this exists.** `@gramio/session`'s default `getSessionKey` is
102
- * `String(senderId)`. If two bots share the same Redis (or any
103
- * shared-backend storage), the same Telegram user id collides across
104
- * bots — the last writer wins, `/settings → 📥 Export` returns whatever
105
- * the other bot last wrote, etc. A unique prefix per bot makes the
106
- * keyspace disjoint.
107
- *
108
- * Recommended prefix shapes:
109
- * - `'mybot:'` — explicit, human-readable in Redis GUIs.
110
- * - `'<bot-username>:'` — derive from BotFather handle once at start.
111
- * - `'<bot-id>:'` — Telegram's numeric bot id from `getMe`.
112
- *
113
- * **Storage layout** with `prefixStorage(s, 'mybot:')`:
156
+ * Note on the structural cast: gramio's `BotLike` (the interface
157
+ * contexts are typed against) intentionally omits `info` to decouple
158
+ * Context types from the full Bot class. At runtime `ctx.bot` IS the
159
+ * full Bot, so the cast is sound — just papering over a deliberate
160
+ * type-vs-runtime gap.
161
+ */
162
+ export const botId = (ctx) => {
163
+ const id = ctx.bot.info?.id;
164
+ if (id === undefined)
165
+ throw new Error("bot/kit: ctx.bot.info.id is undefined — botId() called before bot.start()/bot.init() ran.");
166
+ return id;
167
+ };
168
+ /**
169
+ * Computes the storage key for an arbitrary user under the CALLING
170
+ * bot's namespace. Use whenever a plugin needs to read or write
171
+ * **another user's** session record from inside a handler (typical:
172
+ * admin approves a stranger, /forget wipes a stranger after a takedown
173
+ * request). For the current user, the session plugin handles keying
174
+ * automatically when wired via `botSession`.
175
+ */
176
+ export const botStorageKey = (ctx, userId) => `bot-${botId(ctx)}:${userId}`;
177
+ /**
178
+ * Static-key variant — namespace an arbitrary sub-key (e.g. an admin
179
+ * index, a feature flag, a counter) under the calling bot's prefix.
180
+ * Use this for bot-side state that isn't keyed by a specific user.
114
181
  *
115
- * s['mybot:190202471'] = { access, language, llm } ← user 190…'s record
116
- * s['mybot:ac:index'] = { pending, approved, denied }
182
+ * botSubKey(ctx, 'ac:index') → 'bot-<id>:ac:index'
183
+ * botSubKey(ctx, 'metrics') → 'bot-<id>:metrics'
184
+ */
185
+ export const botSubKey = (ctx, subKey) => `bot-${botId(ctx)}:${subKey}`;
186
+ // ─── botSession ────────────────────────────────────────────────────
187
+ /**
188
+ * Drop-in replacement for `@gramio/session`'s `session()` that forces
189
+ * the storage key to include the calling bot's id. Equivalent to
190
+ * passing `getSessionKey: (ctx) => bot-${id}:${senderId}` explicitly,
191
+ * but baked in so no consumer can forget.
117
192
  *
118
- * s['otherbot:190202471'] = { … } ← same user, other bot
193
+ * Returns a plain `@gramio/session` plugin — same shape, same derives,
194
+ * fully interchangeable in `.extend(userSession)` chains and plugin
195
+ * options like `accessControl({ session: userSession, … })`.
119
196
  *
120
- * No two bots can read each other's data. Forget / Export operate on
121
- * the prefixed keys via the same wrapper.
197
+ * `getSessionKey` can still be overridden for advanced cases (e.g. a
198
+ * per-chat session in groups); the override is wrapped so it still
199
+ * receives the `bot-<id>:` prefix. Don't override unless you know what
200
+ * you're doing — every plugin in this package expects the
201
+ * `bot-<id>:<userId>` shape for cross-user storage reads.
122
202
  *
123
203
  * @example
124
- * import { prefixStorage } from '@adriangalilea/utils/bot/kit'
125
204
  * import { redisStorage } from '@gramio/storage-redis'
205
+ * import { botSession } from '@adriangalilea/utils/bot/kit'
206
+ *
207
+ * const storage = redisStorage() // shared across N bots, safe
208
+ *
209
+ * const userSession = botSession({
210
+ * storage,
211
+ * key: 'session',
212
+ * initial: () => ({}),
213
+ * })
214
+ *
215
+ * bot.extend(userSession)
216
+ */
217
+ export const botSession = (opts) => {
218
+ const userKeyer = opts.getSessionKey;
219
+ return session({
220
+ ...opts,
221
+ // The session plugin types `getSessionKey` against `ContextType<BotLike, Events>`
222
+ // — too narrow for our generic wrapper. We only need `bot.info.id` +
223
+ // `senderId`, both of which gramio guarantees on every event the session
224
+ // plugin processes (bot.info is populated by bot.start / bot.init before
225
+ // any handler fires). Structural cast at the boundary keeps the public
226
+ // API generic-friendly without forcing consumers to specify Event unions.
227
+ getSessionKey: (async (ctxRaw) => {
228
+ const ctx = ctxRaw;
229
+ const prefix = `bot-${botId(ctx)}:`;
230
+ if (userKeyer) {
231
+ const inner = await userKeyer(ctx);
232
+ return `${prefix}${inner}`;
233
+ }
234
+ return `${prefix}${ctx.senderId ?? ""}`;
235
+ }),
236
+ });
237
+ };
238
+ // ─── prefixStorage (escape hatch) ──────────────────────────────────
239
+ /**
240
+ * Wraps any `@gramio/storage` adapter so every key gets a fixed
241
+ * `${prefix}` prepended.
242
+ *
243
+ * **You almost never need this.** The library's plugins are isolated
244
+ * by bot id automatically when you wire `botSession` (see above) —
245
+ * `prefixStorage` exists for edge cases:
126
246
  *
127
- * const storage = prefixStorage(redisStorage(), 'mybot:')
247
+ * - Sharing a Redis instance with a NON-bot system, and you want a
248
+ * top-level prefix on top of the bot-id namespace.
249
+ * - Migrating from an older deployment that used a custom prefix.
128
250
  *
129
- * const userSession = session({ storage, key: 'session', initial: () => ({}) })
130
- * const menu = botMenu({ adminContact: '@me', personalData: { storage }, ... })
131
- * bot.extend(accessControl({ session: userSession, storage, defaults: [] }))
251
+ * In those cases the wrapper composes cleanly with `botSession`'s
252
+ * internal prefix: final keys look like `${prefix}bot-<id>:<userId>`.
132
253
  */
133
254
  export const prefixStorage = (storage, prefix) => {
134
255
  const k = (key) => `${prefix}${String(key)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"kit.js","sourceRoot":"","sources":["../../src/bot/kit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kit.js","sourceRoot":"","sources":["../../src/bot/kit.ts"],"names":[],"mappings":"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"}
@@ -233,17 +233,16 @@ export type MenuItem = {
233
233
  export type PersonalDataOptions = {
234
234
  /**
235
235
  * Storage backend where each user's data lives. Must be the SAME
236
- * instance you passed to your `session(...)` plugin — that's how
237
- * /forget and /export reach the right keys.
236
+ * instance you passed to your `session(...)` (or `botSession(...)`)
237
+ * plugin — that's how /forget and /export reach the right keys.
238
+ *
239
+ * The storage key for the calling user is derived as
240
+ * `bot-<botId>:<userId>` via `botStorageKey(ctx, userId)`, matching
241
+ * the namespace `botSession` uses by default. No `sessionKey`
242
+ * override exists because every plugin in this package shares the
243
+ * same key shape by construction.
238
244
  */
239
245
  storage: Storage;
240
- /**
241
- * How to compute the storage key for a given user id. Defaults to
242
- * `String(userId)` — matching `@gramio/session`'s default
243
- * `getSessionKey`. Override if your session uses a custom
244
- * `getSessionKey`.
245
- */
246
- sessionKey?: (userId: number) => string;
247
246
  };
248
247
  export type BotMenuOptions = {
249
248
  /** Slash command that opens the menu. Default `'settings'`. */
@@ -280,7 +279,6 @@ export type BotMenuOptions = {
280
279
  };
281
280
  type ResolvedPersonalData = {
282
281
  storage: Storage;
283
- sessionKey: (userId: number) => string;
284
282
  };
285
283
  type ResolvedOpts = {
286
284
  command: string;
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"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"}
package/dist/bot/menu.js CHANGED
@@ -77,6 +77,7 @@
77
77
  */
78
78
  import { CallbackData, InlineKeyboard, Plugin } from "gramio";
79
79
  import { say } from "../say/index.js";
80
+ import { botStorageKey } from "./kit.js";
80
81
  const FALLBACK_LANG = "en";
81
82
  const ctxLang = (ctx) => ctx.session?.language ?? FALLBACK_LANG;
82
83
  const styleOf = (s, ctx) => {
@@ -90,7 +91,6 @@ const DEFAULT_COMMAND = "settings";
90
91
  const DEFAULT_DESCRIPTION = "Open settings menu";
91
92
  const DEFAULT_PRIVACY_URL = "https://telegram.org/privacy-tpa";
92
93
  const DEFAULT_HEADER = { en: "⚙️ Settings", es: "⚙️ Ajustes" };
93
- const DEFAULT_SESSION_KEY = (userId) => String(userId);
94
94
  // ─── callback data schemas ─────────────────────────────────────────
95
95
  const navCb = new CallbackData("mNav").string("path");
96
96
  const actCb = new CallbackData("mAct").string("path");
@@ -116,10 +116,7 @@ export class BotMenu {
116
116
  header: opts.header ?? DEFAULT_HEADER,
117
117
  adminContact: opts.adminContact,
118
118
  personalData: opts.personalData
119
- ? {
120
- storage: opts.personalData.storage,
121
- sessionKey: opts.personalData.sessionKey ?? DEFAULT_SESSION_KEY,
122
- }
119
+ ? { storage: opts.personalData.storage }
123
120
  : null,
124
121
  };
125
122
  }
@@ -232,8 +229,8 @@ const renderPrivacySubmenu = (menu, ctx) => {
232
229
  }
233
230
  kb.url(say({ en: "📖 Privacy policy", es: "📖 Política de privacidad" }, lang), menu._opts.privacy);
234
231
  kb.row();
232
+ // Submenu — Back and Close share one row.
235
233
  kb.text(say({ en: "⬅️ Back", es: "⬅️ Volver" }, lang), navCb.pack({ path: "_root" }));
236
- kb.row();
237
234
  kb.text(say({ en: "✖️ Close", es: "✖️ Cerrar" }, lang), closeCb.pack({}));
238
235
  return kb;
239
236
  };
@@ -264,15 +261,15 @@ const renderKeyboard = (_menu, items, ctx, parentPath) => {
264
261
  // view focused on user-defined items.
265
262
  kb.text(say({ en: "🔒 Privacy & data", es: "🔒 Privacidad y datos" }, lang), navCb.pack({ path: PRIVACY_PATH }));
266
263
  kb.row();
264
+ // Root has no Back — Close gets its own row.
265
+ kb.text(say({ en: "✖️ Close", es: "✖️ Cerrar" }, lang), closeCb.pack({}));
267
266
  }
268
267
  else {
268
+ // Submenus: Back and Close share one row.
269
269
  const backPath = parentPath.slice(0, -1).join(".");
270
270
  kb.text(say({ en: "⬅️ Back", es: "⬅️ Volver" }, lang), navCb.pack({ path: backPath || "_root" }));
271
- kb.row();
271
+ kb.text(say({ en: "✖️ Close", es: "✖️ Cerrar" }, lang), closeCb.pack({}));
272
272
  }
273
- // Close is always available — taps delete the settings message so
274
- // it doesn't linger in the chat history. Neutral (unstyled) button.
275
- kb.text(say({ en: "✖️ Close", es: "✖️ Cerrar" }, lang), closeCb.pack({}));
276
273
  return kb;
277
274
  };
278
275
  const renderConfirmForget = (lang) => new InlineKeyboard()
@@ -481,7 +478,7 @@ const buildMenuPlugin = (menu) => {
481
478
  text: say({ en: "No user.", es: "Sin usuario." }, lang),
482
479
  });
483
480
  try {
484
- await personalData.storage.delete(personalData.sessionKey(userId));
481
+ await personalData.storage.delete(botStorageKey(ctx, userId));
485
482
  await ctx.answer({
486
483
  text: say({ en: "Deleted.", es: "Borrado." }, lang),
487
484
  });
@@ -533,8 +530,7 @@ const buildMenuPlugin = (menu) => {
533
530
  return ctx.answer({
534
531
  text: say({ en: "No user.", es: "Sin usuario." }, lang),
535
532
  });
536
- const record = (await personalData.storage.get(personalData.sessionKey(userId))) ??
537
- {};
533
+ const record = (await personalData.storage.get(botStorageKey(ctx, userId))) ?? {};
538
534
  const file = new File([
539
535
  JSON.stringify({ userId, exportedAt: Date.now(), data: record }, null, 2),
540
536
  ], `my-data-${userId}-${Date.now()}.json`, { type: "application/json" });
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/bot/menu.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adriangalilea/utils",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "description": "TypeScript utilities - logger, currency, formatter, GramIO bot plugins, and more",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",