telemeister 0.3.8 → 0.3.11
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 +23 -3
- package/dist/core/bot/index.d.ts +2 -2
- package/dist/core/bot/index.d.ts.map +1 -1
- package/dist/core/bot/polling.d.ts.map +1 -1
- package/dist/core/bot/polling.js +5 -25
- package/dist/core/bot/polling.js.map +1 -1
- package/dist/core/bot/session.d.ts +3 -3
- package/dist/core/bot/session.d.ts.map +1 -1
- package/dist/core/bot/session.js +8 -22
- package/dist/core/bot/session.js.map +1 -1
- package/dist/core/bot/types.d.ts +0 -7
- package/dist/core/bot/types.d.ts.map +1 -1
- package/dist/core/bot/webhook.d.ts.map +1 -1
- package/dist/core/bot/webhook.js +7 -26
- package/dist/core/bot/webhook.js.map +1 -1
- package/dist/templates/database.ts.ejs +0 -17
- package/package.json +1 -1
- package/src/templates/database.ts.ejs +0 -17
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
|
```
|
package/dist/core/bot/index.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export { startPollingMode, createBot as createPollingBot } from './polling.js';
|
|
|
28
28
|
export { startWebhookMode, createBot as createWebhookBot, setWebhook, deleteWebhook, getWebhookInfo, } from './webhook.js';
|
|
29
29
|
export type { PollingConfig } from './polling.js';
|
|
30
30
|
export type { WebhookConfig } from './webhook.js';
|
|
31
|
-
export type { DatabaseAdapter, UserData, SessionData
|
|
31
|
+
export type { DatabaseAdapter, UserData, SessionData } from './types.js';
|
|
32
32
|
export { SessionStorageAdapter, getOrCreateSession } from './session.js';
|
|
33
|
-
export type { SessionData as GrammySessionData
|
|
33
|
+
export type { SessionData as GrammySessionData } from './session.js';
|
|
34
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,gBAAgB,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,SAAS,IAAI,gBAAgB,EAC7B,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/bot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,gBAAgB,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,SAAS,IAAI,gBAAgB,EAC7B,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACzE,YAAY,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -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,
|
|
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,CAgFhE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E"}
|
package/dist/core/bot/polling.js
CHANGED
|
@@ -33,34 +33,12 @@ 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
|
}
|
|
47
39
|
// Get or create user session
|
|
48
|
-
const
|
|
40
|
+
const userSession = await getOrCreateSession(telegramIdStr, username, chatId, database);
|
|
49
41
|
ctx.session = userSession;
|
|
50
|
-
// Call onEnter for initial state if this is a new session
|
|
51
|
-
if (isNew) {
|
|
52
|
-
const handlerContext = createHandlerContext(ctx, userSession, database);
|
|
53
|
-
const nextState = await appBuilder.executeOnEnter(userSession.currentState, handlerContext);
|
|
54
|
-
// Handle transition from onEnter
|
|
55
|
-
if (nextState && nextState !== userSession.currentState) {
|
|
56
|
-
await transitionToState(ctx, userSession, nextState, handlerContext, database);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
// Save any state data changes
|
|
60
|
-
userSession.stateData =
|
|
61
|
-
handlerContext.getData('__all') || userSession.stateData;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
42
|
return next();
|
|
65
43
|
});
|
|
66
44
|
// Handle all updates (messages, callbacks, polls, etc.)
|
|
@@ -73,17 +51,19 @@ export function createBot(config) {
|
|
|
73
51
|
// Check for commands first
|
|
74
52
|
const text = ctx.message?.text?.trim();
|
|
75
53
|
let nextState = undefined;
|
|
54
|
+
let commandHandled = false;
|
|
76
55
|
if (text && text.startsWith('/')) {
|
|
77
56
|
const command = text.split(' ')[0].slice(1).toLowerCase(); // Remove leading slash
|
|
78
57
|
const result = await appBuilder.executeCommand(command, session.currentState, handlerContext);
|
|
79
58
|
if (result.handled) {
|
|
80
59
|
// Command was handled - use nextState if provided, otherwise stop processing
|
|
81
60
|
nextState = result.nextState;
|
|
61
|
+
commandHandled = true;
|
|
82
62
|
}
|
|
83
63
|
// If not handled, fall through to onResponse
|
|
84
64
|
}
|
|
85
|
-
// If no command handled
|
|
86
|
-
if (nextState === undefined) {
|
|
65
|
+
// If no command handled, execute onResponse handler
|
|
66
|
+
if (!commandHandled && nextState === undefined) {
|
|
87
67
|
nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
|
|
88
68
|
}
|
|
89
69
|
// 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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAgB,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAC;AAa3F,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAqB;IAC7C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAa,KAAK,CAAC,CAAC;IAEvC,kDAAkD;IAClD,GAAG,CAAC,GAAG,CACL,OAAO,CAAC;QACN,OAAO,EAAE,GAAgB,EAAE,CAAC,CAAC;YAC3B,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,EAAE;SACd,CAAC;QACF,OAAO,EAAE,IAAI,qBAAqB,CAAC,QAAQ,CAAC;QAC5C,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;KACvD,CAAC,CACH,CAAC;IAEF,gDAAgD;IAChD,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;QAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;QAEpC,
|
|
1
|
+
{"version":3,"file":"polling.js","sourceRoot":"","sources":["../../../src/core/bot/polling.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* allowing user state to persist across restarts.
|
|
6
6
|
*/
|
|
7
7
|
import type { StorageAdapter } from 'grammy';
|
|
8
|
-
import type { DatabaseAdapter, SessionData
|
|
9
|
-
export type { SessionData
|
|
8
|
+
import type { DatabaseAdapter, SessionData } from './types.js';
|
|
9
|
+
export type { SessionData };
|
|
10
10
|
/**
|
|
11
11
|
* Session storage adapter for Grammy using injected database
|
|
12
12
|
*/
|
|
@@ -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, username: string | undefined, chatId: string, database: DatabaseAdapter): Promise<
|
|
37
|
+
export declare function getOrCreateSession(telegramId: string, username: string | undefined, chatId: string, database: DatabaseAdapter): Promise<SessionData>;
|
|
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,
|
|
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,MAAM,YAAY,CAAC;AAG/D,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B;;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,WAAW,CAAC,CA0CtB"}
|
package/dist/core/bot/session.js
CHANGED
|
@@ -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,
|
|
@@ -76,13 +68,10 @@ export async function getOrCreateSession(telegramId, username, chatId, database)
|
|
|
76
68
|
});
|
|
77
69
|
}
|
|
78
70
|
return {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
chatId: existing.chatId,
|
|
84
|
-
},
|
|
85
|
-
isNew: false,
|
|
71
|
+
currentState: existing.currentState,
|
|
72
|
+
stateData,
|
|
73
|
+
userId: existing.id,
|
|
74
|
+
chatId: existing.chatId,
|
|
86
75
|
};
|
|
87
76
|
}
|
|
88
77
|
// Create new user
|
|
@@ -94,13 +83,10 @@ export async function getOrCreateSession(telegramId, username, chatId, database)
|
|
|
94
83
|
stateData: {},
|
|
95
84
|
});
|
|
96
85
|
return {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
chatId: newUser.chatId,
|
|
102
|
-
},
|
|
103
|
-
isNew: true,
|
|
86
|
+
currentState: 'idle',
|
|
87
|
+
stateData: {},
|
|
88
|
+
userId: newUser.id,
|
|
89
|
+
chatId: newUser.chatId,
|
|
104
90
|
};
|
|
105
91
|
}
|
|
106
92
|
//# sourceMappingURL=session.js.map
|
|
@@ -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,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,
|
|
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,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,SAAS;YACT,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,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,YAAY,EAAE,MAAM;QACpB,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,OAAO,CAAC,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC"}
|
package/dist/core/bot/types.d.ts
CHANGED
|
@@ -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,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
|
|
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"}
|
|
@@ -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,
|
|
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,CAgF7F;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"}
|
package/dist/core/bot/webhook.js
CHANGED
|
@@ -34,34 +34,12 @@ 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
|
}
|
|
48
40
|
// Get or create user session
|
|
49
|
-
const
|
|
41
|
+
const userSession = await getOrCreateSession(telegramIdStr, username, chatId, database);
|
|
50
42
|
ctx.session = userSession;
|
|
51
|
-
// Call onEnter for initial state if this is a new session
|
|
52
|
-
if (isNew) {
|
|
53
|
-
const handlerContext = createHandlerContext(ctx, userSession, database);
|
|
54
|
-
const nextState = await appBuilder.executeOnEnter(userSession.currentState, handlerContext);
|
|
55
|
-
// Handle transition from onEnter
|
|
56
|
-
if (nextState && nextState !== userSession.currentState) {
|
|
57
|
-
await transitionToState(ctx, userSession, nextState, handlerContext, database);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
// Save any state data changes
|
|
61
|
-
userSession.stateData =
|
|
62
|
-
handlerContext.getData('__all') || userSession.stateData;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
43
|
return next();
|
|
66
44
|
});
|
|
67
45
|
// Handle all updates (messages, callbacks, polls, etc.)
|
|
@@ -74,17 +52,19 @@ export function createBot(config) {
|
|
|
74
52
|
// Check for commands first
|
|
75
53
|
const text = ctx.message?.text?.trim();
|
|
76
54
|
let nextState = undefined;
|
|
55
|
+
let commandHandled = false;
|
|
77
56
|
if (text && text.startsWith('/')) {
|
|
78
57
|
const command = text.split(' ')[0].slice(1).toLowerCase(); // Remove leading slash
|
|
79
58
|
const result = await appBuilder.executeCommand(command, session.currentState, handlerContext);
|
|
80
59
|
if (result.handled) {
|
|
81
60
|
// Command was handled - use nextState if provided, otherwise stop processing
|
|
82
61
|
nextState = result.nextState;
|
|
62
|
+
commandHandled = true;
|
|
83
63
|
}
|
|
84
64
|
// If not handled, fall through to onResponse
|
|
85
65
|
}
|
|
86
|
-
// If no command handled
|
|
87
|
-
if (nextState === undefined) {
|
|
66
|
+
// If no command handled, execute onResponse handler
|
|
67
|
+
if (!commandHandled && nextState === undefined) {
|
|
88
68
|
nextState = await appBuilder.executeOnResponse(session.currentState, handlerContext);
|
|
89
69
|
}
|
|
90
70
|
// Handle state transition (call onEnter even for same state)
|
|
@@ -116,7 +96,8 @@ export async function startWebhookMode(config) {
|
|
|
116
96
|
});
|
|
117
97
|
});
|
|
118
98
|
// Set up webhook endpoint using Grammy's webhookCallback
|
|
119
|
-
|
|
99
|
+
// Note: express.json() is required for webhookCallback to parse request body
|
|
100
|
+
app.use('/webhook', express.json(), webhookCallback(bot, 'express'));
|
|
120
101
|
// Start server
|
|
121
102
|
app.listen(port, async () => {
|
|
122
103
|
console.log(`🤖 Bot started in webhook mode`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/core/bot/webhook.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAA8B,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAgB,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAC;AAe3F,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAkD;IAC1E,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAa,KAAK,CAAC,CAAC;IAEvC,kDAAkD;IAClD,GAAG,CAAC,GAAG,CACL,OAAO,CAAC;QACN,OAAO,EAAE,GAAgB,EAAE,CAAC,CAAC;YAC3B,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,EAAE;SACd,CAAC;QACF,OAAO,EAAE,IAAI,qBAAqB,CAAC,QAAQ,CAAC;QAC5C,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;KACvD,CAAC,CACH,CAAC;IAEF,gDAAgD;IAChD,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;QAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;QAEpC,
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/core/bot/webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,21 +69,9 @@ export async function createOrUpdateUser(data: {
|
|
|
69
69
|
currentState?: string;
|
|
70
70
|
stateData?: Record<string, unknown>;
|
|
71
71
|
}): Promise<UserWithInfo> {
|
|
72
|
-
console.log('[Telemeister Debug] createOrUpdateUser called:', {
|
|
73
|
-
telegramId: data.telegramId,
|
|
74
|
-
username: data.username,
|
|
75
|
-
chatId: data.chatId,
|
|
76
|
-
});
|
|
77
|
-
|
|
78
72
|
const existingUser = await getUserByTelegramId(data.telegramId);
|
|
79
73
|
|
|
80
74
|
if (existingUser) {
|
|
81
|
-
console.log('[Telemeister Debug] Existing user found:', {
|
|
82
|
-
id: existingUser.id,
|
|
83
|
-
username: existingUser.username,
|
|
84
|
-
willUpdateUsername: data.username !== undefined,
|
|
85
|
-
});
|
|
86
|
-
|
|
87
75
|
// Update existing user
|
|
88
76
|
const updatedUser = await prisma.user.update({
|
|
89
77
|
where: { telegramId: data.telegramId },
|
|
@@ -95,11 +83,6 @@ export async function createOrUpdateUser(data: {
|
|
|
95
83
|
include: { info: true },
|
|
96
84
|
});
|
|
97
85
|
|
|
98
|
-
console.log('[Telemeister Debug] User updated:', {
|
|
99
|
-
id: updatedUser.id,
|
|
100
|
-
username: updatedUser.username,
|
|
101
|
-
});
|
|
102
|
-
|
|
103
86
|
// Update or create user info if stateData provided
|
|
104
87
|
if (data.stateData) {
|
|
105
88
|
await prisma.userInfo.upsert({
|
package/package.json
CHANGED
|
@@ -69,21 +69,9 @@ export async function createOrUpdateUser(data: {
|
|
|
69
69
|
currentState?: string;
|
|
70
70
|
stateData?: Record<string, unknown>;
|
|
71
71
|
}): Promise<UserWithInfo> {
|
|
72
|
-
console.log('[Telemeister Debug] createOrUpdateUser called:', {
|
|
73
|
-
telegramId: data.telegramId,
|
|
74
|
-
username: data.username,
|
|
75
|
-
chatId: data.chatId,
|
|
76
|
-
});
|
|
77
|
-
|
|
78
72
|
const existingUser = await getUserByTelegramId(data.telegramId);
|
|
79
73
|
|
|
80
74
|
if (existingUser) {
|
|
81
|
-
console.log('[Telemeister Debug] Existing user found:', {
|
|
82
|
-
id: existingUser.id,
|
|
83
|
-
username: existingUser.username,
|
|
84
|
-
willUpdateUsername: data.username !== undefined,
|
|
85
|
-
});
|
|
86
|
-
|
|
87
75
|
// Update existing user
|
|
88
76
|
const updatedUser = await prisma.user.update({
|
|
89
77
|
where: { telegramId: data.telegramId },
|
|
@@ -95,11 +83,6 @@ export async function createOrUpdateUser(data: {
|
|
|
95
83
|
include: { info: true },
|
|
96
84
|
});
|
|
97
85
|
|
|
98
|
-
console.log('[Telemeister Debug] User updated:', {
|
|
99
|
-
id: updatedUser.id,
|
|
100
|
-
username: updatedUser.username,
|
|
101
|
-
});
|
|
102
|
-
|
|
103
86
|
// Update or create user info if stateData provided
|
|
104
87
|
if (data.stateData) {
|
|
105
88
|
await prisma.userInfo.upsert({
|