@skroz/telegram-bot 1.0.26 → 1.0.28
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.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -14
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +112 -22
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,18 @@ declare class TelegramBot {
|
|
|
5
5
|
private readonly botToken;
|
|
6
6
|
private readonly expiresMessageSeconds?;
|
|
7
7
|
private readonly protect_content?;
|
|
8
|
-
constructor(botToken: string,
|
|
8
|
+
constructor(botToken: string, messages: {
|
|
9
|
+
text?: Record<string, (input: TG_SendMessageInput) => TG_SendMessageInput>;
|
|
10
|
+
photo?: Record<string, (input: TG_SendPhotoInput) => TG_SendPhotoInput>;
|
|
11
|
+
}, expiresMessageSeconds?: number | undefined, protect_content?: boolean | undefined);
|
|
12
|
+
readonly messages: {
|
|
13
|
+
text: Record<string, {
|
|
14
|
+
send: (input: TG_SendMessageInput, message?: TG_Message, onExpire?: (resultMessage: TG_Message) => void) => Promise<TG_SendMessageResponse>;
|
|
15
|
+
}>;
|
|
16
|
+
photo: Record<string, {
|
|
17
|
+
send: (input: TG_SendPhotoInput, message?: TG_Message, onExpire?: (resultMessage: TG_Message) => void) => Promise<TG_SendMessageResponse>;
|
|
18
|
+
}>;
|
|
19
|
+
};
|
|
9
20
|
handleUpdate(update: TG_Update, handleCallback: (callbackQuery: TG_CallbackQuery, callbackDataParams: string[]) => Promise<void>, handleMessage: (message: TG_Message) => void, handlePreCheckoutQuery: (preCheckoutQuery: TG_PreCheckoutQuery) => Promise<{
|
|
10
21
|
ok: boolean;
|
|
11
22
|
error_message?: string;
|
|
@@ -19,6 +30,8 @@ declare class TelegramBot {
|
|
|
19
30
|
getChatInfo(telegramId: string | number): Promise<TG_ChatResponse>;
|
|
20
31
|
sendChatAction(input: TG_SendActionInput): Promise<boolean>;
|
|
21
32
|
deleteMessage(input: TG_DeleteMessageInput): Promise<boolean>;
|
|
33
|
+
private wrapTextMessages;
|
|
34
|
+
private wrapPhotoMessages;
|
|
22
35
|
}
|
|
23
36
|
export default TelegramBot;
|
|
24
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,SAAS,EACV,MAAM,wCAAwC,CAAC;AAYhD,eAAO,MAAM,kBAAkB,eACjB,MAAM,GAAG,MAAM,QACrB,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KACxB,MAC0E,CAAC;AAG9E,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,MAAM,EACf,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -53,11 +53,28 @@ setInterval(async () => {
|
|
|
53
53
|
}));
|
|
54
54
|
}
|
|
55
55
|
}, 15000);
|
|
56
|
+
/* Тип функции отправки в телеграм */
|
|
57
|
+
/* type TelegramSendFunction<TInput, TResponse> = (
|
|
58
|
+
input: TInput
|
|
59
|
+
) => Promise<TResponse>; */
|
|
60
|
+
/* Тип типов функций отправки */
|
|
61
|
+
/* type TG_SendFunction =
|
|
62
|
+
| TelegramSendFunction<TG_SendMessageInput, TG_SendMessageResponse>
|
|
63
|
+
| TelegramSendFunction<TG_SendPhotoInput, TG_SendMessageResponse>; */
|
|
64
|
+
// в будущем:
|
|
65
|
+
// | TelegramSendFunction<TG_SendDocumentInput, TG_SendDocumentResponse>
|
|
66
|
+
// interface TelegramMessageHandler<TInput, TResponse> {
|
|
67
|
+
// send: (input: TInput) => Promise<TResponse>;
|
|
68
|
+
// }
|
|
56
69
|
class TelegramBot {
|
|
57
|
-
constructor(botToken, expiresMessageSeconds, protect_content) {
|
|
70
|
+
constructor(botToken, messages, expiresMessageSeconds, protect_content) {
|
|
58
71
|
this.botToken = botToken;
|
|
59
72
|
this.expiresMessageSeconds = expiresMessageSeconds;
|
|
60
73
|
this.protect_content = protect_content;
|
|
74
|
+
this.messages = {
|
|
75
|
+
text: this.wrapTextMessages(messages.text ?? {}),
|
|
76
|
+
photo: this.wrapPhotoMessages(messages.photo ?? {}),
|
|
77
|
+
};
|
|
61
78
|
}
|
|
62
79
|
async handleUpdate(update, handleCallback, handleMessage, handlePreCheckoutQuery, handleSuccessfulPayment) {
|
|
63
80
|
const callbackQuery = update.callback_query;
|
|
@@ -103,14 +120,12 @@ class TelegramBot {
|
|
|
103
120
|
return;
|
|
104
121
|
}
|
|
105
122
|
if (!callbackQuery) {
|
|
106
|
-
// && message
|
|
107
123
|
/* разбираем входящий текст */
|
|
108
124
|
await handleMessage(message);
|
|
109
125
|
}
|
|
110
126
|
}
|
|
111
127
|
}
|
|
112
128
|
async sendPhoto(input, message, onExpire) {
|
|
113
|
-
// const { chat_id, reply_markup, caption, photo } = input;
|
|
114
129
|
let sendResult;
|
|
115
130
|
const sendPhotoFunction = () => telegram_api_1.default.sendPhoto({
|
|
116
131
|
protect_content: this.protect_content, // переписывается инпутом
|
|
@@ -139,10 +154,7 @@ class TelegramBot {
|
|
|
139
154
|
}
|
|
140
155
|
if (sendResult.ok && sendResult.result) {
|
|
141
156
|
if (onExpire) {
|
|
142
|
-
pushMessageToExpireList(sendResult.result,
|
|
143
|
-
// sendResult.result,
|
|
144
|
-
// sendResult.result.from,
|
|
145
|
-
{
|
|
157
|
+
pushMessageToExpireList(sendResult.result, {
|
|
146
158
|
seconds: this.expiresMessageSeconds,
|
|
147
159
|
onExpire,
|
|
148
160
|
});
|
|
@@ -154,23 +166,16 @@ class TelegramBot {
|
|
|
154
166
|
return sendResult;
|
|
155
167
|
}
|
|
156
168
|
async sendMessage(input, message, onExpire) {
|
|
157
|
-
// const { chat_id, reply_markup, text, protect_content } = input;
|
|
158
169
|
let sendResult;
|
|
159
170
|
const sendPhotoFunction = () => telegram_api_1.default.sendMessage({
|
|
160
|
-
// chat_id,
|
|
161
|
-
// text,
|
|
162
171
|
parse_mode: 'HTML',
|
|
163
172
|
protect_content: this.protect_content, // переписывается инпутом
|
|
164
|
-
// reply_markup,
|
|
165
173
|
...input,
|
|
166
174
|
}, this.botToken);
|
|
167
175
|
if (message) {
|
|
168
176
|
try {
|
|
169
177
|
sendResult = await telegram_api_1.default.editMessageText({
|
|
170
|
-
// text,
|
|
171
178
|
message_id: message.message_id,
|
|
172
|
-
// reply_markup,
|
|
173
|
-
// chat_id,
|
|
174
179
|
...input,
|
|
175
180
|
}, this.botToken);
|
|
176
181
|
}
|
|
@@ -215,6 +220,25 @@ class TelegramBot {
|
|
|
215
220
|
async deleteMessage(input) {
|
|
216
221
|
return telegram_api_1.default.deleteMessage(input, this.botToken);
|
|
217
222
|
}
|
|
223
|
+
// генераторы типовых методов
|
|
224
|
+
wrapTextMessages(defs) {
|
|
225
|
+
const result = {};
|
|
226
|
+
Object.entries(defs).forEach(([key, builder]) => {
|
|
227
|
+
result[key] = {
|
|
228
|
+
send: (input, message, onExpire) => this.sendMessage(builder(input ?? {}), message, onExpire),
|
|
229
|
+
};
|
|
230
|
+
});
|
|
231
|
+
return result;
|
|
232
|
+
}
|
|
233
|
+
wrapPhotoMessages(defs) {
|
|
234
|
+
const result = {};
|
|
235
|
+
Object.entries(defs).forEach(([key, builder]) => {
|
|
236
|
+
result[key] = {
|
|
237
|
+
send: (input, message, onExpire) => this.sendPhoto(builder(input ?? {}), message, onExpire),
|
|
238
|
+
};
|
|
239
|
+
});
|
|
240
|
+
return result;
|
|
241
|
+
}
|
|
218
242
|
}
|
|
219
243
|
exports.default = TelegramBot;
|
|
220
244
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,uEAA8C;AAiB9C,yDAAyD;AAEzD,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;AACrC,wCAAwC;AACxC,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,uCAAuC;AACvC,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU;AAEhD,8EAA8E;AACvE,MAAM,kBAAkB,GAAG,CAChC,UAA2B,EAC3B,IAAyB,EACjB,EAAE,CACV,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAJjE,QAAA,kBAAkB,sBAI+C;AAE9E,8EAA8E;AACvE,MAAM,eAAe,GAAG,CAAC,IAAY,EAAY,EAAE,CACxD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAD1B,QAAA,eAAe,mBACW;AAEvC,MAAM,mBAAmB,GAKnB,EAAE,CAAC;AAET,MAAM,uBAAuB,GAAG,CAC9B,OAAmB;AACnB,iBAAiB;AACjB,OAAqB,EACrB,EAAE;IACF,MAAM,SAAS,GACb,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,qBAAqB,CAAC,GAAG,IAAI,CAAC;IAEjE,mBAAmB,CAAC,IAAI,CAAC;QACvB,OAAO;QACP,QAAQ;QACR,SAAS;QACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,2BAA2B;AAC3B,MAAM,oBAAoB,GAAG,GAQzB,EAAE;IACJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;IAC1E,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,wCAAwC;AACxC,MAAM,6BAA6B,GAAG,CAAC,OAAmB,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CACvD,CAAC;IACF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAEF,gDAAgD;AAChD,WAAW,CAAC,KAAK,IAAI,EAAE;IACrB,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACvB,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC,EAAE,KAAK,CAAC,CAAC;AAOV,MAAM,WAAW;IACf,YACmB,QAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skroz/telegram-bot",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "git@gitlab.com:skroz/libs/utils.git",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@skroz/telegram-api": "^1.0.14"
|
|
23
23
|
},
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "0c39573cfdd1a4bcb4666b8ce6dbda86d12e4e08"
|
|
25
25
|
}
|
package/src/index.ts
CHANGED
|
@@ -101,12 +101,64 @@ type ExpiresInput = {
|
|
|
101
101
|
onExpire: (resultMessage: TG_Message) => void;
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
+
/* Тип функции отправки в телеграм */
|
|
105
|
+
/* type TelegramSendFunction<TInput, TResponse> = (
|
|
106
|
+
input: TInput
|
|
107
|
+
) => Promise<TResponse>; */
|
|
108
|
+
|
|
109
|
+
/* Тип типов функций отправки */
|
|
110
|
+
/* type TG_SendFunction =
|
|
111
|
+
| TelegramSendFunction<TG_SendMessageInput, TG_SendMessageResponse>
|
|
112
|
+
| TelegramSendFunction<TG_SendPhotoInput, TG_SendMessageResponse>; */
|
|
113
|
+
// в будущем:
|
|
114
|
+
// | TelegramSendFunction<TG_SendDocumentInput, TG_SendDocumentResponse>
|
|
115
|
+
|
|
116
|
+
// interface TelegramMessageHandler<TInput, TResponse> {
|
|
117
|
+
// send: (input: TInput) => Promise<TResponse>;
|
|
118
|
+
// }
|
|
119
|
+
|
|
104
120
|
class TelegramBot {
|
|
105
121
|
constructor(
|
|
106
122
|
private readonly botToken: string,
|
|
123
|
+
messages: {
|
|
124
|
+
text?: Record<
|
|
125
|
+
string,
|
|
126
|
+
(input: TG_SendMessageInput) => TG_SendMessageInput
|
|
127
|
+
>;
|
|
128
|
+
photo?: Record<string, (input: TG_SendPhotoInput) => TG_SendPhotoInput>;
|
|
129
|
+
},
|
|
107
130
|
private readonly expiresMessageSeconds?: number,
|
|
108
131
|
private readonly protect_content?: boolean
|
|
109
|
-
) {
|
|
132
|
+
) {
|
|
133
|
+
this.messages = {
|
|
134
|
+
text: this.wrapTextMessages(messages.text ?? {}),
|
|
135
|
+
photo: this.wrapPhotoMessages(messages.photo ?? {}),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// публичный контейнер
|
|
140
|
+
readonly messages: {
|
|
141
|
+
text: Record<
|
|
142
|
+
string,
|
|
143
|
+
{
|
|
144
|
+
send: (
|
|
145
|
+
input: TG_SendMessageInput,
|
|
146
|
+
message?: TG_Message,
|
|
147
|
+
onExpire?: (resultMessage: TG_Message) => void
|
|
148
|
+
) => Promise<TG_SendMessageResponse>;
|
|
149
|
+
}
|
|
150
|
+
>;
|
|
151
|
+
photo: Record<
|
|
152
|
+
string,
|
|
153
|
+
{
|
|
154
|
+
send: (
|
|
155
|
+
input: TG_SendPhotoInput,
|
|
156
|
+
message?: TG_Message,
|
|
157
|
+
onExpire?: (resultMessage: TG_Message) => void
|
|
158
|
+
) => Promise<TG_SendMessageResponse>;
|
|
159
|
+
}
|
|
160
|
+
>;
|
|
161
|
+
};
|
|
110
162
|
|
|
111
163
|
async handleUpdate(
|
|
112
164
|
update: TG_Update,
|
|
@@ -179,7 +231,6 @@ class TelegramBot {
|
|
|
179
231
|
}
|
|
180
232
|
|
|
181
233
|
if (!callbackQuery) {
|
|
182
|
-
// && message
|
|
183
234
|
/* разбираем входящий текст */
|
|
184
235
|
await handleMessage(message);
|
|
185
236
|
}
|
|
@@ -191,8 +242,6 @@ class TelegramBot {
|
|
|
191
242
|
message?: TG_Message,
|
|
192
243
|
onExpire?: (resultMessage: TG_Message) => void
|
|
193
244
|
): Promise<TG_SendMessageResponse> {
|
|
194
|
-
// const { chat_id, reply_markup, caption, photo } = input;
|
|
195
|
-
|
|
196
245
|
let sendResult: TG_SendMessageResponse;
|
|
197
246
|
|
|
198
247
|
const sendPhotoFunction = () =>
|
|
@@ -229,16 +278,10 @@ class TelegramBot {
|
|
|
229
278
|
|
|
230
279
|
if (sendResult.ok && sendResult.result) {
|
|
231
280
|
if (onExpire) {
|
|
232
|
-
pushMessageToExpireList(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
// sendResult.result.from,
|
|
237
|
-
{
|
|
238
|
-
seconds: this.expiresMessageSeconds,
|
|
239
|
-
onExpire,
|
|
240
|
-
}
|
|
241
|
-
);
|
|
281
|
+
pushMessageToExpireList(sendResult.result, {
|
|
282
|
+
seconds: this.expiresMessageSeconds,
|
|
283
|
+
onExpire,
|
|
284
|
+
});
|
|
242
285
|
} else {
|
|
243
286
|
deleteMessageFromExpiringList(sendResult.result);
|
|
244
287
|
}
|
|
@@ -252,18 +295,13 @@ class TelegramBot {
|
|
|
252
295
|
message?: TG_Message,
|
|
253
296
|
onExpire?: (resultMessage: TG_Message) => void
|
|
254
297
|
): Promise<TG_SendMessageResponse> {
|
|
255
|
-
// const { chat_id, reply_markup, text, protect_content } = input;
|
|
256
|
-
|
|
257
298
|
let sendResult: TG_SendMessageResponse;
|
|
258
299
|
|
|
259
300
|
const sendPhotoFunction = () =>
|
|
260
301
|
TelegramApi.sendMessage(
|
|
261
302
|
{
|
|
262
|
-
// chat_id,
|
|
263
|
-
// text,
|
|
264
303
|
parse_mode: 'HTML',
|
|
265
304
|
protect_content: this.protect_content, // переписывается инпутом
|
|
266
|
-
// reply_markup,
|
|
267
305
|
...input,
|
|
268
306
|
},
|
|
269
307
|
this.botToken
|
|
@@ -273,10 +311,7 @@ class TelegramBot {
|
|
|
273
311
|
try {
|
|
274
312
|
sendResult = await TelegramApi.editMessageText(
|
|
275
313
|
{
|
|
276
|
-
// text,
|
|
277
314
|
message_id: message.message_id,
|
|
278
|
-
// reply_markup,
|
|
279
|
-
// chat_id,
|
|
280
315
|
...input,
|
|
281
316
|
},
|
|
282
317
|
this.botToken
|
|
@@ -331,6 +366,61 @@ class TelegramBot {
|
|
|
331
366
|
async deleteMessage(input: TG_DeleteMessageInput): Promise<boolean> {
|
|
332
367
|
return TelegramApi.deleteMessage(input, this.botToken);
|
|
333
368
|
}
|
|
369
|
+
|
|
370
|
+
// генераторы типовых методов
|
|
371
|
+
private wrapTextMessages(
|
|
372
|
+
defs: Record<string, (input: TG_SendMessageInput) => TG_SendMessageInput>
|
|
373
|
+
) {
|
|
374
|
+
const result: Record<
|
|
375
|
+
string,
|
|
376
|
+
{
|
|
377
|
+
send: (
|
|
378
|
+
input: TG_SendMessageInput,
|
|
379
|
+
message?: TG_Message,
|
|
380
|
+
onExpire?: (m: TG_Message) => void
|
|
381
|
+
) => Promise<TG_SendMessageResponse>;
|
|
382
|
+
}
|
|
383
|
+
> = {};
|
|
384
|
+
|
|
385
|
+
Object.entries(defs).forEach(([key, builder]) => {
|
|
386
|
+
result[key] = {
|
|
387
|
+
send: (input, message, onExpire) =>
|
|
388
|
+
this.sendMessage(
|
|
389
|
+
builder(input ?? ({} as TG_SendMessageInput)),
|
|
390
|
+
message,
|
|
391
|
+
onExpire
|
|
392
|
+
),
|
|
393
|
+
};
|
|
394
|
+
});
|
|
395
|
+
return result;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
private wrapPhotoMessages(
|
|
399
|
+
defs: Record<string, (input: TG_SendPhotoInput) => TG_SendPhotoInput>
|
|
400
|
+
) {
|
|
401
|
+
const result: Record<
|
|
402
|
+
string,
|
|
403
|
+
{
|
|
404
|
+
send: (
|
|
405
|
+
input: TG_SendPhotoInput,
|
|
406
|
+
message?: TG_Message,
|
|
407
|
+
onExpire?: (m: TG_Message) => void
|
|
408
|
+
) => Promise<TG_SendMessageResponse>;
|
|
409
|
+
}
|
|
410
|
+
> = {};
|
|
411
|
+
|
|
412
|
+
Object.entries(defs).forEach(([key, builder]) => {
|
|
413
|
+
result[key] = {
|
|
414
|
+
send: (input, message, onExpire) =>
|
|
415
|
+
this.sendPhoto(
|
|
416
|
+
builder(input ?? ({} as TG_SendPhotoInput)),
|
|
417
|
+
message,
|
|
418
|
+
onExpire
|
|
419
|
+
),
|
|
420
|
+
};
|
|
421
|
+
});
|
|
422
|
+
return result;
|
|
423
|
+
}
|
|
334
424
|
}
|
|
335
425
|
|
|
336
426
|
export default TelegramBot;
|