telemeister 0.3.6 → 0.3.10

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
@@ -282,10 +282,30 @@ The `ctx` property provides full access to Grammy's Context API:
282
282
  inline_keyboard: [[{ text: 'Click', callback_data: 'click' }]]
283
283
  }
284
284
  });
285
+
286
+ // Reply with Markdown formatting
287
+ await context.reply("*Bold*, _italic_, `code`, [link](https://example.com)", {
288
+ parse_mode: "Markdown",
289
+ });
290
+
285
291
  // Optionally return a state for immediate transition
286
292
  return "anotherState";
287
293
  })
288
294
 
295
+ // Called when user sends a bot command (e.g. /start, /help)
296
+ .onCommand("start", async (context) => {
297
+ await context.reply("*Welcome!* Use /help to see available commands.", {
298
+ parse_mode: "Markdown",
299
+ });
300
+ return "welcome";
301
+ })
302
+ .onCommand("help", async (context) => {
303
+ await context.reply(
304
+ "*Available commands:*\n/start – Start the bot\n/help – Show this message",
305
+ { parse_mode: "Markdown" }
306
+ );
307
+ })
308
+
289
309
  // Called when user sends any update (message, callback, poll, etc.)
290
310
  .onResponse(async (context) => {
291
311
  // Text message
@@ -300,18 +320,18 @@ The `ctx` property provides full access to Grammy's Context API:
300
320
  await context.reply("Button clicked!");
301
321
  return "clicked";
302
322
  }
303
-
323
+
304
324
  // Photo message
305
325
  if (context.ctx.message?.photo) {
306
326
  await context.ctx.replyWithPhoto(context.ctx.message.photo[0].file_id);
307
327
  }
308
-
328
+
309
329
  // Poll response
310
330
  if (context.ctx.pollAnswer) {
311
331
  const optionIds = context.ctx.pollAnswer.option_ids;
312
332
  await context.reply(`You selected options: ${optionIds.join(', ')}`);
313
333
  }
314
-
334
+
315
335
  // Return void to stay in current state
316
336
  })
317
337
  ```
@@ -1087,10 +1087,15 @@ function renderTemplate(templateName, data = {}) {
1087
1087
  function getPackageManager() {
1088
1088
  return "npm";
1089
1089
  }
1090
- async function createBot(botName) {
1090
+ async function createBot(botName, database) {
1091
1091
  if (!botName) {
1092
1092
  console.error("\u274C Error: Bot name is required");
1093
- console.error("Usage: telemeister create-bot <bot-name>");
1093
+ console.error("Usage: telemeister create-bot <bot-name> --with-database=sqlite|mysql");
1094
+ process.exit(1);
1095
+ }
1096
+ if (!database) {
1097
+ console.error("\u274C Error: --with-database flag is required");
1098
+ console.error("Usage: telemeister create-bot <bot-name> --with-database=sqlite|mysql");
1094
1099
  process.exit(1);
1095
1100
  }
1096
1101
  if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(botName)) {
@@ -1112,15 +1117,19 @@ async function createBot(botName) {
1112
1117
  fs3.mkdirSync(path3.join(targetDir, "prisma"), { recursive: true });
1113
1118
  fs3.writeFileSync(path3.join(targetDir, ".gitignore"), loadTemplate("gitignore.ejs"));
1114
1119
  fs3.writeFileSync(path3.join(targetDir, "tsconfig.json"), loadTemplate("tsconfig.json.ejs"));
1115
- fs3.writeFileSync(path3.join(targetDir, ".env.example"), loadTemplate("env.example.ejs"));
1120
+ fs3.writeFileSync(path3.join(targetDir, ".env.example"), renderTemplate("env.example.ejs", { database }));
1116
1121
  fs3.writeFileSync(path3.join(targetDir, "bot.json"), loadTemplate("bot.json.ejs"));
1117
1122
  fs3.writeFileSync(path3.join(targetDir, "src", "index.ts"), loadTemplate("index.ts.ejs"));
1118
- fs3.writeFileSync(path3.join(targetDir, "prisma", "schema.prisma"), loadTemplate("prisma-schema.prisma.ejs"));
1123
+ fs3.writeFileSync(path3.join(targetDir, "prisma", "schema.prisma"), renderTemplate("prisma-schema.prisma.ejs", { database }));
1119
1124
  fs3.writeFileSync(path3.join(targetDir, "prisma.config.ts"), loadTemplate("prisma.config.ts.ejs"));
1120
1125
  fs3.mkdirSync(path3.join(targetDir, "src", "lib"), { recursive: true });
1121
- fs3.writeFileSync(path3.join(targetDir, "src", "lib", "database.ts"), loadTemplate("database.ts.ejs"));
1126
+ fs3.writeFileSync(path3.join(targetDir, "src", "lib", "database.ts"), renderTemplate("database.ts.ejs", { database }));
1122
1127
  fs3.writeFileSync(path3.join(targetDir, "README.md"), renderTemplate("README.md.ejs", { botName }));
1123
- fs3.writeFileSync(path3.join(targetDir, "package.json"), renderTemplate("package.json.ejs", { botName, telemeisterVersion: getPackageVersion() }));
1128
+ fs3.writeFileSync(path3.join(targetDir, "package.json"), renderTemplate("package.json.ejs", {
1129
+ botName,
1130
+ telemeisterVersion: getPackageVersion(),
1131
+ database
1132
+ }));
1124
1133
  process.chdir(targetDir);
1125
1134
  await stateSync();
1126
1135
  console.log("\n\u{1F4E6} Installing dependencies...");
@@ -1132,7 +1141,7 @@ async function createBot(botName) {
1132
1141
  `);
