@skroz/telegram-bot 1.0.25 → 1.0.27
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 +43 -17
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +117 -25
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":"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;AAoFvC,cAAM,WAAW;IAEb,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAQzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAThB,QAAQ,EAAE,MAAM,EACjC,QAAQ,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CACX,MAAM,EACN,CAAC,KAAK,EAAE,mBAAmB,KAAK,mBAAmB,CACpD,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,iBAAiB,CAAC,CAAC;KACzE,EACgB,qBAAqB,CAAC,oBAAQ,EAC9B,eAAe,CAAC,qBAAS;IAS5C,QAAQ,CAAC,QAAQ,EAAE;QACjB,IAAI,EAAE,MAAM,CACV,MAAM,EACN;YACE,IAAI,EAAE,CACJ,KAAK,CAAC,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE,UAAU,EACpB,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI,KAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAC;SACtC,CACF,CAAC;QACF,KAAK,EAAE,MAAM,CACX,MAAM,EACN;YACE,IAAI,EAAE,CACJ,KAAK,CAAC,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,UAAU,EACpB,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI,KAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAC;SACtC,CACF,CAAC;KACH,CAAC;IAEI,YAAY,CAChB,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,CACd,aAAa,EAAE,gBAAgB,EAC/B,kBAAkB,EAAE,MAAM,EAAE,KACzB,OAAO,CAAC,IAAI,CAAC,EAClB,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,EAC5C,sBAAsB,EAAE,CACtB,gBAAgB,EAAE,mBAAmB,KAClC,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACrD,uBAAuB,EAAE,CACvB,iBAAiB,EAAE,oBAAoB,EACvC,OAAO,EAAE,UAAU,KAChB,OAAO,CAAC,IAAI,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC;IA+DV,SAAS,CACb,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,UAAU,EACpB,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI,GAC7C,OAAO,CAAC,sBAAsB,CAAC;IAiD5B,WAAW,CACf,KAAK,EAAE,mBAAmB,EAC1B,OAAO,CAAC,EAAE,UAAU,EACpB,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,KAAK,IAAI,GAC7C,OAAO,CAAC,sBAAsB,CAAC;IA2C5B,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;IAI1B,UAAU,CAAC,UAAU,EAAE,MAAM;IAI7B,aAAa;IAIb,aAAa,CACjB,QAAQ,EAAE,aAAa,EAAE,GACxB,OAAO,CAAC,wBAAwB,CAAC;IAI9B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAIlE,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3D,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnE,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,iBAAiB;CA0B1B;AAED,eAAe,WAAW,CAAC"}
|
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;
|
|
@@ -100,15 +117,15 @@ class TelegramBot {
|
|
|
100
117
|
if (successful_payment) {
|
|
101
118
|
/* Успешная оплата */
|
|
102
119
|
await handleSuccessfulPayment(successful_payment, message);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (!callbackQuery) {
|
|
123
|
+
/* разбираем входящий текст */
|
|
124
|
+
await handleMessage(message);
|
|
103
125
|
}
|
|
104
|
-
}
|
|
105
|
-
if (!callbackQuery && message) {
|
|
106
|
-
/* разбираем входящий текст */
|
|
107
|
-
await handleMessage(message);
|
|
108
126
|
}
|
|
109
127
|
}
|
|
110
128
|
async sendPhoto(input, message, onExpire) {
|
|
111
|
-
// const { chat_id, reply_markup, caption, photo } = input;
|
|
112
129
|
let sendResult;
|
|
113
130
|
const sendPhotoFunction = () => telegram_api_1.default.sendPhoto({
|
|
114
131
|
protect_content: this.protect_content, // переписывается инпутом
|
|
@@ -137,10 +154,7 @@ class TelegramBot {
|
|
|
137
154
|
}
|
|
138
155
|
if (sendResult.ok && sendResult.result) {
|
|
139
156
|
if (onExpire) {
|
|
140
|
-
pushMessageToExpireList(sendResult.result,
|
|
141
|
-
// sendResult.result,
|
|
142
|
-
// sendResult.result.from,
|
|
143
|
-
{
|
|
157
|
+
pushMessageToExpireList(sendResult.result, {
|
|
144
158
|
seconds: this.expiresMessageSeconds,
|
|
145
159
|
onExpire,
|
|
146
160
|
});
|
|
@@ -152,23 +166,16 @@ class TelegramBot {
|
|
|
152
166
|
return sendResult;
|
|
153
167
|
}
|
|
154
168
|
async sendMessage(input, message, onExpire) {
|
|
155
|
-
// const { chat_id, reply_markup, text, protect_content } = input;
|
|
156
169
|
let sendResult;
|
|
157
170
|
const sendPhotoFunction = () => telegram_api_1.default.sendMessage({
|
|
158
|
-
// chat_id,
|
|
159
|
-
// text,
|
|
160
171
|
parse_mode: 'HTML',
|
|
161
172
|
protect_content: this.protect_content, // переписывается инпутом
|
|
162
|
-
// reply_markup,
|
|
163
173
|
...input,
|
|
164
174
|
}, this.botToken);
|
|
165
175
|
if (message) {
|
|
166
176
|
try {
|
|
167
177
|
sendResult = await telegram_api_1.default.editMessageText({
|
|
168
|
-
// text,
|
|
169
178
|
message_id: message.message_id,
|
|
170
|
-
// reply_markup,
|
|
171
|
-
// chat_id,
|
|
172
179
|
...input,
|
|
173
180
|
}, this.botToken);
|
|
174
181
|
}
|
|
@@ -213,6 +220,25 @@ class TelegramBot {
|
|
|
213
220
|
async deleteMessage(input) {
|
|
214
221
|
return telegram_api_1.default.deleteMessage(input, this.botToken);
|
|
215
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
|
+
}
|
|
216
242
|
}
|
|
217
243
|
exports.default = TelegramBot;
|
|
218
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.27",
|
|
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": "cc51ca25fd82020cb26e2f3a6092d73a0530a690"
|
|
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,
|
|
@@ -175,12 +227,13 @@ class TelegramBot {
|
|
|
175
227
|
if (successful_payment) {
|
|
176
228
|
/* Успешная оплата */
|
|
177
229
|
await handleSuccessfulPayment(successful_payment, message);
|
|
230
|
+
return;
|
|
178
231
|
}
|
|
179
|
-
}
|
|
180
232
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
233
|
+
if (!callbackQuery) {
|
|
234
|
+
/* разбираем входящий текст */
|
|
235
|
+
await handleMessage(message);
|
|
236
|
+
}
|
|
184
237
|
}
|
|
185
238
|
}
|
|
186
239
|
|
|
@@ -189,8 +242,6 @@ class TelegramBot {
|
|
|
189
242
|
message?: TG_Message,
|
|
190
243
|
onExpire?: (resultMessage: TG_Message) => void
|
|
191
244
|
): Promise<TG_SendMessageResponse> {
|
|
192
|
-
// const { chat_id, reply_markup, caption, photo } = input;
|
|
193
|
-
|
|
194
245
|
let sendResult: TG_SendMessageResponse;
|
|
195
246
|
|
|
196
247
|
const sendPhotoFunction = () =>
|
|
@@ -227,16 +278,10 @@ class TelegramBot {
|
|
|
227
278
|
|
|
228
279
|
if (sendResult.ok && sendResult.result) {
|
|
229
280
|
if (onExpire) {
|
|
230
|
-
pushMessageToExpireList(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
// sendResult.result.from,
|
|
235
|
-
{
|
|
236
|
-
seconds: this.expiresMessageSeconds,
|
|
237
|
-
onExpire,
|
|
238
|
-
}
|
|
239
|
-
);
|
|
281
|
+
pushMessageToExpireList(sendResult.result, {
|
|
282
|
+
seconds: this.expiresMessageSeconds,
|
|
283
|
+
onExpire,
|
|
284
|
+
});
|
|
240
285
|
} else {
|
|
241
286
|
deleteMessageFromExpiringList(sendResult.result);
|
|
242
287
|
}
|
|
@@ -250,18 +295,13 @@ class TelegramBot {
|
|
|
250
295
|
message?: TG_Message,
|
|
251
296
|
onExpire?: (resultMessage: TG_Message) => void
|
|
252
297
|
): Promise<TG_SendMessageResponse> {
|
|
253
|
-
// const { chat_id, reply_markup, text, protect_content } = input;
|
|
254
|
-
|
|
255
298
|
let sendResult: TG_SendMessageResponse;
|
|
256
299
|
|
|
257
300
|
const sendPhotoFunction = () =>
|
|
258
301
|
TelegramApi.sendMessage(
|
|
259
302
|
{
|
|
260
|
-
// chat_id,
|
|
261
|
-
// text,
|
|
262
303
|
parse_mode: 'HTML',
|
|
263
304
|
protect_content: this.protect_content, // переписывается инпутом
|
|
264
|
-
// reply_markup,
|
|
265
305
|
...input,
|
|
266
306
|
},
|
|
267
307
|
this.botToken
|
|
@@ -271,10 +311,7 @@ class TelegramBot {
|
|
|
271
311
|
try {
|
|
272
312
|
sendResult = await TelegramApi.editMessageText(
|
|
273
313
|
{
|
|
274
|
-
// text,
|
|
275
314
|
message_id: message.message_id,
|
|
276
|
-
// reply_markup,
|
|
277
|
-
// chat_id,
|
|
278
315
|
...input,
|
|
279
316
|
},
|
|
280
317
|
this.botToken
|
|
@@ -329,6 +366,61 @@ class TelegramBot {
|
|
|
329
366
|
async deleteMessage(input: TG_DeleteMessageInput): Promise<boolean> {
|
|
330
367
|
return TelegramApi.deleteMessage(input, this.botToken);
|
|
331
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
|
+
}
|
|
332
424
|
}
|
|
333
425
|
|
|
334
426
|
export default TelegramBot;
|