telemeister 0.3.1 → 0.3.3

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.
@@ -1085,12 +1085,7 @@ function renderTemplate(templateName, data = {}) {
1085
1085
  return ejs_default.render(template, data);
1086
1086
  }
1087
1087
  function getPackageManager() {
1088
- try {
1089
- execSync("pnpm --version", { stdio: "ignore" });
1090
- return "pnpm";
1091
- } catch {
1092
- return "npm";
1093
- }
1088
+ return "npm";
1094
1089
  }
1095
1090
  async function createBot(botName) {
1096
1091
  if (!botName) {
@@ -1 +1 @@
1
- {"version":3,"file":"create-bot.d.ts","sourceRoot":"","sources":["../../src/cli/create-bot.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+CH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA6G1E"}
1
+ {"version":3,"file":"create-bot.d.ts","sourceRoot":"","sources":["../../src/cli/create-bot.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2CH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA6G1E"}
@@ -32,13 +32,8 @@ function renderTemplate(templateName, data = {}) {
32
32
  return ejs.render(template, data);
33
33
  }
34
34
  function getPackageManager() {
35
- try {
36
- execSync('pnpm --version', { stdio: 'ignore' });
37
- return 'pnpm';
38
- }
39
- catch {
40
- return 'npm';
41
- }
35
+ // Always use npm for native dependency compilation (better-sqlite3)
36
+ return 'npm';
42
37
  }
43
38
  export async function createBot(botName) {
44
39
  if (!botName) {
@@ -1 +1 @@
1
- {"version":3,"file":"create-bot.js","sourceRoot":"","sources":["../../src/cli/create-bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-bot.js","sourceRoot":"","sources":["../../src/cli/create-bot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../../src/core/bot/polling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAW,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEpD,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,UAAU,UAAW,SAAQ,OAAO;IAClC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CA+EhE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E"}
1
+ {"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../../src/core/bot/polling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAW,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEpD,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,UAAU,UAAW,SAAQ,OAAO;IAClC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CA4FhE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E"}
@@ -32,11 +32,12 @@ export function createBot(config) {
32
32
  }
33
33
  const telegramIdStr = telegramId.toString();
34
34
  const chatId = ctx.chat?.id.toString() ?? ctx.session?.chatId;
35
+ const username = ctx.from?.username;
35
36
  if (!chatId) {
36
37
  return next();
37
38
  }
38
39
  // Get or create user session
39
- const { session: userSession, isNew } = await getOrCreateSession(telegramIdStr, chatId, database);
40
+ const { session: userSession, isNew } = await getOrCreateSession(telegramIdStr, username, chatId, database);
40
41
  ctx.session = userSession;
41
42
  // Call onEnter for initial state if this is a new session
42
43
  if (isNew) {
@@ -61,8 +62,17 @@ export function createBot(config) {
61
62
  const session = ctx.session;
62
63
  // Create handler context compatible with existing handlers
63
64
  const handlerContext = createHandlerContext(ctx, session, database);
64
- // Execute onResponse handler for current state
65
- const nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
65
+ // Check for commands first
66
+ const text = ctx.message?.text?.trim();
67
+ let nextState = undefined;
68
+ if (text && text.startsWith('/')) {
69
+ const command = text.split(' ')[0].slice(1).toLowerCase(); // Remove leading slash
70
+ nextState = await appBuilder.executeCommand(command, session.currentState, handlerContext);
71
+ }
72
+ // If no command handled or command returned void, execute onResponse handler
73
+ if (nextState === undefined) {
74
+ nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
75
+ }
66
76
  // Handle state transition (call onEnter even for same state)
67
77
  if (nextState) {
68
78
  await transitionToState(ctx, session, nextState, handlerContext, database);
@@ -1 +1 @@
1
- {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../../src/core/bot/polling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../../src/core/bot/polling.ts"],"names":[],"mappings":"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"}
@@ -34,5 +34,5 @@ export declare class SessionStorageAdapter implements StorageAdapter<SessionData
34
34
  * Get or create user session
35
35
  * This helper ensures a user exists in the database before processing
36
36
  */
37
- export declare function getOrCreateSession(telegramId: string, chatId: string, database: DatabaseAdapter): Promise<SessionResult>;
37
+ export declare function getOrCreateSession(telegramId: string, username: string | undefined, chatId: string, database: DatabaseAdapter): Promise<SessionResult>;
38
38
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/core/bot/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9E,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAE3C;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc,CAAC,WAAW,CAAC;IACvE,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,QAAQ,EAAE,eAAe;IAIrC;;;OAGG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAgBzD;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzC;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAoCxB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/core/bot/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9E,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAE3C;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc,CAAC,WAAW,CAAC;IACvE,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,QAAQ,EAAE,eAAe;IAIrC;;;OAGG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAgBzD;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzC;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAqCxB"}
@@ -51,7 +51,7 @@ export class SessionStorageAdapter {
51
51
  * Get or create user session
52
52
  * This helper ensures a user exists in the database before processing
53
53
  */
54
- export async function getOrCreateSession(telegramId, chatId, database) {
54
+ export async function getOrCreateSession(telegramId, username, chatId, database) {
55
55
  const existing = await database.getUserByTelegramId(telegramId);
56
56
  if (existing) {
57
57
  const stateData = existing.info?.stateData
@@ -70,6 +70,7 @@ export async function getOrCreateSession(telegramId, chatId, database) {
70
70
  // Create new user
71
71
  const newUser = await database.createOrUpdateUser({
72
72
  telegramId,
73
+ username,
73
74
  chatId,
74
75
  currentState: 'idle',
75
76
  stateData: {},
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/bot/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,QAAQ,CAAkB;IAElC,YAAY,QAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,MAAM,SAAS,GAA4B,IAAI,CAAC,IAAI,EAAE,SAAS;YAC7D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,KAAkB;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,0CAA0C;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,MAAc,EACd,QAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,SAAS,GAA4B,QAAQ,CAAC,IAAI,EAAE,SAAS;YACjE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,OAAO,EAAE;gBACP,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,SAAS;gBACT,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB;YACD,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC;QAChD,UAAU;QACV,MAAM;QACN,YAAY,EAAE,MAAM;QACpB,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE;YACP,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB;QACD,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/bot/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,QAAQ,CAAkB;IAElC,YAAY,QAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,MAAM,SAAS,GAA4B,IAAI,CAAC,IAAI,EAAE,SAAS;YAC7D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACjC,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,KAAkB;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,0CAA0C;QAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,QAA4B,EAC5B,MAAc,EACd,QAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEhE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,SAAS,GAA4B,QAAQ,CAAC,IAAI,EAAE,SAAS;YACjE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YACrC,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,OAAO,EAAE;gBACP,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,SAAS;gBACT,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB;YACD,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC;QAChD,UAAU;QACV,QAAQ;QACR,MAAM;QACN,YAAY,EAAE,MAAM;QACpB,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE;YACP,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB;QACD,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
@@ -10,6 +10,7 @@
10
10
  export interface UserData {
11
11
  id: number;
12
12
  telegramId: string;
13
+ username?: string | null;
13
14
  chatId: string;
14
15
  currentState: string;
15
16
  info?: {
@@ -33,6 +34,7 @@ export interface DatabaseAdapter {
33
34
  */
34
35
  createOrUpdateUser(data: {
35
36
  telegramId: string;
37
+ username?: string;
36
38
  chatId: string;
37
39
  currentState?: string;
38
40
  stateData?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/bot/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAElE;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/bot/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAElE;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../src/core/bot/webhook.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,GAAG,EAA4B,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAErE,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,UAAU,UAAW,SAAQ,OAAO;IAClC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CA0F7F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C3E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBjF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpE"}
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../src/core/bot/webhook.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,GAAG,EAA4B,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAErE,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,UAAU,UAAW,SAAQ,OAAO;IAClC,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CA4F7F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C3E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBjF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpE"}
@@ -33,11 +33,12 @@ export function createBot(config) {
33
33
  }
34
34
  const telegramIdStr = telegramId.toString();
35
35
  const chatId = ctx.chat?.id.toString() ?? ctx.session?.chatId;
36
+ const username = ctx.from?.username;
36
37
  if (!chatId) {
37
38
  return next();
38
39
  }
39
40
  // Get or create user session
40
- const { session: userSession, isNew } = await getOrCreateSession(telegramIdStr, chatId, database);
41
+ const { session: userSession, isNew } = await getOrCreateSession(telegramIdStr, username, chatId, database);
41
42
  ctx.session = userSession;
42
43
  // Call onEnter for initial state if this is a new session
43
44
  if (isNew) {
@@ -62,8 +63,17 @@ export function createBot(config) {
62
63
  const session = ctx.session;
63
64
  // Create handler context compatible with existing handlers
64
65
  const handlerContext = createHandlerContext(ctx, session, database);
65
- // Execute onResponse handler for current state
66
- const nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
66
+ // Check for commands first
67
+ const text = ctx.message?.text?.trim();
68
+ let nextState = undefined;
69
+ if (text && text.startsWith('/')) {
70
+ const command = text.split(' ')[0].slice(1).toLowerCase(); // Remove leading slash
71
+ nextState = await appBuilder.executeCommand(command, session.currentState, handlerContext);
72
+ }
73
+ // If no command handled or command returned void, execute onResponse handler
74
+ if (nextState === undefined) {
75
+ nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
76
+ }
67
77
  // Handle state transition (call onEnter even for same state)
68
78
  if (nextState) {
69
79
  await transitionToState(ctx, session, nextState, handlerContext, database);
@@ -74,14 +84,6 @@ export function createBot(config) {
74
84
  handlerContext.getData('__all') || session.stateData;
75
85
  }
76
86
  });
77
- // Handle /start command
78
- bot.command('start', async (ctx) => {
79
- const session = ctx.session;
80
- // Create handler context
81
- const handlerContext = createHandlerContext(ctx, session, database);
82
- // Transition to welcome state
83
- await transitionToState(ctx, session, 'welcome', handlerContext, database);
84
- });
85
87
  return bot;
86
88
  }
87
89
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/core/bot/webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/core/bot/webhook.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { BotHandlerContext, BotState, EnterHandler, ResponseHandler, StateHandlers } from './types.js';
1
+ import type { BotHandlerContext, BotState, EnterHandler, ResponseHandler, StateHandlers, CommandHandler } from './types.js';
2
2
  /**
3
3
  * State Builder - Fluent API for configuring a single state
4
4
  *
@@ -34,6 +34,17 @@ declare class StateBuilder<TState extends BotState = BotState> {
34
34
  * })
35
35
  */
36
36
  onResponse(handler: ResponseHandler<TState>): this;
37
+ /**
38
+ * Set a command handler for this state (overrides global commands)
39
+ * Called when user sends this command while in this state
40
+ *
41
+ * Example:
42
+ * .onCommand('cancel', async (context) => {
43
+ * await context.reply('Operation cancelled');
44
+ * return 'mainMenu';
45
+ * })
46
+ */
47
+ onCommand(command: string, handler: CommandHandler<TState>): this;
37
48
  }
38
49
  /**
39
50
  * Multi-State Builder - Registers handlers for multiple states at once
@@ -46,6 +57,10 @@ declare class MultiStateBuilder<TState extends BotState = BotState> {
46
57
  constructor(states: TState[], handlers: Map<TState, StateHandlers<TState>>);
47
58
  onEnter(handler: EnterHandler<TState>): this;
48
59
  onResponse(handler: ResponseHandler<TState>): this;
60
+ /**
61
+ * Set a command handler for all these states (overrides global commands)
62
+ */
63
+ onCommand(command: string, handler: CommandHandler<TState>): this;
49
64
  }
50
65
  /**
51
66
  * Bot Builder - Main API for registering state handlers
@@ -75,6 +90,7 @@ declare class MultiStateBuilder<TState extends BotState = BotState> {
75
90
  */
76
91
  export declare class BotBuilder<TState extends BotState = BotState> {
77
92
  private handlers;
93
+ private globalCommandHandlers;
78
94
  /**
79
95
  * Register handlers for one or more states using chaining
80
96
  * @param state - State name(s) to configure
@@ -96,6 +112,32 @@ export declare class BotBuilder<TState extends BotState = BotState> {
96
112
  * @returns this for chaining
97
113
  */
98
114
  onResponse(state: TState, handler: ResponseHandler<TState>): this;
115
+ /**
116
+ * Register a global command handler (works in all states unless overridden)
117
+ * @param command - Command name without leading slash (e.g., 'start', 'help')
118
+ * @param handler - Handler function
119
+ * @returns this for chaining
120
+ * @example
121
+ * .onCommand('start', async (context) => {
122
+ * await context.reply('Welcome!');
123
+ * return 'welcome';
124
+ * })
125
+ */
126
+ onCommand(command: string, handler: CommandHandler<TState>): this;
127
+ /**
128
+ * Register a command handler for a specific state (overrides global)
129
+ * @param state - State name
130
+ * @param command - Command name without leading slash
131
+ * @param handler - Handler function
132
+ * @returns this for chaining
133
+ * @example
134
+ * .onCommand('cancel', 'order', async (context) => {
135
+ * // Only works when user is in 'order' state
136
+ * await context.reply('Order cancelled');
137
+ * return 'mainMenu';
138
+ * })
139
+ */
140
+ onCommandForState(state: TState, command: string, handler: CommandHandler<TState>): this;
99
141
  /**
100
142
  * Execute the onEnter handler for a given state
101
143
  * @internal Called by the bot handlers
@@ -124,6 +166,21 @@ export declare class BotBuilder<TState extends BotState = BotState> {
124
166
  * Get handlers for a specific state
125
167
  */
126
168
  getHandlers(state: TState): StateHandlers<TState> | undefined;
169
+ /**
170
+ * Execute a command handler
171
+ * @internal Called by the bot handlers
172
+ * @returns The next state to transition to, or void
173
+ *
174
+ * Priority order:
175
+ * 1. State-specific command handler (if exists)
176
+ * 2. Global command handler (if exists)
177
+ * 3. None - let state onResponse handle it
178
+ */
179
+ executeCommand(command: string, currentState: TState, context: BotHandlerContext<TState>): Promise<TState | void>;
180
+ /**
181
+ * Check if a command has a registered handler (global or for specific state)
182
+ */
183
+ hasCommandHandler(command: string, state?: TState): boolean;
127
184
  }
128
185
  /**
129
186
  * Global bot builder instance (untyped - accepts any string state)
@@ -134,5 +191,5 @@ export declare class BotBuilder<TState extends BotState = BotState> {
134
191
  * ```
135
192
  */
136
193
  export declare const botBuilder: BotBuilder<string>;
137
- export type { BotHandlerContext, BotState, EnterHandler, ResponseHandler } from './types.js';
194
+ export type { BotHandlerContext, BotState, EnterHandler, ResponseHandler, CommandHandler, } from './types.js';
138
195
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,cAAM,YAAY,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ;IACnD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAqC;gBAEzC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAKvE;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IAO5C;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI;CAMnD;AAED;;;;GAIG;AACH,cAAM,iBAAiB,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ;IACxD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,QAAQ,CAAqC;gBAEzC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAK1E,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IAS5C,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI;CAQnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,UAAU,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ;IACxD,OAAO,CAAC,QAAQ,CAA4C;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAQrD;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IAO3D;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,IAAI;IAOjE;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ/F;;;;OAIG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQzB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;CAG9D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,oBAAmB,CAAC;AAG3C,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,25 @@ class StateBuilder {
46
46
  this.handlers.set(this.state, existing);
47
47
  return this;
48
48
  }
49
+ /**
50
+ * Set a command handler for this state (overrides global commands)
51
+ * Called when user sends this command while in this state
52
+ *
53
+ * Example:
54
+ * .onCommand('cancel', async (context) => {
55
+ * await context.reply('Operation cancelled');
56
+ * return 'mainMenu';
57
+ * })
58
+ */
59
+ onCommand(command, handler) {
60
+ const existing = this.handlers.get(this.state) || {};
61
+ if (!existing.onCommand) {
62
+ existing.onCommand = new Map();
63
+ }
64
+ existing.onCommand.set(command.toLowerCase(), handler);
65
+ this.handlers.set(this.state, existing);
66
+ return this;
67
+ }
49
68
  }
50
69
  /**
51
70
  * Multi-State Builder - Registers handlers for multiple states at once
@@ -75,6 +94,20 @@ class MultiStateBuilder {
75
94
  }
76
95
  return this;
77
96
  }
97
+ /**
98
+ * Set a command handler for all these states (overrides global commands)
99
+ */
100
+ onCommand(command, handler) {
101
+ for (const state of this.states) {
102
+ const existing = this.handlers.get(state) || {};
103
+ if (!existing.onCommand) {
104
+ existing.onCommand = new Map();
105
+ }
106
+ existing.onCommand.set(command.toLowerCase(), handler);
107
+ this.handlers.set(state, existing);
108
+ }
109
+ return this;
110
+ }
78
111
  }
79
112
  /**
80
113
  * Bot Builder - Main API for registering state handlers
@@ -104,6 +137,7 @@ class MultiStateBuilder {
104
137
  */
105
138
  export class BotBuilder {
106
139
  handlers = new Map();
140
+ globalCommandHandlers = new Map();
107
141
  forState(state) {
108
142
  if (Array.isArray(state)) {
109
143
  return new MultiStateBuilder(state, this.handlers);
@@ -134,6 +168,43 @@ export class BotBuilder {
134
168
  this.handlers.set(state, existing);
135
169
  return this;
136
170
  }
171
+ /**
172
+ * Register a global command handler (works in all states unless overridden)
173
+ * @param command - Command name without leading slash (e.g., 'start', 'help')
174
+ * @param handler - Handler function
175
+ * @returns this for chaining
176
+ * @example
177
+ * .onCommand('start', async (context) => {
178
+ * await context.reply('Welcome!');
179
+ * return 'welcome';
180
+ * })
181
+ */
182
+ onCommand(command, handler) {
183
+ this.globalCommandHandlers.set(command.toLowerCase(), handler);
184
+ return this;
185
+ }
186
+ /**
187
+ * Register a command handler for a specific state (overrides global)
188
+ * @param state - State name
189
+ * @param command - Command name without leading slash
190
+ * @param handler - Handler function
191
+ * @returns this for chaining
192
+ * @example
193
+ * .onCommand('cancel', 'order', async (context) => {
194
+ * // Only works when user is in 'order' state
195
+ * await context.reply('Order cancelled');
196
+ * return 'mainMenu';
197
+ * })
198
+ */
199
+ onCommandForState(state, command, handler) {
200
+ const existing = this.handlers.get(state) || {};
201
+ if (!existing.onCommand) {
202
+ existing.onCommand = new Map();
203
+ }
204
+ existing.onCommand.set(command.toLowerCase(), handler);
205
+ this.handlers.set(state, existing);
206
+ return this;
207
+ }
137
208
  /**
138
209
  * Execute the onEnter handler for a given state
139
210
  * @internal Called by the bot handlers
@@ -182,6 +253,43 @@ export class BotBuilder {
182
253
  getHandlers(state) {
183
254
  return this.handlers.get(state);
184
255
  }
256
+ /**
257
+ * Execute a command handler
258
+ * @internal Called by the bot handlers
259
+ * @returns The next state to transition to, or void
260
+ *
261
+ * Priority order:
262
+ * 1. State-specific command handler (if exists)
263
+ * 2. Global command handler (if exists)
264
+ * 3. None - let state onResponse handle it
265
+ */
266
+ async executeCommand(command, currentState, context) {
267
+ const normalizedCommand = command.toLowerCase();
268
+ // First check for state-specific command handler
269
+ const stateHandlers = this.handlers.get(currentState);
270
+ const stateCommandHandler = stateHandlers?.onCommand?.get(normalizedCommand);
271
+ if (stateCommandHandler) {
272
+ return await stateCommandHandler(context);
273
+ }
274
+ // Fall back to global command handler
275
+ const globalHandler = this.globalCommandHandlers.get(normalizedCommand);
276
+ if (globalHandler) {
277
+ return await globalHandler(context);
278
+ }
279
+ }
280
+ /**
281
+ * Check if a command has a registered handler (global or for specific state)
282
+ */
283
+ hasCommandHandler(command, state) {
284
+ const normalizedCommand = command.toLowerCase();
285
+ if (state) {
286
+ const stateHandlers = this.handlers.get(state);
287
+ if (stateHandlers?.onCommand?.has(normalizedCommand)) {
288
+ return true;
289
+ }
290
+ }
291
+ return this.globalCommandHandlers.has(normalizedCommand);
292
+ }
185
293
  }
186
294
  /**
187
295
  * Global bot builder instance (untyped - accepts any string state)
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,15 @@ export interface BotHandlerContext<TState extends BotState = BotState> {
16
16
  }
17
17
  export type EnterHandler<TState extends BotState = BotState> = (context: BotHandlerContext<TState>) => Promise<TState | void>;
18
18
  export type ResponseHandler<TState extends BotState = BotState> = (context: BotHandlerContext<TState>) => Promise<TState | void>;
19
+ export type CommandHandler<TState extends BotState = BotState> = (context: BotHandlerContext<TState>) => Promise<TState | void>;
19
20
  export interface StateHandlers<TState extends BotState = BotState> {
20
21
  onEnter?: EnterHandler<TState>;
21
22
  onResponse?: ResponseHandler<TState>;
23
+ onCommand?: Map<string, CommandHandler<TState>>;
24
+ }
25
+ export interface CommandHandlers<TState extends BotState = BotState> {
26
+ global: Map<string, CommandHandler<TState>>;
27
+ byState: Map<TState, Map<string, CommandHandler<TState>>>;
22
28
  }
23
29
  export type ExtractStates<T> = T extends StateHandlers<infer S> ? S : never;
24
30
  export interface BotContext {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,eAAO,MAAM,UAAU,oBAA2B,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,iBAAiB,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CAChG;AAED,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ,IAAI,CAC7D,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5B,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ,IAAI,CAChE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5B,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ;IAC/D,OAAO,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Global Command Handlers
3
+ *
4
+ * These commands work across all states unless overridden by state-specific
5
+ * command handlers defined in individual state handlers.
6
+ *
7
+ * Command handlers are checked BEFORE onResponse handlers and take priority.
8
+ * If a command handler returns a state, the bot transitions to that state.
9
+ * If a command handler returns void/undefined, the onResponse handler runs.
10
+ */
11
+
12
+ import { appBuilder, type AppContext } from 'telemeister/core';
13
+ import type { BotStateTransitions } from '../bot-state-types.js';
14
+
15
+ /**
16
+ * Global /start command
17
+ * Works in all states, returns user to welcome state
18
+ */
19
+ appBuilder.onCommand('start', async (context: AppContext): Promise<BotStateTransitions> => {
20
+ await context.reply('Welcome back! 👋');
21
+ return 'welcome';
22
+ });
23
+
24
+ /**
25
+ * Global /help command
26
+ * Shows help text but doesn't change state
27
+ */
28
+ appBuilder.onCommand('help', async (context: AppContext): Promise<void> => {
29
+ await context.reply(`
30
+ 🤖 *Available Commands*
31
+
32
+ /start - Start the bot
33
+ /help - Show this help message
34
+ /cancel - Cancel current operation
35
+ /settings - Open settings menu
36
+
37
+ Navigate using the buttons below.
38
+ `, { parse_mode: 'Markdown' });
39
+ });
40
+
41
+ /**
42
+ * Global /cancel command
43
+ * Cancels current operation and returns to main menu
44
+ */
45
+ appBuilder.onCommand('cancel', async (context: AppContext): Promise<BotStateTransitions | void> => {
46
+ // Different behavior based on current state
47
+ if (context.currentState === 'welcome') {
48
+ await context.reply('Nothing to cancel here!');
49
+ return; // Stay in current state
50
+ }
51
+
52
+ await context.reply('Operation cancelled. Returning to main menu...');
53
+ return 'mainMenu';
54
+ });
55
+
56
+ /**
57
+ * Example: State-specific command override
58
+ * In 'orderForm' state, /cancel behaves differently
59
+ *
60
+ * This would go in src/handlers/orderForm/index.ts:
61
+ *
62
+ * appBuilder
63
+ * .forState('orderForm')
64
+ * .onCommand('cancel', async (context) => {
65
+ * await context.reply('Cancel order? Your progress will be lost.');
66
+ * return 'confirmCancel';
67
+ * });
68
+ */
69
+
70
+ console.log('✅ Global commands registered: /start, /help, /cancel');
@@ -62,6 +62,7 @@ export async function getUserByTelegramId(telegramId: string): Promise<UserWithI
62
62
  */
63
63
  export async function createOrUpdateUser(data: {
64
64
  telegramId: string;
65
+ username?: string;
65
66
  chatId: string;
66
67
  currentState?: string;
67
68
  stateData?: Record<string, unknown>;
@@ -74,6 +75,7 @@ export async function createOrUpdateUser(data: {
74
75
  where: { telegramId: data.telegramId },
75
76
  data: {
76
77
  chatId: data.chatId,
78
+ ...(data.username !== undefined && { username: data.username }),
77
79
  ...(data.currentState && { currentState: data.currentState }),
78
80
  },
79
81
  include: { info: true },
@@ -102,6 +104,7 @@ export async function createOrUpdateUser(data: {
102
104
  const newUser = await prisma.user.create({
103
105
  data: {
104
106
  telegramId: data.telegramId,
107
+ username: data.username,
105
108
  chatId: data.chatId,
106
109
  currentState: data.currentState || 'idle',
107
110
  info: {
@@ -172,6 +175,7 @@ export const databaseAdapter: DatabaseAdapter = {
172
175
  return {
173
176
  id: user.id,
174
177
  telegramId: user.telegramId,
178
+ username: user.username,
175
179
  chatId: user.chatId,
176
180
  currentState: user.currentState,
177
181
  info: user.info,
@@ -180,6 +184,7 @@ export const databaseAdapter: DatabaseAdapter = {
180
184
 
181
185
  createOrUpdateUser: async (data: {
182
186
  telegramId: string;
187
+ username?: string;
183
188
  chatId: string;
184
189
  currentState?: string;
185
190
  stateData?: Record<string, unknown>;
@@ -188,6 +193,7 @@ export const databaseAdapter: DatabaseAdapter = {
188
193
  return {
189
194
  id: user.id,
190
195
  telegramId: user.telegramId,
196
+ username: user.username,
191
197
  chatId: user.chatId,
192
198
  currentState: user.currentState,
193
199
  info: user.info,
@@ -10,6 +10,7 @@ datasource db {
10
10
  model User {
11
11
  id Int @id @default(autoincrement())
12
12
  telegramId String @unique
13
+ username String?
13
14
  chatId String
14
15
  currentState String @default("idle")
15
16
  updatedAt DateTime @updatedAt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "telemeister",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "TypeScript Telegram Bot Boilerplate with XState",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Global Command Handlers
3
+ *
4
+ * These commands work across all states unless overridden by state-specific
5
+ * command handlers defined in individual state handlers.
6
+ *
7
+ * Command handlers are checked BEFORE onResponse handlers and take priority.
8
+ * If a command handler returns a state, the bot transitions to that state.
9
+ * If a command handler returns void/undefined, the onResponse handler runs.
10
+ */
11
+
12
+ import { appBuilder, type AppContext } from 'telemeister/core';
13
+ import type { BotStateTransitions } from '../bot-state-types.js';
14
+
15
+ /**
16
+ * Global /start command
17
+ * Works in all states, returns user to welcome state
18
+ */
19
+ appBuilder.onCommand('start', async (context: AppContext): Promise<BotStateTransitions> => {
20
+ await context.reply('Welcome back! 👋');
21
+ return 'welcome';
22
+ });
23
+
24
+ /**
25
+ * Global /help command
26
+ * Shows help text but doesn't change state
27
+ */
28
+ appBuilder.onCommand('help', async (context: AppContext): Promise<void> => {
29
+ await context.reply(`
30
+ 🤖 *Available Commands*
31
+
32
+ /start - Start the bot
33
+ /help - Show this help message
34
+ /cancel - Cancel current operation
35
+ /settings - Open settings menu
36
+
37
+ Navigate using the buttons below.
38
+ `, { parse_mode: 'Markdown' });
39
+ });
40
+
41
+ /**
42
+ * Global /cancel command
43
+ * Cancels current operation and returns to main menu
44
+ */
45
+ appBuilder.onCommand('cancel', async (context: AppContext): Promise<BotStateTransitions | void> => {
46
+ // Different behavior based on current state
47
+ if (context.currentState === 'welcome') {
48
+ await context.reply('Nothing to cancel here!');
49
+ return; // Stay in current state
50
+ }
51
+
52
+ await context.reply('Operation cancelled. Returning to main menu...');
53
+ return 'mainMenu';
54
+ });
55
+
56
+ /**
57
+ * Example: State-specific command override
58
+ * In 'orderForm' state, /cancel behaves differently
59
+ *
60
+ * This would go in src/handlers/orderForm/index.ts:
61
+ *
62
+ * appBuilder
63
+ * .forState('orderForm')
64
+ * .onCommand('cancel', async (context) => {
65
+ * await context.reply('Cancel order? Your progress will be lost.');
66
+ * return 'confirmCancel';
67
+ * });
68
+ */
69
+
70
+ console.log('✅ Global commands registered: /start, /help, /cancel');
@@ -62,6 +62,7 @@ export async function getUserByTelegramId(telegramId: string): Promise<UserWithI
62
62
  */
63
63
  export async function createOrUpdateUser(data: {
64
64
  telegramId: string;
65
+ username?: string;
65
66
  chatId: string;
66
67
  currentState?: string;
67
68
  stateData?: Record<string, unknown>;
@@ -74,6 +75,7 @@ export async function createOrUpdateUser(data: {
74
75
  where: { telegramId: data.telegramId },
75
76
  data: {
76
77
  chatId: data.chatId,
78
+ ...(data.username !== undefined && { username: data.username }),
77
79
  ...(data.currentState && { currentState: data.currentState }),
78
80
  },
79
81
  include: { info: true },
@@ -102,6 +104,7 @@ export async function createOrUpdateUser(data: {
102
104
  const newUser = await prisma.user.create({
103
105
  data: {
104
106
  telegramId: data.telegramId,
107
+ username: data.username,
105
108
  chatId: data.chatId,
106
109
  currentState: data.currentState || 'idle',
107
110
  info: {
@@ -172,6 +175,7 @@ export const databaseAdapter: DatabaseAdapter = {
172
175
  return {
173
176
  id: user.id,
174
177
  telegramId: user.telegramId,
178
+ username: user.username,
175
179
  chatId: user.chatId,
176
180
  currentState: user.currentState,
177
181
  info: user.info,
@@ -180,6 +184,7 @@ export const databaseAdapter: DatabaseAdapter = {
180
184
 
181
185
  createOrUpdateUser: async (data: {
182
186
  telegramId: string;
187
+ username?: string;
183
188
  chatId: string;
184
189
  currentState?: string;
185
190
  stateData?: Record<string, unknown>;
@@ -188,6 +193,7 @@ export const databaseAdapter: DatabaseAdapter = {
188
193
  return {
189
194
  id: user.id,
190
195
  telegramId: user.telegramId,
196
+ username: user.username,
191
197
  chatId: user.chatId,
192
198
  currentState: user.currentState,
193
199
  info: user.info,
@@ -10,6 +10,7 @@ datasource db {
10
10
  model User {
11
11
  id Int @id @default(autoincrement())
12
12
  telegramId String @unique
13
+ username String?
13
14
  chatId String
14
15
  currentState String @default("idle")
15
16
  updatedAt DateTime @updatedAt