1133
1142
  process.exit(1);
1134
1143
  }
1135
- const tempDbUrl = "file:./dev.db";
1144
+ const tempDbUrl = database === "mysql" ? "mysql://root:root@localhost:3306/temp_db" : "file:./dev.db";
1136
1145
  console.log("\u{1F5C4}\uFE0F Generating Prisma client...");
1137
1146
  try {
1138
1147
  execSync(`${pmRun} db:generate`, {
@@ -1169,11 +1178,30 @@ async function createBot(botName) {
1169
1178
  var command = process.argv[2];
1170
1179
  var arg1 = process.argv[3];
1171
1180
  var arg2 = process.argv[4];
1181
+ function parseCreateBotArgs() {
1182
+ const botName = arg1;
1183
+ let database;
1184
+ for (let i = 3; i < process.argv.length; i++) {
1185
+ const arg = process.argv[i];
1186
+ if (arg.startsWith("--with-database=")) {
1187
+ const value = arg.split("=")[1];
1188
+ if (value === "mysql" || value === "sqlite") {
1189
+ database = value;
1190
+ } else {
1191
+ console.error(`\u274C Error: Invalid database "${value}". Must be "mysql" or "sqlite"`);
1192
+ process.exit(1);
1193
+ }
1194
+ }
1195
+ }
1196
+ return { botName, database };
1197
+ }
1172
1198
  async function runCLI() {
1173
1199
  switch (command) {
1174
- case "create-bot":
1175
- await createBot(arg1);
1200
+ case "create-bot": {
1201
+ const { botName, database } = parseCreateBotArgs();
1202
+ await createBot(botName, database);
1176
1203
  break;
1204
+ }
1177
1205
  case "state:add":
1178
1206
  await stateAdd(arg1);
1179
1207
  break;
@@ -1193,7 +1221,7 @@ async function runCLI() {
1193
1221
  console.error("\u274C Unknown command:", command);
1194
1222
  console.error("");
1195
1223
  console.error("Available commands:");
1196
- console.error(" create-bot <name> - Create a new bot project");
1224
+ console.error(" create-bot <name> --with-database=sqlite|mysql - Create a new bot project");
1197
1225
  console.error(" state:add <name> - Add a new state + create handler");
1198
1226
  console.error(" state:delete <name> - Delete a state (with safety checks)");
1199
1227
  console.error(" state:sync - Sync types and create missing handlers");
package/dist/cli/cli.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Telemeister CLI
4
4
  *
5
5
  * Available commands:
6
- * create-bot <name> - Create a new bot project
6
+ * create-bot <name> --with-database=sqlite|mysql - Create a new bot project
7
7
  * state:add <name> - Add a new state + create handler
8
8
  * state:delete <name> - Delete a state (with safety checks)
9
9
  * state:sync - Sync types and create missing handlers
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAeH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAkC5C"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAuCH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC5C"}
package/dist/cli/cli.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Telemeister CLI
4
4
  *
5
5
  * Available commands:
6
- * create-bot <name> - Create a new bot project
6
+ * create-bot <name> --with-database=sqlite|mysql - Create a new bot project
7
7
  * state:add <name> - Add a new state + create handler
8
8
  * state:delete <name> - Delete a state (with safety checks)
9
9
  * state:sync - Sync types and create missing handlers
@@ -15,11 +15,32 @@ import { createBot } from './create-bot.js';
15
15
  const command = process.argv[2];
16
16
  const arg1 = process.argv[3];
17
17
  const arg2 = process.argv[4];
18
+ function parseCreateBotArgs() {
19
+ const botName = arg1;
20
+ let database;
21
+ // Check for --with-database flag in any position after bot name
22
+ for (let i = 3; i < process.argv.length; i++) {
23
+ const arg = process.argv[i];
24
+ if (arg.startsWith('--with-database=')) {
25
+ const value = arg.split('=')[1];
26
+ if (value === 'mysql' || value === 'sqlite') {
27
+ database = value;
28
+ }
29
+ else {
30
+ console.error(`❌ Error: Invalid database "${value}". Must be "mysql" or "sqlite"`);
31
+ process.exit(1);
32
+ }
33
+ }
34
+ }
35
+ return { botName, database };
36
+ }
18
37
  export async function runCLI() {
19
38
  switch (command) {
20
- case 'create-bot':
21
- await createBot(arg1);
39
+ case 'create-bot': {
40
+ const { botName, database } = parseCreateBotArgs();
41
+ await createBot(botName, database);
22
42
  break;
43
+ }
23
44
  case 'state:add':
24
45
  await stateAdd(arg1);
25
46
  break;
@@ -39,7 +60,7 @@ export async function runCLI() {
39
60
  console.error('❌ Unknown command:', command);
40
61
  console.error('');
41
62
  console.error('Available commands:');
42
- console.error(' create-bot <name> - Create a new bot project');
63
+ console.error(' create-bot <name> --with-database=sqlite|mysql - Create a new bot project');
43
64
  console.error(' state:add <name> - Add a new state + create handler');
44
65
  console.error(' state:delete <name> - Delete a state (with safety checks)');
45
66
  console.error(' state:sync - Sync types and create missing handlers');
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,aAAa,EACb,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,YAAY;YACf,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,WAAW;YACd,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,cAAc;YACjB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,YAAY;YACf,MAAM,SAAS,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,sBAAsB;YACzB,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM;QACR,KAAK,yBAAyB;YAC5B,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAC9F,OAAO,CAAC,KAAK,CACX,iFAAiF,CAClF,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Create Bot Project scaffolding
3
3
  */
4
- export declare function createBot(botName: string | undefined): Promise<void>;
4
+ export declare function createBot(botName: string | undefined, database: 'mysql' | 'sqlite' | undefined): Promise<void>;
5
5
  //# sourceMappingURL=create-bot.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"create-bot.d.ts","sourceRoot":"","sources":["../../src/cli/create-bot.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2CH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACvC,OAAO,CAAC,IAAI,CAAC,CA4Hf"}
@@ -35,10 +35,15 @@ function getPackageManager() {
35
35
  // Always use npm for native dependency compilation (better-sqlite3)
36
36
  return 'npm';
37
37
  }
38
- export async function createBot(botName) {
38
+ export async function createBot(botName, database) {
39
39
  if (!botName) {
40
40
  console.error('❌ Error: Bot name is required');
41
- console.error('Usage: telemeister create-bot <bot-name>');
41
+ console.error('Usage: telemeister create-bot <bot-name> --with-database=sqlite|mysql');
42
+ process.exit(1);
43
+ }
44
+ if (!database) {
45
+ console.error('❌ Error: --with-database flag is required');
46
+ console.error('Usage: telemeister create-bot <bot-name> --with-database=sqlite|mysql');
42
47
  process.exit(1);
43
48
  }
44
49
  if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(botName)) {
@@ -61,18 +66,22 @@ export async function createBot(botName) {
61
66
  // Create files from templates
62
67
  fs.writeFileSync(path.join(targetDir, '.gitignore'), loadTemplate('gitignore.ejs'));
63
68
  fs.writeFileSync(path.join(targetDir, 'tsconfig.json'), loadTemplate('tsconfig.json.ejs'));
64
- fs.writeFileSync(path.join(targetDir, '.env.example'), loadTemplate('env.example.ejs'));
69
+ fs.writeFileSync(path.join(targetDir, '.env.example'), renderTemplate('env.example.ejs', { database }));
65
70
  fs.writeFileSync(path.join(targetDir, 'bot.json'), loadTemplate('bot.json.ejs'));
66
71
  fs.writeFileSync(path.join(targetDir, 'src', 'index.ts'), loadTemplate('index.ts.ejs'));
67
- fs.writeFileSync(path.join(targetDir, 'prisma', 'schema.prisma'), loadTemplate('prisma-schema.prisma.ejs'));
72
+ fs.writeFileSync(path.join(targetDir, 'prisma', 'schema.prisma'), renderTemplate('prisma-schema.prisma.ejs', { database }));
68
73
  fs.writeFileSync(path.join(targetDir, 'prisma.config.ts'), loadTemplate('prisma.config.ts.ejs'));
69
74
  // Create database file
70
75
  fs.mkdirSync(path.join(targetDir, 'src', 'lib'), { recursive: true });
71
- fs.writeFileSync(path.join(targetDir, 'src', 'lib', 'database.ts'), loadTemplate('database.ts.ejs'));
76
+ fs.writeFileSync(path.join(targetDir, 'src', 'lib', 'database.ts'), renderTemplate('database.ts.ejs', { database }));
72
77
  // Note: Bot runtime files (session.ts, polling.ts, webhook.ts) are now provided by the framework
73
78
  // in 'telemeister/core/bot' and don't need to be generated
74
79
  fs.writeFileSync(path.join(targetDir, 'README.md'), renderTemplate('README.md.ejs', { botName }));
75
- fs.writeFileSync(path.join(targetDir, 'package.json'), renderTemplate('package.json.ejs', { botName, telemeisterVersion: getPackageVersion() }));
80
+ fs.writeFileSync(path.join(targetDir, 'package.json'), renderTemplate('package.json.ejs', {
81
+ botName,
82
+ telemeisterVersion: getPackageVersion(),
83
+ database,
84
+ }));
76
85
  // Sync handlers and types from bot.json
77
86
  process.chdir(targetDir);
78
87
  await stateSync();
@@ -86,7 +95,8 @@ export async function createBot(botName) {
86
95
  console.error(`❌ Failed to install dependencies. Please run "${pmInstall}" manually.\n`);
87
96
  process.exit(1);
88
97
  }
89
- const tempDbUrl = 'file:./dev.db';
98
+ // Use appropriate temp database URL based on database type
99
+ const tempDbUrl = database === 'mysql' ? 'mysql://root:root@localhost:3306/temp_db' : 'file:./dev.db';
90
100
  console.log('🗄️ Generating Prisma client...');
91
101
  try {
92
102
  execSync(`${pmRun} db:generate`, {
@@ -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,CAqGhE;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,CAoGhE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E"}
@@ -33,14 +33,6 @@ export function createBot(config) {
33
33
  const telegramIdStr = telegramId.toString();
34
34
  const chatId = ctx.chat?.id.toString() ?? ctx.session?.chatId;
35
35
  const username = ctx.from?.username;
36
- // Debug logging
37
- console.log('[Telemeister Debug] Polling middleware:', {
38
- telegramId: telegramIdStr,
39
- chatId,
40
- username,
41
- hasFrom: !!ctx.from,
42
- fromKeys: ctx.from ? Object.keys(ctx.from) : null,
43
- });
44
36
  if (!chatId) {
45
37
  return next();
46
38
  }
@@ -73,12 +65,19 @@ export function createBot(config) {
73
65
  // Check for commands first
74
66
  const text = ctx.message?.text?.trim();
75
67
  let nextState = undefined;
68
+ let commandHandled = false;
76
69
  if (text && text.startsWith('/')) {
77
70
  const command = text.split(' ')[0].slice(1).toLowerCase(); // Remove leading slash
78
- nextState = await appBuilder.executeCommand(command, session.currentState, handlerContext);
71
+ const result = await appBuilder.executeCommand(command, session.currentState, handlerContext);
72
+ if (result.handled) {
73
+ // Command was handled - use nextState if provided, otherwise stop processing
74
+ nextState = result.nextState;
75
+ commandHandled = true;
76
+ }
77
+ // If not handled, fall through to onResponse
79
78
  }
80
- // If no command handled or command returned void, execute onResponse handler
81
- if (nextState === undefined) {
79
+ // If no command handled, execute onResponse handler
80
+ if (!commandHandled && nextState === undefined) {
82
81
  nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
83
82
  }
84
83
  // Handle state transition (call onEnter even for same state)
@@ -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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"}
@@ -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,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAyDxB"}
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,CAgDxB"}
@@ -57,16 +57,8 @@ export async function getOrCreateSession(telegramId, username, chatId, database)
57
57
  const stateData = existing.info?.stateData
58
58
  ? JSON.parse(existing.info.stateData)
59
59
  : {};
60
- // Debug logging
61
- console.log('[Telemeister Debug] getOrCreateSession:', {
62
- telegramId,
63
- usernameFromCtx: username,
64
- usernameInDb: existing.username,
65
- willUpdate: username !== undefined && existing.username !== username,
66
- });
67
60
  // Update username if it has changed
68
61
  if (username !== undefined && existing.username !== username) {
69
- console.log('[Telemeister Debug] Updating username from', existing.username, 'to', username);
70
62
  await database.createOrUpdateUser({
71
63
  telegramId,
72
64
  username,
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/core/bot/session.ts"],"names":[],"mappings":"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"}
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,oCAAoC;QACpC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC7D,MAAM,QAAQ,CAAC,kBAAkB,CAAC;gBAChC,UAAU;gBACV,QAAQ;gBACR,MAAM;gBACN,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED,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"}
@@ -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,CAqG7F;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,CAoG7F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD3E;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"}
@@ -34,14 +34,6 @@ export function createBot(config) {
34
34
  const telegramIdStr = telegramId.toString();
35
35
  const chatId = ctx.chat?.id.toString() ?? ctx.session?.chatId;
36
36
  const username = ctx.from?.username;
37
- // Debug logging
38
- console.log('[Telemeister Debug] Webhook middleware:', {
39
- telegramId: telegramIdStr,
40
- chatId,
41
- username,
42
- hasFrom: !!ctx.from,
43
- fromKeys: ctx.from ? Object.keys(ctx.from) : null,
44
- });
45
37
  if (!chatId) {
46
38
  return next();
47
39
  }
@@ -74,12 +66,19 @@ export function createBot(config) {
74
66
  // Check for commands first
75
67
  const text = ctx.message?.text?.trim();
76
68
  let nextState = undefined;
69
+ let commandHandled = false;
77
70
  if (text && text.startsWith('/')) {
78
71
  const command = text.split(' ')[0].slice(1).toLowerCase(); // Remove leading slash
79
- nextState = await appBuilder.executeCommand(command, session.currentState, handlerContext);
72
+ const result = await appBuilder.executeCommand(command, session.currentState, handlerContext);
73
+ if (result.handled) {
74
+ // Command was handled - use nextState if provided, otherwise stop processing
75
+ nextState = result.nextState;
76
+ commandHandled = true;
77
+ }
78
+ // If not handled, fall through to onResponse
80
79
  }
81
- // If no command handled or command returned void, execute onResponse handler
82
- if (nextState === undefined) {
80
+ // If no command handled, execute onResponse handler
81
+ if (!commandHandled && nextState === undefined) {
83
82
  nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
84
83
  }
85
84
  // Handle state transition (call onEnter even for same state)
@@ -111,7 +110,8 @@ export async function startWebhookMode(config) {
111
110
  });
112
111
  });
113
112
  // Set up webhook endpoint using Grammy's webhookCallback
114
- app.use('/webhook', webhookCallback(bot, 'express'));
113
+ // Note: express.json() is required for webhookCallback to parse request body
114
+ app.use('/webhook', express.json(), webhookCallback(bot, 'express'));
115
115
  // Start server
116
116
  app.listen(port, async () => {
117
117
  console.log(`🤖 Bot started in webhook mode`);
@@ -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, CommandHandler } from './types.js';
1
+ import type { BotHandlerContext, BotState, EnterHandler, ResponseHandler, StateHandlers, CommandHandler, CommandResult } from './types.js';
2
2
  /**
3
3
  * State Builder - Fluent API for configuring a single state
4
4
  *
@@ -169,14 +169,18 @@ export declare class BotBuilder<TState extends BotState = BotState> {
169
169
  /**
170
170
  * Execute a command handler
171
171
  * @internal Called by the bot handlers
172
- * @returns The next state to transition to, or void
172
+ * @returns CommandResult indicating if command was handled and next state
173
173
  *
174
174
  * Priority order:
175
175
  * 1. State-specific command handler (if exists)
176
176
  * 2. Global command handler (if exists)
177
177
  * 3. None - let state onResponse handle it
178
178
  */
179
- executeCommand(command: string, currentState: TState, context: BotHandlerContext<TState>): Promise<TState | void>;
179
+ executeCommand(command: string, currentState: TState, context: BotHandlerContext<TState>): Promise<CommandResult<TState>>;
180
+ /**
181
+ * Normalize command handler return value to CommandResult
182
+ */
183
+ private normalizeCommandResult;
180
184
  /**
181
185
  * Check if a command has a registered handler (global or for specific state)
182
186
  */
@@ -191,5 +195,5 @@ export declare class BotBuilder<TState extends BotState = BotState> {
191
195
  * ```
192
196
  */
193
197
  export declare const botBuilder: BotBuilder<string>;
194
- export type { BotHandlerContext, BotState, EnterHandler, ResponseHandler, CommandHandler, } from './types.js';
198
+ export type { BotHandlerContext, BotState, EnterHandler, ResponseHandler, CommandHandler, CommandResult, } from './types.js';
195
199
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"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"}
@@ -256,7 +256,7 @@ export class BotBuilder {
256
256
  /**
257
257
  * Execute a command handler
258
258
  * @internal Called by the bot handlers
259
- * @returns The next state to transition to, or void
259
+ * @returns CommandResult indicating if command was handled and next state
260
260
  *
261
261
  * Priority order:
262
262
  * 1. State-specific command handler (if exists)
@@ -269,13 +269,32 @@ export class BotBuilder {
269
269
  const stateHandlers = this.handlers.get(currentState);
270
270
  const stateCommandHandler = stateHandlers?.onCommand?.get(normalizedCommand);
271
271
  if (stateCommandHandler) {
272
- return await stateCommandHandler(context);
272
+ const result = await stateCommandHandler(context);
273
+ return this.normalizeCommandResult(result);
273
274
  }
274
275
  // Fall back to global command handler
275
276
  const globalHandler = this.globalCommandHandlers.get(normalizedCommand);
276
277
  if (globalHandler) {
277
- return await globalHandler(context);
278
+ const result = await globalHandler(context);
279
+ return this.normalizeCommandResult(result);
280
+ }
281
+ // No handler found
282
+ return { handled: false };
283
+ }
284
+ /**
285
+ * Normalize command handler return value to CommandResult
286
+ */
287
+ normalizeCommandResult(result) {
288
+ if (result === undefined || result === null) {
289
+ // Handler returned void - treat as handled with no state change
290
+ return { handled: true };
291
+ }
292
+ if (typeof result === 'object' && 'handled' in result) {
293
+ // Already a CommandResult
294
+ return result;
278
295
  }
296
+ // Handler returned a state string - treat as handled with state transition
297
+ return { handled: true, nextState: result };
279
298
  }
280
299
  /**
281
300
  * Check if a command has a registered handler (global or for specific 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,7 +16,13 @@ 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
+ export type CommandResult<TState extends BotState = BotState> = {
20
+ handled: true;
21
+ nextState?: TState;
22
+ } | {
23
+ handled: false;
24
+ };
25
+ export type CommandHandler<TState extends BotState = BotState> = (context: BotHandlerContext<TState>) => Promise<CommandResult<TState> | TState | void>;
20
26
  export interface StateHandlers<TState extends BotState = BotState> {
21
27
  onEnter?: EnterHandler<TState>;
22
28
  onResponse?: ResponseHandler<TState>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -3,36 +3,38 @@
3
3
  *
4
4
  * Implements DatabaseAdapter interface for the Telemeister framework.
5
5
  * Uses Prisma ORM 7.x with driver adapters for database operations.
6
- *
7
- * Switch between SQLite and MySQL by changing DATABASE_URL in .env:
8
- * - SQLite: DATABASE_URL="file:./dev.db"
9
- * - MySQL: DATABASE_URL="mysql://user:password@localhost:3306/dbname"
10
- *
11
- * Note: When switching providers, update the provider in prisma/schema.prisma:
12
- * - SQLite: provider = "sqlite"
13
- * - MySQL: provider = "mysql"
14
6
  */
15
7
 
16
8
  import 'dotenv/config';
9
+ <% if (database === 'mysql') { -%>
10
+ import { PrismaMariaDB } from '@prisma/adapter-mariadb';
11
+ import mariadb from 'mariadb';
12
+ <% } else { -%>
17
13
  import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
14
+ <% } -%>
18
15
  import { PrismaClient, User, UserInfo } from '../generated/prisma/client.js';
19
16
  import type { DatabaseAdapter, UserData } from 'telemeister/core/bot';
20
17
 
21
- // Determine database provider from URL
18
+ <% if (database === 'mysql') { -%>
19
+ // MySQL connection pool
20
+ const pool = mariadb.createPool({
21
+ host: process.env.DB_HOST || 'localhost',
22
+ port: parseInt(process.env.DB_PORT || '3306', 10),
23
+ user: process.env.DB_USER || 'root',
24
+ password: process.env.DB_PASSWORD || 'root',
25
+ database: process.env.DB_NAME || 'telemeister',
26
+ connectionLimit: 10,
27
+ });
28
+
29
+ // Create MariaDB adapter
30
+ const adapter = new PrismaMariaDB(pool);
31
+ <% } else { -%>
32
+ // SQLite adapter
22
33
  const databaseUrl = process.env.DATABASE_URL || 'file:./dev.db';
23
- const isMysql = databaseUrl.startsWith('mysql:');
24
-
25
- // Create adapter based on database type
26
- // For now, SQLite is fully supported. MySQL adapter requires additional setup.
27
- const adapter = isMysql
28
- ? (() => {
29
- throw new Error(
30
- 'MySQL adapter not yet configured. Please configure @prisma/adapter-mariadb in src/lib/database.ts'
31
- );
32
- })()
33
- : new PrismaBetterSqlite3({
34
- url: databaseUrl,
35
- });
34
+ const adapter = new PrismaBetterSqlite3({
35
+ url: databaseUrl,
36
+ });
37
+ <% } -%>
36
38
 
37
39
  // Prisma client instance with adapter
38
40
  const prisma = new PrismaClient({ adapter });
@@ -67,21 +69,9 @@ export async function createOrUpdateUser(data: {
67
69
  currentState?: string;
68
70
  stateData?: Record<string, unknown>;
69
71
  }): Promise<UserWithInfo> {
70
- console.log('[Telemeister Debug] createOrUpdateUser called:', {
71
- telegramId: data.telegramId,
72
- username: data.username,
73
- chatId: data.chatId,
74
- });
75
-
76
72
  const existingUser = await getUserByTelegramId(data.telegramId);
77
73
 
78
74
  if (existingUser) {
79
- console.log('[Telemeister Debug] Existing user found:', {
80
- id: existingUser.id,
81
- username: existingUser.username,
82
- willUpdateUsername: data.username !== undefined,
83
- });
84
-
85
75
  // Update existing user
86
76
  const updatedUser = await prisma.user.update({
87
77
  where: { telegramId: data.telegramId },
@@ -93,11 +83,6 @@ export async function createOrUpdateUser(data: {
93
83
  include: { info: true },
94
84
  });
95
85
 
96
- console.log('[Telemeister Debug] User updated:', {
97
- id: updatedUser.id,
98
- username: updatedUser.username,
99
- });
100
-
101
86
  // Update or create user info if stateData provided
102
87
  if (data.stateData) {
103
88
  await prisma.userInfo.upsert({
@@ -178,6 +163,9 @@ export async function updateUserState(
178
163
  */
179
164
  export async function disconnectDB(): Promise<void> {
180
165
  await prisma.$disconnect();
166
+ <% if (database === 'mysql') { -%>
167
+ await pool.end();
168
+ <% } -%>
181
169
  }
182
170
 
183
171
  /**
@@ -188,7 +176,7 @@ export const databaseAdapter: DatabaseAdapter = {
188
176
  getUserByTelegramId: async (telegramId: string): Promise<UserData | null> => {
189
177
  const user = await getUserByTelegramId(telegramId);
190
178
  if (!user) return null;
191
-
179
+
192
180
  return {
193
181
  id: user.id,
194
182
  telegramId: user.telegramId,
@@ -1,5 +1,14 @@
1
1
  # Telegram Bot Configuration
2
2
  BOT_TOKEN=your_bot_token_here
3
3
 
4
- # Database (SQLite for development)
4
+ <% if (database === 'mysql') { -%>
5
+ # Database (MySQL)
6
+ DB_HOST=localhost
7
+ DB_PORT=3306
8
+ DB_USER=root
9
+ DB_PASSWORD=root
10
+ DB_NAME=telemeister
11
+ <% } else { -%>
12
+ # Database (SQLite)
5
13
  DATABASE_URL=file:./dev.db
14
+ <% } -%>
@@ -23,9 +23,14 @@
23
23
  "state:transition:delete": "telemeister state:transition:delete"
24
24
  },
25
25
  "dependencies": {
26
+ <% if (database === 'mysql') { -%>
27
+ "@prisma/adapter-mariadb": "^7.0.0",
28
+ "mariadb": "^3.4.0",
29
+ <% } else { -%>
26
30
  "@prisma/adapter-better-sqlite3": "^7.0.0",
27
- "@prisma/client": "^7.4.0",
28
31
  "better-sqlite3": "^12.6.2",
32
+ <% } -%>
33
+ "@prisma/client": "^7.4.0",
29
34
  "dotenv": "^16.4.7",
30
35
  "express": "^4.21.2",
31
36
  "grammy": "^1.35.1",
@@ -4,7 +4,7 @@ generator client {
4
4
  }
5
5
 
6
6
  datasource db {
7
- provider = "sqlite"
7
+ provider = "<%= database %>"
8
8
  }
9
9
 
10
10
  model User {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "telemeister",
3
- "version": "0.3.6",
3
+ "version": "0.3.10",
4
4
  "description": "TypeScript Telegram Bot Boilerplate with XState",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",
@@ -33,6 +33,18 @@
33
33
  "README.md",
34
34
  "LICENSE"
35
35
  ],
36
+ "scripts": {
37
+ "build": "tsc && rm -rf dist/templates && cp -r src/templates dist/templates && pnpm run build:cli",
38
+ "build:cli": "esbuild dist/cli/cli.js --bundle --platform=node --format=esm --outfile=bin/telemeister-cli.js --external:typescript --external:tsx --external:prisma",
39
+ "example:recreate": "rm -rf examples/demo-bot && tsx src/cli/cli.ts create-bot demo-bot && mv demo-bot examples/demo-bot && npm pkg set --prefix examples/demo-bot dependencies.telemeister='workspace:*' && rm -rf examples/demo-bot/node_modules examples/demo-bot/pnpm-lock.yaml examples/demo-bot/dev.db examples/demo-bot/.env",
40
+ "prepublishOnly": "pnpm run build",
41
+ "prepare": "husky",
42
+ "lint": "eslint src/ scripts/",
43
+ "lint:fix": "eslint src/ scripts/ --fix",
44
+ "format": "prettier --write .",
45
+ "format:check": "prettier --check .",
46
+ "release": "./scripts/release.sh"
47
+ },
36
48
  "workspaces": [
37
49
  "examples/*"
38
50
  ],
@@ -88,15 +100,5 @@
88
100
  "tsx": "^4.21.0",
89
101
  "typescript": "^5.9.3",
90
102
  "typescript-eslint": "^8.39.0"
91
- },
92
- "scripts": {
93
- "build": "tsc && rm -rf dist/templates && cp -r src/templates dist/templates && pnpm run build:cli",
94
- "build:cli": "esbuild dist/cli/cli.js --bundle --platform=node --format=esm --outfile=bin/telemeister-cli.js --external:typescript --external:tsx --external:prisma",
95
- "example:recreate": "rm -rf examples/demo-bot && tsx src/cli/cli.ts create-bot demo-bot && mv demo-bot examples/demo-bot && npm pkg set --prefix examples/demo-bot dependencies.telemeister='workspace:*' && rm -rf examples/demo-bot/node_modules examples/demo-bot/pnpm-lock.yaml examples/demo-bot/dev.db examples/demo-bot/.env",
96
- "lint": "eslint src/ scripts/",
97
- "lint:fix": "eslint src/ scripts/ --fix",
98
- "format": "prettier --write .",
99
- "format:check": "prettier --check .",
100
- "release": "./scripts/release.sh"
101
103
  }
102
- }
104
+ }
@@ -3,36 +3,38 @@
3
3
  *
4
4
  * Implements DatabaseAdapter interface for the Telemeister framework.
5
5
  * Uses Prisma ORM 7.x with driver adapters for database operations.
6
- *
7
- * Switch between SQLite and MySQL by changing DATABASE_URL in .env:
8
- * - SQLite: DATABASE_URL="file:./dev.db"
9
- * - MySQL: DATABASE_URL="mysql://user:password@localhost:3306/dbname"
10
- *
11
- * Note: When switching providers, update the provider in prisma/schema.prisma:
12
- * - SQLite: provider = "sqlite"
13
- * - MySQL: provider = "mysql"
14
6
  */
15
7
 
16
8
  import 'dotenv/config';
9
+ <% if (database === 'mysql') { -%>
10
+ import { PrismaMariaDB } from '@prisma/adapter-mariadb';
11
+ import mariadb from 'mariadb';
12
+ <% } else { -%>
17
13
  import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
14
+ <% } -%>
18
15
  import { PrismaClient, User, UserInfo } from '../generated/prisma/client.js';
19
16
  import type { DatabaseAdapter, UserData } from 'telemeister/core/bot';
20
17
 
21
- // Determine database provider from URL
18
+ <% if (database === 'mysql') { -%>
19
+ // MySQL connection pool
20
+ const pool = mariadb.createPool({
21
+ host: process.env.DB_HOST || 'localhost',
22
+ port: parseInt(process.env.DB_PORT || '3306', 10),
23
+ user: process.env.DB_USER || 'root',
24
+ password: process.env.DB_PASSWORD || 'root',
25
+ database: process.env.DB_NAME || 'telemeister',
26
+ connectionLimit: 10,
27
+ });
28
+
29
+ // Create MariaDB adapter
30
+ const adapter = new PrismaMariaDB(pool);
31
+ <% } else { -%>
32
+ // SQLite adapter
22
33
  const databaseUrl = process.env.DATABASE_URL || 'file:./dev.db';
23
- const isMysql = databaseUrl.startsWith('mysql:');
24
-
25
- // Create adapter based on database type
26
- // For now, SQLite is fully supported. MySQL adapter requires additional setup.
27
- const adapter = isMysql
28
- ? (() => {
29
- throw new Error(
30
- 'MySQL adapter not yet configured. Please configure @prisma/adapter-mariadb in src/lib/database.ts'
31
- );
32
- })()
33
- : new PrismaBetterSqlite3({
34
- url: databaseUrl,
35
- });
34
+ const adapter = new PrismaBetterSqlite3({
35
+ url: databaseUrl,
36
+ });
37
+ <% } -%>
36
38
 
37
39
  // Prisma client instance with adapter
38
40
  const prisma = new PrismaClient({ adapter });
@@ -67,21 +69,9 @@ export async function createOrUpdateUser(data: {
67
69
  currentState?: string;
68
70
  stateData?: Record<string, unknown>;
69
71
  }): Promise<UserWithInfo> {
70
- console.log('[Telemeister Debug] createOrUpdateUser called:', {
71
- telegramId: data.telegramId,
72
- username: data.username,
73
- chatId: data.chatId,
74
- });
75
-
76
72
  const existingUser = await getUserByTelegramId(data.telegramId);
77
73
 
78
74
  if (existingUser) {
79
- console.log('[Telemeister Debug] Existing user found:', {
80
- id: existingUser.id,
81
- username: existingUser.username,
82
- willUpdateUsername: data.username !== undefined,
83
- });
84
-
85
75
  // Update existing user
86
76
  const updatedUser = await prisma.user.update({
87
77
  where: { telegramId: data.telegramId },
@@ -93,11 +83,6 @@ export async function createOrUpdateUser(data: {
93
83
  include: { info: true },
94
84
  });
95
85
 
96
- console.log('[Telemeister Debug] User updated:', {
97
- id: updatedUser.id,
98
- username: updatedUser.username,
99
- });
100
-
101
86
  // Update or create user info if stateData provided
102
87
  if (data.stateData) {
103
88
  await prisma.userInfo.upsert({
@@ -178,6 +163,9 @@ export async function updateUserState(
178
163
  */
179
164
  export async function disconnectDB(): Promise<void> {
180
165
  await prisma.$disconnect();
166
+ <% if (database === 'mysql') { -%>
167
+ await pool.end();
168
+ <% } -%>
181
169
  }
182
170
 
183
171
  /**
@@ -188,7 +176,7 @@ export const databaseAdapter: DatabaseAdapter = {
188
176
  getUserByTelegramId: async (telegramId: string): Promise<UserData | null> => {
189
177
  const user = await getUserByTelegramId(telegramId);
190
178
  if (!user) return null;
191
-
179
+
192
180
  return {
193
181
  id: user.id,
194
182
  telegramId: user.telegramId,
@@ -1,5 +1,14 @@
1
1
  # Telegram Bot Configuration
2
2
  BOT_TOKEN=your_bot_token_here
3
3
 
4
- # Database (SQLite for development)
4
+ <% if (database === 'mysql') { -%>
5
+ # Database (MySQL)
6
+ DB_HOST=localhost
7
+ DB_PORT=3306
8
+ DB_USER=root
9
+ DB_PASSWORD=root
10
+ DB_NAME=telemeister
11
+ <% } else { -%>
12
+ # Database (SQLite)
5
13
  DATABASE_URL=file:./dev.db
14
+ <% } -%>
@@ -23,9 +23,14 @@
23
23
  "state:transition:delete": "telemeister state:transition:delete"
24
24
  },
25
25
  "dependencies": {
26
+ <% if (database === 'mysql') { -%>
27
+ "@prisma/adapter-mariadb": "^7.0.0",
28
+ "mariadb": "^3.4.0",
29
+ <% } else { -%>
26
30
  "@prisma/adapter-better-sqlite3": "^7.0.0",
27
- "@prisma/client": "^7.4.0",
28
31
  "better-sqlite3": "^12.6.2",
32
+ <% } -%>
33
+ "@prisma/client": "^7.4.0",
29
34
  "dotenv": "^16.4.7",
30
35
  "express": "^4.21.2",
31
36
  "grammy": "^1.35.1",
@@ -4,7 +4,7 @@ generator client {
4
4
  }
5
5
 
6
6
  datasource db {
7
- provider = "sqlite"
7
+ provider = "<%= database %>"
8
8
  }
9
9
 
10
10
  model User {