@grammy-x/conversations 0.2.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +451 -0
- package/dist/{conversations/src/question-helper.d.ts → index.d.cts} +13 -8
- package/dist/index.d.ts +116 -0
- package/dist/index.js +135 -110
- package/package.json +22 -5
- package/dist/conversations/src/conversation.d.ts +0 -6
- package/dist/conversations/src/conversation.d.ts.map +0 -1
- package/dist/conversations/src/index.d.ts +0 -4
- package/dist/conversations/src/index.d.ts.map +0 -1
- package/dist/conversations/src/question-helper.d.ts.map +0 -1
- package/dist/core/src/index.d.ts +0 -8
- package/dist/core/src/index.d.ts.map +0 -1
- package/dist/core/src/message.d.ts +0 -12
- package/dist/core/src/message.d.ts.map +0 -1
- package/dist/core/src/plugin.d.ts +0 -20
- package/dist/core/src/plugin.d.ts.map +0 -1
- package/dist/core/src/registry/menu.d.ts +0 -14
- package/dist/core/src/registry/menu.d.ts.map +0 -1
- package/dist/core/src/session.d.ts +0 -35
- package/dist/core/src/session.d.ts.map +0 -1
- package/dist/utils/src/dedent.d.ts +0 -5
- package/dist/utils/src/dedent.d.ts.map +0 -1
- package/dist/utils/src/helpers.d.ts +0 -3
- package/dist/utils/src/helpers.d.ts.map +0 -1
- package/dist/utils/src/htmlformat.d.ts +0 -4
- package/dist/utils/src/htmlformat.d.ts.map +0 -1
- package/dist/utils/src/index.d.ts +0 -5
- package/dist/utils/src/index.d.ts.map +0 -1
- package/dist/utils/src/random.d.ts +0 -5
- package/dist/utils/src/random.d.ts.map +0 -1
package/dist/index.js
CHANGED
|
@@ -4,8 +4,7 @@ import { smartReply, GlobalMenuRegistry } from "@grammy-x/core";
|
|
|
4
4
|
function randomInteger(minimum, maximum) {
|
|
5
5
|
return Math.floor(Math.random() * (maximum - minimum + 1) + minimum);
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
class QuestionHelper {
|
|
7
|
+
var QuestionHelper = class {
|
|
9
8
|
conversation;
|
|
10
9
|
config;
|
|
11
10
|
ctx;
|
|
@@ -29,22 +28,18 @@ class QuestionHelper {
|
|
|
29
28
|
if (gx?.history.length > 0) {
|
|
30
29
|
gx.history.pop();
|
|
31
30
|
}
|
|
32
|
-
const targetId = gx?.history.length > 0 ? gx.history.pop() :
|
|
31
|
+
const targetId = gx?.history.length > 0 ? gx.history.pop() : void 0;
|
|
33
32
|
if (targetId) {
|
|
34
33
|
const menu = GlobalMenuRegistry.get(targetId);
|
|
35
|
-
if (menu)
|
|
36
|
-
return menu.send(this.ctx);
|
|
34
|
+
if (menu) return menu.send(this.ctx);
|
|
37
35
|
}
|
|
38
36
|
};
|
|
39
37
|
reply = async (text, options) => {
|
|
40
38
|
let newText = text;
|
|
41
39
|
const mergedOptions = { ...this.config, ...options };
|
|
42
|
-
if (mergedOptions.autoBold !== false)
|
|
43
|
-
|
|
44
|
-
if (
|
|
45
|
-
mergedOptions.markup = options.markup;
|
|
46
|
-
if (!mergedOptions.markup)
|
|
47
|
-
mergedOptions.markup = new InlineKeyboard;
|
|
40
|
+
if (mergedOptions.autoBold !== false) newText = `<b>${newText}</b>`;
|
|
41
|
+
if (options?.markup instanceof InlineKeyboard) mergedOptions.markup = options.markup;
|
|
42
|
+
if (!mergedOptions.markup) mergedOptions.markup = new InlineKeyboard();
|
|
48
43
|
if (mergedOptions.markup instanceof InlineKeyboard && this.config.markup instanceof InlineKeyboard)
|
|
49
44
|
mergedOptions.markup.append(this.config.markup);
|
|
50
45
|
if (mergedOptions.fastMenu && mergedOptions.markup instanceof InlineKeyboard) {
|
|
@@ -76,13 +71,15 @@ class QuestionHelper {
|
|
|
76
71
|
textParser = async (text, parser, validator, options) => {
|
|
77
72
|
const message = await this.reply(text, options);
|
|
78
73
|
const additionalTriggers = this.getCallbackDataFromKeyboard(options?.markup);
|
|
79
|
-
const answer = await this.conversation.waitUntil(
|
|
74
|
+
const answer = await this.conversation.waitUntil(
|
|
75
|
+
(ctx) => Context.has.callbackQuery(additionalTriggers)(ctx) || ctx.has(":text")
|
|
76
|
+
);
|
|
80
77
|
this.updateCtx(answer);
|
|
81
78
|
const callbackQuery = answer.callbackQuery?.data;
|
|
82
|
-
if (callbackQuery)
|
|
83
|
-
return { callbackQuery, answerCtx: answer, message };
|
|
79
|
+
if (callbackQuery) return { callbackQuery, answerCtx: answer, message };
|
|
84
80
|
if (answer.message?.text?.startsWith("/")) {
|
|
85
|
-
await this.ctx.api.deleteMessage(this.ctx.from.id, answer.message.message_id).catch(() => {
|
|
81
|
+
await this.ctx.api.deleteMessage(this.ctx.from.id, answer.message.message_id).catch(() => {
|
|
82
|
+
});
|
|
86
83
|
const cmd = answer.message.text.split(" ")[0];
|
|
87
84
|
const err = new Error(`CommandInterrupt:${cmd}`);
|
|
88
85
|
err.name = "CommandInterruptError";
|
|
@@ -90,17 +87,22 @@ class QuestionHelper {
|
|
|
90
87
|
throw err;
|
|
91
88
|
}
|
|
92
89
|
const result = parser(answer.msg.text);
|
|
93
|
-
await this.ctx.api.deleteMessage(this.ctx.from.id, answer.msg.message_id).catch(() => {
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
await this.ctx.api.deleteMessage(this.ctx.from.id, answer.msg.message_id).catch(() => {
|
|
91
|
+
});
|
|
92
|
+
if (!validator(result)) return await this.conversation.skip();
|
|
96
93
|
return { result, answerCtx: answer, message };
|
|
97
94
|
};
|
|
98
|
-
text = (text, options) => this.textParser(
|
|
95
|
+
text = (text, options) => this.textParser(
|
|
96
|
+
text,
|
|
97
|
+
(r) => r,
|
|
98
|
+
() => true,
|
|
99
|
+
options
|
|
100
|
+
);
|
|
99
101
|
int = (text, options) => this.textParser(text, parseInt, (r) => !isNaN(r), options);
|
|
100
102
|
float = (text, options) => this.textParser(text, parseFloat, (r) => !isNaN(r), options);
|
|
101
103
|
chat = async (text, options) => {
|
|
102
104
|
const chat = options.chat;
|
|
103
|
-
const markup = new Keyboard().requestChat("
|
|
105
|
+
const markup = new Keyboard().requestChat("\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0447\u0430\u0442 \u{1F50D}", randomInteger(0, 999999), {
|
|
104
106
|
chat_is_channel: chat.isChannel,
|
|
105
107
|
bot_administrator_rights: chat.requiredBotRights,
|
|
106
108
|
bot_is_member: chat.botIsMember,
|
|
@@ -112,12 +114,13 @@ class QuestionHelper {
|
|
|
112
114
|
const message = await this.reply(text, { ...options, markup });
|
|
113
115
|
const answer = await this.conversation.waitFor(":chat_shared");
|
|
114
116
|
this.updateCtx(answer);
|
|
115
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
117
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
118
|
+
});
|
|
116
119
|
return answer.msg.chat_shared;
|
|
117
120
|
};
|
|
118
121
|
user = async (text, options) => {
|
|
119
122
|
const user = options?.user;
|
|
120
|
-
const markup = new Keyboard().requestUsers("
|
|
123
|
+
const markup = new Keyboard().requestUsers("\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u{1F50D}", randomInteger(0, 999999), {
|
|
121
124
|
max_quantity: 1,
|
|
122
125
|
request_name: user?.requestName,
|
|
123
126
|
request_photo: user?.requestPhoto,
|
|
@@ -128,12 +131,13 @@ class QuestionHelper {
|
|
|
128
131
|
const message = await this.reply(text, { ...options, markup });
|
|
129
132
|
const answer = await this.conversation.waitFor(":users_shared");
|
|
130
133
|
this.updateCtx(answer);
|
|
131
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
134
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
135
|
+
});
|
|
132
136
|
return answer.msg.users_shared?.users[0];
|
|
133
137
|
};
|
|
134
138
|
users = async (text, options) => {
|
|
135
139
|
const users = options?.users;
|
|
136
|
-
const markup = new Keyboard().requestUsers("
|
|
140
|
+
const markup = new Keyboard().requestUsers("\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u{1F50D}", randomInteger(0, 999999), {
|
|
137
141
|
max_quantity: users?.maxQuantity,
|
|
138
142
|
request_name: users?.requestName,
|
|
139
143
|
request_photo: users?.requestPhoto,
|
|
@@ -144,90 +148,105 @@ class QuestionHelper {
|
|
|
144
148
|
const message = await this.reply(text, { ...options, markup });
|
|
145
149
|
const answer = await this.conversation.waitFor(":users_shared");
|
|
146
150
|
this.updateCtx(answer);
|
|
147
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
151
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
152
|
+
});
|
|
148
153
|
return answer.msg.users_shared;
|
|
149
154
|
};
|
|
150
155
|
contact = async (text, options) => {
|
|
151
|
-
const markup = new Keyboard().requestContact("
|
|
156
|
+
const markup = new Keyboard().requestContact("\u041F\u043E\u0434\u0435\u043B\u0438\u0442\u044C\u0441\u044F \u043A\u043E\u043D\u0442\u0430\u043A\u0442\u043E\u043C \u{1F4DE}").oneTime(true).resized(true);
|
|
152
157
|
const message = await this.reply(text, { ...options, markup });
|
|
153
158
|
const answer = await this.conversation.waitFor(":contact");
|
|
154
159
|
this.updateCtx(answer);
|
|
155
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
160
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
161
|
+
});
|
|
156
162
|
return answer.msg.contact;
|
|
157
163
|
};
|
|
158
164
|
location = async (text, options) => {
|
|
159
|
-
const markup = new Keyboard().requestLocation("
|
|
165
|
+
const markup = new Keyboard().requestLocation("\u041F\u043E\u0434\u0435\u043B\u0438\u0442\u044C\u0441\u044F \u0433\u0435\u043E\u043F\u043E\u0437\u0438\u0446\u0438\u0435\u0439 \u{1F4CD}").oneTime(true).resized(true);
|
|
160
166
|
const message = await this.reply(text, { ...options, markup });
|
|
161
167
|
const answer = await this.conversation.waitFor(":location");
|
|
162
168
|
this.updateCtx(answer);
|
|
163
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
169
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
170
|
+
});
|
|
164
171
|
return answer.msg.location;
|
|
165
172
|
};
|
|
166
173
|
poll = async (text, options) => {
|
|
167
174
|
const pollType = options?.poll?.type;
|
|
168
|
-
const markup = new Keyboard().requestPoll("
|
|
175
|
+
const markup = new Keyboard().requestPoll("\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043E\u043F\u0440\u043E\u0441 \u{1F4CA}", pollType).oneTime(true).resized(true);
|
|
169
176
|
const message = await this.reply(text, { ...options, markup });
|
|
170
177
|
const answer = await this.conversation.waitFor(":poll");
|
|
171
178
|
this.updateCtx(answer);
|
|
172
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
179
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
180
|
+
});
|
|
173
181
|
return answer.msg.poll;
|
|
174
182
|
};
|
|
175
183
|
renderPaginationButtons = (pagesCount, currentPage, markup, columnCount, extraControls) => {
|
|
176
184
|
const oddColumnCount = columnCount % 2 === 0 ? columnCount + 1 : columnCount;
|
|
177
185
|
const emptyColumns = oddColumnCount >= 5 ? extraControls ? 0 : 1 : 0;
|
|
178
|
-
for (let i = 0;i < emptyColumns; i++) {
|
|
186
|
+
for (let i = 0; i < emptyColumns; i++) {
|
|
179
187
|
markup.text(" ", " ");
|
|
180
188
|
}
|
|
181
189
|
if (extraControls) {
|
|
182
|
-
markup.text(currentPage > 2 ? "
|
|
190
|
+
markup.text(currentPage > 2 ? "\u22D8" : " ", "first");
|
|
183
191
|
}
|
|
184
|
-
markup.text(currentPage > 1 ? "
|
|
192
|
+
markup.text(currentPage > 1 ? "\u2190" : " ", "prev");
|
|
185
193
|
markup.text(currentPage + " / " + pagesCount, "page");
|
|
186
|
-
markup.text(currentPage < pagesCount ? "
|
|
194
|
+
markup.text(currentPage < pagesCount ? "\u2192" : " ", "next");
|
|
187
195
|
if (extraControls) {
|
|
188
|
-
markup.text(currentPage < pagesCount - 1 ? "
|
|
196
|
+
markup.text(currentPage < pagesCount - 1 ? "\u22D9" : " ", "last");
|
|
189
197
|
}
|
|
190
|
-
for (let i = 0;i < emptyColumns; i++) {
|
|
198
|
+
for (let i = 0; i < emptyColumns; i++) {
|
|
191
199
|
markup.text(" ", " ");
|
|
192
200
|
}
|
|
193
201
|
return markup.row();
|
|
194
202
|
};
|
|
195
203
|
resetChoice = (session) => {
|
|
196
|
-
if (!session._gx.conversations)
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
};
|
|
204
|
+
if (!session._gx.conversations) session._gx.conversations = {
|
|
205
|
+
currentChoices: /* @__PURE__ */ new Set(),
|
|
206
|
+
currentPage: 1
|
|
207
|
+
};
|
|
201
208
|
else {
|
|
202
|
-
session._gx.conversations.currentChoices = new Set;
|
|
209
|
+
session._gx.conversations.currentChoices = /* @__PURE__ */ new Set();
|
|
203
210
|
session._gx.conversations.currentPage = 1;
|
|
204
211
|
}
|
|
205
212
|
};
|
|
206
213
|
async basicChoice(text, choices, multi = false, options, inProgress) {
|
|
207
|
-
const markup = new InlineKeyboard;
|
|
208
|
-
const session = await this.conversation.external(
|
|
209
|
-
|
|
210
|
-
|
|
214
|
+
const markup = new InlineKeyboard();
|
|
215
|
+
const session = await this.conversation.external(
|
|
216
|
+
() => this.ctx.session
|
|
217
|
+
);
|
|
218
|
+
if (!session._gx.conversations) this.resetChoice(session);
|
|
211
219
|
await this.conversation.external(() => !inProgress && this.resetChoice(session));
|
|
212
220
|
let currentRow = [];
|
|
213
221
|
const columnCount = options?.columnCount ?? this.config.columnCount ?? 1;
|
|
214
222
|
const rowCount = options?.rowCount ?? this.config.rowCount ?? 3;
|
|
215
|
-
const filledChoices = options?.pagination?.enabled ? choices.concat(
|
|
223
|
+
const filledChoices = options?.pagination?.enabled ? choices.concat(
|
|
224
|
+
Array.from({ length: columnCount * rowCount - choices.length % (columnCount * rowCount) }).map(
|
|
225
|
+
() => [" ", "empty"]
|
|
226
|
+
)
|
|
227
|
+
) : choices;
|
|
216
228
|
const pagesCount = Math.ceil(choices.length / (columnCount * rowCount));
|
|
217
229
|
const currentPage = session._gx.conversations.currentPage ?? 1;
|
|
218
230
|
let currentRowId = 0;
|
|
219
231
|
for (const [choiceId, choice] of filledChoices.entries()) {
|
|
220
|
-
if (options?.pagination?.enabled && choiceId < (currentPage - 1) * columnCount * rowCount)
|
|
221
|
-
continue;
|
|
232
|
+
if (options?.pagination?.enabled && choiceId < (currentPage - 1) * columnCount * rowCount) continue;
|
|
222
233
|
const checked = session._gx.conversations.currentChoices.has(choice[1]);
|
|
223
|
-
currentRow.push([`${choice[0]}${checked ? "
|
|
234
|
+
currentRow.push([`${choice[0]}${checked ? " \u2705" : ""}`, choice[1]]);
|
|
224
235
|
if (currentRow.length === columnCount) {
|
|
225
|
-
currentRow.forEach(
|
|
236
|
+
currentRow.forEach(
|
|
237
|
+
([label, value]) => markup.text(label, value == "empty" ? "empty" : `answer:${value}`)
|
|
238
|
+
);
|
|
226
239
|
markup.row();
|
|
227
240
|
currentRow = [];
|
|
228
241
|
currentRowId++;
|
|
229
242
|
if (options?.pagination?.enabled && (currentRowId === rowCount || choiceId === filledChoices.length - 1)) {
|
|
230
|
-
this.renderPaginationButtons(
|
|
243
|
+
this.renderPaginationButtons(
|
|
244
|
+
pagesCount,
|
|
245
|
+
currentPage,
|
|
246
|
+
markup,
|
|
247
|
+
columnCount,
|
|
248
|
+
options?.pagination?.extraControls ?? false
|
|
249
|
+
);
|
|
231
250
|
break;
|
|
232
251
|
}
|
|
233
252
|
}
|
|
@@ -239,13 +258,16 @@ class QuestionHelper {
|
|
|
239
258
|
markup.row();
|
|
240
259
|
}
|
|
241
260
|
const additionalTriggers = this.getCallbackDataFromKeyboard(options?.markup);
|
|
242
|
-
if (options?.markup instanceof InlineKeyboard)
|
|
243
|
-
markup.append(options.markup).row();
|
|
261
|
+
if (options?.markup instanceof InlineKeyboard) markup.append(options.markup).row();
|
|
244
262
|
const sendContinueButton = session._gx.conversations.currentChoices.size > 0;
|
|
245
263
|
const continueInlineEnd = options?.continueInlineEnd ?? this.config.continueInlineEnd;
|
|
246
264
|
if (multi && !options?.noChoiceAllowed && !continueInlineEnd && sendContinueButton)
|
|
247
265
|
markup.text(options?.continueButton ?? this.config?.continueButton ?? "Continue", "continue").row();
|
|
248
|
-
const messageText = typeof text === "function" ? await text(
|
|
266
|
+
const messageText = typeof text === "function" ? await text(
|
|
267
|
+
Array.from(session._gx.conversations.currentChoices),
|
|
268
|
+
session._gx.conversations.currentPage,
|
|
269
|
+
pagesCount
|
|
270
|
+
) : text;
|
|
249
271
|
const message = await this.reply(messageText, {
|
|
250
272
|
...options,
|
|
251
273
|
markup,
|
|
@@ -268,9 +290,8 @@ class QuestionHelper {
|
|
|
268
290
|
additionalTriggerCalled = additionalTriggers.includes(callbackData2);
|
|
269
291
|
if (callbackData2 == "continue" || additionalTriggerCalled) {
|
|
270
292
|
const choices2 = Array.from(session._gx.conversations.currentChoices);
|
|
271
|
-
this.ctx.session._gx.conversations.currentChoices = new Set;
|
|
272
|
-
if (additionalTriggerCalled)
|
|
273
|
-
return { result: choices2, callbackQuery: callbackData2, message };
|
|
293
|
+
this.ctx.session._gx.conversations.currentChoices = /* @__PURE__ */ new Set();
|
|
294
|
+
if (additionalTriggerCalled) return { result: choices2, callbackQuery: callbackData2, message };
|
|
274
295
|
return { result: choices2, message };
|
|
275
296
|
}
|
|
276
297
|
} while (additionalTriggerCalled);
|
|
@@ -278,30 +299,25 @@ class QuestionHelper {
|
|
|
278
299
|
const callbackData = answer.callbackQuery.data;
|
|
279
300
|
const data = callbackData.split(":")[1];
|
|
280
301
|
const skip = await this.conversation.external(async () => {
|
|
281
|
-
if (callbackData == "prev")
|
|
282
|
-
|
|
283
|
-
if (callbackData == "
|
|
284
|
-
|
|
285
|
-
if (callbackData == "first")
|
|
286
|
-
questionData.currentPage = 1;
|
|
287
|
-
if (callbackData == "last")
|
|
288
|
-
questionData.currentPage = pagesCount;
|
|
302
|
+
if (callbackData == "prev") questionData.currentPage = Math.max(currentPage - 1, 1);
|
|
303
|
+
if (callbackData == "next") questionData.currentPage = Math.min(currentPage + 1, pagesCount);
|
|
304
|
+
if (callbackData == "first") questionData.currentPage = 1;
|
|
305
|
+
if (callbackData == "last") questionData.currentPage = pagesCount;
|
|
289
306
|
if (data) {
|
|
290
|
-
if (questionData.currentChoices.has(data))
|
|
291
|
-
|
|
292
|
-
else
|
|
293
|
-
questionData.currentChoices.add(data);
|
|
307
|
+
if (questionData.currentChoices.has(data)) questionData.currentChoices.delete(data);
|
|
308
|
+
else questionData.currentChoices.add(data);
|
|
294
309
|
}
|
|
310
|
+
;
|
|
295
311
|
this.ctx.session._gx.conversations = questionData;
|
|
296
312
|
if (paginationsCallbacks.includes(callbackData) && questionData.currentPage == currentPage) {
|
|
297
313
|
await this.ctx.answerCallbackQuery();
|
|
298
314
|
return true;
|
|
299
315
|
}
|
|
300
316
|
});
|
|
301
|
-
if (skip)
|
|
302
|
-
return this.conversation.skip({ drop: true });
|
|
317
|
+
if (skip) return this.conversation.skip({ drop: true });
|
|
303
318
|
if (!multi && data) {
|
|
304
|
-
|
|
319
|
+
;
|
|
320
|
+
this.ctx.session._gx.conversations.currentChoices = /* @__PURE__ */ new Set();
|
|
305
321
|
return {
|
|
306
322
|
result: data,
|
|
307
323
|
message
|
|
@@ -312,10 +328,14 @@ class QuestionHelper {
|
|
|
312
328
|
choice = async (text, choices, options) => this.basicChoice(text, choices, false, options);
|
|
313
329
|
multi = async (text, choices, options) => this.basicChoice(text, choices, true, options);
|
|
314
330
|
boolean = async (text, yesNoStrings, options) => {
|
|
315
|
-
const { result, message } = await this.choice(
|
|
316
|
-
|
|
317
|
-
[
|
|
318
|
-
|
|
331
|
+
const { result, message } = await this.choice(
|
|
332
|
+
text,
|
|
333
|
+
[
|
|
334
|
+
[yesNoStrings?.[0] ?? "\u2705 \u0414\u0430", "true"],
|
|
335
|
+
[yesNoStrings?.[1] ?? "\u274C \u041D\u0435\u0442", "false"]
|
|
336
|
+
],
|
|
337
|
+
{ columnCount: 2, ...options }
|
|
338
|
+
);
|
|
319
339
|
const boolResult = result === "true";
|
|
320
340
|
return { result: boolResult, message };
|
|
321
341
|
};
|
|
@@ -323,7 +343,8 @@ class QuestionHelper {
|
|
|
323
343
|
const message = await this.reply(text, options);
|
|
324
344
|
const answer = await this.conversation.waitFor(":photo");
|
|
325
345
|
this.updateCtx(answer);
|
|
326
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
346
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
347
|
+
});
|
|
327
348
|
const photo = answer.msg.photo?.[0];
|
|
328
349
|
if (!photo) {
|
|
329
350
|
throw new Error("No photo found in update");
|
|
@@ -334,10 +355,12 @@ class QuestionHelper {
|
|
|
334
355
|
const message = await this.reply(text, options);
|
|
335
356
|
const answer = await this.conversation.waitFor(":file");
|
|
336
357
|
this.updateCtx(answer);
|
|
337
|
-
await answer?.msg?.delete?.().catch?.(() => {
|
|
358
|
+
await answer?.msg?.delete?.().catch?.(() => {
|
|
359
|
+
});
|
|
338
360
|
return answer.msg.document?.file_id;
|
|
339
361
|
};
|
|
340
|
-
}
|
|
362
|
+
};
|
|
363
|
+
|
|
341
364
|
// src/conversation.ts
|
|
342
365
|
import { createConversation } from "@grammyjs/conversations";
|
|
343
366
|
import { hydrate } from "@grammyjs/hydrate";
|
|
@@ -360,39 +383,41 @@ function createCustomConversation(builder, config) {
|
|
|
360
383
|
return ctx.conversation.enter(id);
|
|
361
384
|
}
|
|
362
385
|
});
|
|
363
|
-
return createConversation(
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
gx.history.
|
|
368
|
-
|
|
369
|
-
gx.history.shift();
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
386
|
+
return createConversation(
|
|
387
|
+
(async (conversation, ctx) => {
|
|
388
|
+
await conversation.run(hydrate());
|
|
389
|
+
const gx = ctx.session?._gx;
|
|
390
|
+
if (gx && gx.history[gx.history.length - 1] !== id) {
|
|
391
|
+
gx.history.push(id);
|
|
392
|
+
if (gx.history.length > 20) gx.history.shift();
|
|
393
|
+
}
|
|
394
|
+
try {
|
|
395
|
+
return await builder(conversation, ctx);
|
|
396
|
+
} catch (e) {
|
|
397
|
+
if (e.name === "CommandInterruptError") {
|
|
398
|
+
const cmd = e.message.split(":")[1];
|
|
399
|
+
const opts = getGrammyXOptions(e.ctx);
|
|
400
|
+
const targetMenu = opts?.interruptCommands?.[cmd];
|
|
401
|
+
if (targetMenu) {
|
|
402
|
+
try {
|
|
403
|
+
if (typeof targetMenu === "string") {
|
|
404
|
+
await e.ctx.menu.nav(targetMenu);
|
|
405
|
+
} else if (typeof targetMenu.send === "function") {
|
|
406
|
+
await targetMenu.send(e.ctx);
|
|
407
|
+
}
|
|
408
|
+
} catch (err) {
|
|
409
|
+
console.error(`Could not auto-nav to target menu for command ${cmd}`, err);
|
|
384
410
|
}
|
|
385
|
-
} catch (err) {
|
|
386
|
-
console.error(`Could not auto-nav to target menu for command ${cmd}`, err);
|
|
387
411
|
}
|
|
412
|
+
return;
|
|
388
413
|
}
|
|
389
|
-
|
|
414
|
+
throw e;
|
|
390
415
|
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
416
|
+
}),
|
|
417
|
+
cfg
|
|
418
|
+
);
|
|
394
419
|
}
|
|
395
420
|
export {
|
|
396
|
-
|
|
397
|
-
|
|
421
|
+
QuestionHelper,
|
|
422
|
+
createCustomConversation
|
|
398
423
|
};
|
package/package.json
CHANGED
|
@@ -1,25 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grammy-x/conversations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
|
|
4
5
|
"type": "module",
|
|
5
|
-
|
|
6
|
+
|
|
7
|
+
"main": "./dist/index.cjs",
|
|
8
|
+
"module": "./dist/index.js",
|
|
6
9
|
"types": "./dist/index.d.ts",
|
|
10
|
+
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"require": "./dist/index.cjs"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
|
|
7
19
|
"private": false,
|
|
20
|
+
|
|
8
21
|
"publishConfig": {
|
|
9
|
-
"access": "
|
|
22
|
+
"access": "public"
|
|
10
23
|
},
|
|
24
|
+
|
|
11
25
|
"dependencies": {
|
|
12
26
|
"@grammy-x/core": "0.2.1"
|
|
13
27
|
},
|
|
28
|
+
|
|
14
29
|
"peerDependencies": {
|
|
15
30
|
"grammy": "^1.24.0",
|
|
16
31
|
"@grammyjs/conversations": "^1",
|
|
17
32
|
"@grammyjs/hydrate": "^1.4.1"
|
|
18
33
|
},
|
|
34
|
+
|
|
19
35
|
"files": [
|
|
20
36
|
"dist"
|
|
21
37
|
],
|
|
38
|
+
|
|
22
39
|
"scripts": {
|
|
23
|
-
"build": "
|
|
40
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --clean"
|
|
24
41
|
}
|
|
25
|
-
}
|
|
42
|
+
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ConversationConfig } from "@grammyjs/conversations";
|
|
2
|
-
import type { Conversation } from "@grammyjs/conversations";
|
|
3
|
-
import type { Context, MiddlewareFn } from "grammy";
|
|
4
|
-
export type ConversationFn<C extends Context = Context> = (conversation: Conversation<C>, ctx: C) => unknown | Promise<unknown>;
|
|
5
|
-
export declare function createCustomConversation<C extends Context = Context>(builder: ConversationFn<C>, config?: string | ConversationConfig): MiddlewareFn<any>;
|
|
6
|
-
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAGnD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,CACtD,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,GAAG,EAAE,CAAC,KACL,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE/B,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAChE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,GACrC,YAAY,CAAC,GAAG,CAAC,CA2DnB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"question-helper.d.ts","sourceRoot":"","sources":["../../../src/question-helper.ts"],"names":[],"mappings":"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"}
|
package/dist/core/src/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export type { GrammyXSessionData, GrammyXInternalSession, GrammyXFlavor, WithGrammyXSession } from "./session.js";
|
|
2
|
-
export { smartReply, setActiveMessage } from "./message.js";
|
|
3
|
-
export type { ReplyOptions } from "./message.js";
|
|
4
|
-
export { grammyx, getGrammyXOptions, grammyXMenus } from "./plugin.js";
|
|
5
|
-
export type { GrammyXDefaultColor, GrammyXPluginOptions, GrammyXRuntimeOptions } from "./plugin.js";
|
|
6
|
-
export { GlobalMenuRegistry } from "./registry/menu.js";
|
|
7
|
-
export type { MenuLike } from "./registry/menu.js";
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACtE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Context } from "grammy";
|
|
2
|
-
import type { Message } from "grammy/types";
|
|
3
|
-
export interface ReplyOptions {
|
|
4
|
-
embolden?: boolean;
|
|
5
|
-
dedent?: boolean;
|
|
6
|
-
newMessage?: boolean;
|
|
7
|
-
messageToEdit?: number;
|
|
8
|
-
options?: Record<string, any>;
|
|
9
|
-
}
|
|
10
|
-
export declare function smartReply(ctx: Context, text: string, options?: ReplyOptions, replyMarkup?: any): Promise<Message>;
|
|
11
|
-
export declare function setActiveMessage(ctx: Context, message: Message): void;
|
|
12
|
-
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../core/src/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAI3C,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC;AAiBD,wBAAsB,UAAU,CAC5B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,EACtB,WAAW,CAAC,EAAE,GAAG,GAClB,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAQrE"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { MiddlewareFn } from "grammy";
|
|
2
|
-
export type GrammyXDefaultColor = "primary" | "success" | "danger";
|
|
3
|
-
export interface GrammyXRuntimeOptions {
|
|
4
|
-
defaultColor?: GrammyXDefaultColor;
|
|
5
|
-
interruptCommands?: Record<string, any>;
|
|
6
|
-
backText?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface GrammyXPluginOptions {
|
|
9
|
-
sessionInitial?: () => any;
|
|
10
|
-
defaultColor?: GrammyXDefaultColor;
|
|
11
|
-
interruptCommands?: Record<string, any>;
|
|
12
|
-
backText?: string;
|
|
13
|
-
}
|
|
14
|
-
export declare function getGrammyXOptions(ctx: unknown): GrammyXRuntimeOptions | undefined;
|
|
15
|
-
export declare function grammyx(options?: GrammyXPluginOptions): MiddlewareFn<any>;
|
|
16
|
-
/**
|
|
17
|
-
* The Global Menu Handler.
|
|
18
|
-
*/
|
|
19
|
-
export declare function grammyXMenus(): MiddlewareFn<any>;
|
|
20
|
-
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../core/src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAW,MAAM,QAAQ,CAAA;AAMnD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAElE,MAAM,WAAW,qBAAqB;IAClC,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,CAAA;IAC1B,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAEjF;AAgBD,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,CAqFzE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,CAahD"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Context } from "grammy";
|
|
2
|
-
export interface MenuLike<C extends Context = Context> {
|
|
3
|
-
menuName: string;
|
|
4
|
-
send: (ctx: C, data?: any) => Promise<unknown>;
|
|
5
|
-
}
|
|
6
|
-
declare class MenuRegistry {
|
|
7
|
-
private menus;
|
|
8
|
-
register(menu: MenuLike<any>): void;
|
|
9
|
-
get<C extends Context>(name: string): MenuLike<C> | undefined;
|
|
10
|
-
getAll(): MenuLike<any>[];
|
|
11
|
-
}
|
|
12
|
-
export declare const GlobalMenuRegistry: MenuRegistry;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=menu.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../../../core/src/registry/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACjD;AAED,cAAM,YAAY;IACd,OAAO,CAAC,KAAK,CAAmC;IAEhD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC;IAQ5B,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;IAI7D,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;CAG5B;AAED,eAAO,MAAM,kBAAkB,cAAqB,CAAA"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export interface GrammyXInternalSession {
|
|
2
|
-
menu?: {
|
|
3
|
-
data?: any;
|
|
4
|
-
messageId?: number;
|
|
5
|
-
};
|
|
6
|
-
history: string[];
|
|
7
|
-
lazy: Record<string, any>;
|
|
8
|
-
conversations?: {
|
|
9
|
-
currentChoices: any;
|
|
10
|
-
currentPage: number;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export interface GrammyXSessionData {
|
|
14
|
-
_gx: GrammyXInternalSession;
|
|
15
|
-
conversation?: Record<string, any>;
|
|
16
|
-
[key: string]: any;
|
|
17
|
-
}
|
|
18
|
-
import type { Context, SessionFlavor } from "grammy";
|
|
19
|
-
export interface GrammyXMenuControlPanel {
|
|
20
|
-
nav: (to: string, data?: any) => Promise<unknown>;
|
|
21
|
-
back: (data?: any) => Promise<unknown>;
|
|
22
|
-
update: (data?: any) => Promise<unknown>;
|
|
23
|
-
close: () => void;
|
|
24
|
-
}
|
|
25
|
-
export type GrammyXFlavor<C extends Context = Context> = C & SessionFlavor<GrammyXSessionData> & {
|
|
26
|
-
menu: GrammyXMenuControlPanel;
|
|
27
|
-
};
|
|
28
|
-
type SessionValue<C extends Context> = C extends {
|
|
29
|
-
session: infer S;
|
|
30
|
-
} ? Awaited<S> : never;
|
|
31
|
-
export type WithGrammyXSession<C extends Context> = C & SessionFlavor<SessionValue<C> & GrammyXSessionData> & {
|
|
32
|
-
menu: GrammyXMenuControlPanel;
|
|
33
|
-
};
|
|
34
|
-
export {};
|
|
35
|
-
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../core/src/session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACnC,IAAI,CAAC,EAAE;QACH,IAAI,CAAC,EAAE,GAAG,CAAA;QACV,SAAS,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,aAAa,CAAC,EAAE;QACZ,cAAc,EAAE,GAAG,CAAA;QACnB,WAAW,EAAE,MAAM,CAAA;KACtB,CAAA;CACJ;AAED,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,sBAAsB,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AAED,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEpD,MAAM,WAAW,uBAAuB;IACpC,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,CAAC,GAAG,aAAa,CAAC,kBAAkB,CAAC,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAElI,KAAK,YAAY,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAE1F,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAAA"}
|