nexushub-commands 2.0.5 → 2.0.6
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/lib/commands/deposit/Deposit.command.js +2 -6
- package/lib/shared-commands/ParserSharedCommands.service.d.ts +0 -12
- package/lib/shared-commands/ParserSharedCommands.service.js +2 -46
- package/package.json +1 -1
- package/src/commands/deposit/Deposit.command.ts +72 -85
- package/src/shared-commands/ParserSharedCommands.service.ts +3 -53
- package/test-imports.d.ts +0 -1
- package/test.d.ts +0 -5
|
@@ -60,7 +60,7 @@ let DepositCommand = class DepositCommand extends evogram_1.Command {
|
|
|
60
60
|
}
|
|
61
61
|
let order;
|
|
62
62
|
if (method === 'card') {
|
|
63
|
-
for (const _method of ['qrcode', 'card']) {
|
|
63
|
+
for (const _method of [...(config.currency.toLowerCase() === 'rub' ? ['qrcode'] : []), 'card']) {
|
|
64
64
|
method = _method;
|
|
65
65
|
order = yield config.API.post(`orders`, {
|
|
66
66
|
mirrorId: context.mammoth.mirror.mirror.id,
|
|
@@ -168,11 +168,7 @@ tslib_1.__decorate([
|
|
|
168
168
|
header: '<b>📤 Выберите удобный для Вас метод пополнения.</b>',
|
|
169
169
|
}, {
|
|
170
170
|
reply_markup: {
|
|
171
|
-
inline_keyboard: [
|
|
172
|
-
...(allowedMethods.includes('card') ? [[{ text: '💳 Банковская карта', command: DepositCommand, payload: { method: 'card' } }]] : []),
|
|
173
|
-
[{ text: '🪙 Криптовалюта', command: DepositCommand, payload: { method: 'cryptowallet' } }],
|
|
174
|
-
[{ text: '🎫 Промокод', command: DepositByPromocode_command_1.DepositByPromocodeCommand }],
|
|
175
|
-
],
|
|
171
|
+
inline_keyboard: [...(allowedMethods.includes('card') ? [[{ text: '💳 Банковская карта', command: DepositCommand, payload: { method: 'card' } }]] : []), [{ text: '🪙 Криптовалюта', command: DepositCommand, payload: { method: 'cryptowallet' } }], [{ text: '🎫 Промокод', command: DepositByPromocode_command_1.DepositByPromocodeCommand }]],
|
|
176
172
|
},
|
|
177
173
|
});
|
|
178
174
|
}
|
|
@@ -11,24 +11,12 @@ export declare class ParserSharedCommandsService {
|
|
|
11
11
|
* @returns преобразованный код команды
|
|
12
12
|
*/
|
|
13
13
|
static transformCommand(commandContent: string): string;
|
|
14
|
-
/**
|
|
15
|
-
* Проверяет, является ли импорт локальным (относительным путем)
|
|
16
|
-
* @param importPath - путь импорта
|
|
17
|
-
* @returns true, если импорт локальный
|
|
18
|
-
*/
|
|
19
|
-
private static isLocalImport;
|
|
20
14
|
/**
|
|
21
15
|
* Удаляет только локальные импорты, сохраняя нелокальные
|
|
22
16
|
* @param content - исходный код
|
|
23
17
|
* @returns код с удаленными локальными импортами
|
|
24
18
|
*/
|
|
25
19
|
private static removeLocalImports;
|
|
26
|
-
/**
|
|
27
|
-
* Удаляет все оставшиеся приватные методы с умным поиском
|
|
28
|
-
* @param content - код для очистки
|
|
29
|
-
* @returns код с удаленными приватными методами
|
|
30
|
-
*/
|
|
31
|
-
private static removeRemainingPrivateMethods;
|
|
32
20
|
/**
|
|
33
21
|
* Создает API вызов для метода
|
|
34
22
|
* @param methodName - название метода
|
|
@@ -56,7 +56,7 @@ class ParserSharedCommandsService {
|
|
|
56
56
|
// Ищем начало метода
|
|
57
57
|
for (let i = 0; i < lines.length; i++) {
|
|
58
58
|
const line = lines[i];
|
|
59
|
-
if (line.includes(`private`) && line.includes(`${methodName}(`) && line.includes('{')) {
|
|
59
|
+
if (line.includes(`private static`) && line.includes(`${methodName}(`) && line.includes('{')) {
|
|
60
60
|
methodStartIndex = i;
|
|
61
61
|
break;
|
|
62
62
|
}
|
|
@@ -77,18 +77,8 @@ class ParserSharedCommandsService {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
});
|
|
80
|
-
// Дополнительная очистка - убираем все оставшиеся приватные методы с умным поиском
|
|
81
|
-
transformedContent = this.removeRemainingPrivateMethods(transformedContent);
|
|
82
80
|
return transformedContent;
|
|
83
81
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Проверяет, является ли импорт локальным (относительным путем)
|
|
86
|
-
* @param importPath - путь импорта
|
|
87
|
-
* @returns true, если импорт локальный
|
|
88
|
-
*/
|
|
89
|
-
static isLocalImport(importPath) {
|
|
90
|
-
return importPath.startsWith('./') || importPath.startsWith('../') || importPath.startsWith('/');
|
|
91
|
-
}
|
|
92
82
|
/**
|
|
93
83
|
* Удаляет только локальные импорты, сохраняя нелокальные
|
|
94
84
|
* @param content - исходный код
|
|
@@ -101,41 +91,6 @@ class ParserSharedCommandsService {
|
|
|
101
91
|
result = result.replace(/import\s+.*?from\s+['"]\/[^'"]*['"];?\n?/g, '');
|
|
102
92
|
return result;
|
|
103
93
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Удаляет все оставшиеся приватные методы с умным поиском
|
|
106
|
-
* @param content - код для очистки
|
|
107
|
-
* @returns код с удаленными приватными методами
|
|
108
|
-
*/
|
|
109
|
-
static removeRemainingPrivateMethods(content) {
|
|
110
|
-
let result = content;
|
|
111
|
-
const privateMethodRegex = /private\s+(?:static\s+)?(?:async\s+)?\w+\s*\([^)]*\)\s*\{/g;
|
|
112
|
-
let match;
|
|
113
|
-
while ((match = privateMethodRegex.exec(result)) !== null) {
|
|
114
|
-
const startIndex = match.index;
|
|
115
|
-
const startBraceIndex = result.indexOf('{', startIndex);
|
|
116
|
-
if (startBraceIndex !== -1) {
|
|
117
|
-
// Находим конец метода, подсчитывая скобки
|
|
118
|
-
let braceCount = 1;
|
|
119
|
-
let endIndex = startBraceIndex + 1;
|
|
120
|
-
while (braceCount > 0 && endIndex < result.length) {
|
|
121
|
-
const char = result[endIndex];
|
|
122
|
-
if (char === '{')
|
|
123
|
-
braceCount++;
|
|
124
|
-
else if (char === '}')
|
|
125
|
-
braceCount--;
|
|
126
|
-
endIndex++;
|
|
127
|
-
}
|
|
128
|
-
if (braceCount === 0) {
|
|
129
|
-
// Удаляем весь метод от начала до конца
|
|
130
|
-
const methodEndIndex = endIndex;
|
|
131
|
-
result = result.substring(0, startIndex) + result.substring(methodEndIndex);
|
|
132
|
-
// Сбрасываем регулярное выражение, так как индексы изменились
|
|
133
|
-
privateMethodRegex.lastIndex = 0;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return result;
|
|
138
|
-
}
|
|
139
94
|
/**
|
|
140
95
|
* Создает API вызов для метода
|
|
141
96
|
* @param methodName - название метода
|
|
@@ -254,3 +209,4 @@ class ParserSharedCommandsService {
|
|
|
254
209
|
}
|
|
255
210
|
}
|
|
256
211
|
exports.ParserSharedCommandsService = ParserSharedCommandsService;
|
|
212
|
+
fs.writeFileSync('test.ts', ParserSharedCommandsService.transformCommand(fs.readFileSync('../escort/src/commands/shared/models/PickActiveModels.srdcmd.ts', 'utf-8')));
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { Command, CommandArgument, CommandD, numberValidator } from 'evogram'
|
|
2
|
-
import { CommandContext } from 'evogram/lib/migrated'
|
|
3
|
-
import { Client } from '../../Client'
|
|
4
|
-
import { formatMessage } from '../../utils/formatMessage'
|
|
5
|
-
import { CheckPaidOrderCommand } from './CheckPaidOrder.command'
|
|
6
|
-
import { DepositByPromocodeCommand } from './DepositByPromocode.command'
|
|
7
|
-
import { GetDepositOrderCommand } from './GetDepositOrder.command'
|
|
1
|
+
import { Command, CommandArgument, CommandD, numberValidator } from 'evogram'
|
|
2
|
+
import { CommandContext } from 'evogram/lib/migrated'
|
|
3
|
+
import { Client } from '../../Client'
|
|
4
|
+
import { formatMessage } from '../../utils/formatMessage'
|
|
5
|
+
import { CheckPaidOrderCommand } from './CheckPaidOrder.command'
|
|
6
|
+
import { DepositByPromocodeCommand } from './DepositByPromocode.command'
|
|
7
|
+
import { GetDepositOrderCommand } from './GetDepositOrder.command'
|
|
8
8
|
|
|
9
9
|
// Функция для маскировки реквизитов: оставляет только последние 4 не пробельных символа
|
|
10
10
|
function maskExceptLast4(str: string): string {
|
|
11
|
-
if (!str) return ''
|
|
11
|
+
if (!str) return ''
|
|
12
12
|
|
|
13
|
-
const chars = str.split('')
|
|
14
|
-
let nonSpaceCount = 0
|
|
13
|
+
const chars = str.split('')
|
|
14
|
+
let nonSpaceCount = 0
|
|
15
15
|
for (let i = chars.length - 1; i >= 0; i--) {
|
|
16
16
|
if (chars[i] !== ' ') {
|
|
17
|
-
nonSpaceCount
|
|
18
|
-
if (nonSpaceCount > 4) chars[i] = '*'
|
|
17
|
+
nonSpaceCount++
|
|
18
|
+
if (nonSpaceCount > 4) chars[i] = '*'
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
return chars.join('')
|
|
21
|
+
return chars.join('')
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
@CommandD({ name: 'deposit', description: [{ text: 'Пополнение' }, { language: 'en', text: 'Deposit' }] })
|
|
@@ -27,18 +27,17 @@ export class DepositCommand extends Command {
|
|
|
27
27
|
context: CommandContext,
|
|
28
28
|
|
|
29
29
|
@CommandArgument('method', async ({ value, context }) => {
|
|
30
|
-
const config = Client.config(context)
|
|
30
|
+
const config = Client.config(context)
|
|
31
31
|
|
|
32
32
|
if (value) {
|
|
33
|
-
const paymentMethods = (await config.API.get('/payments')).data
|
|
34
|
-
if (!paymentMethods.find((x: any) => x.isEnabled && x.type.toLowerCase() === value.toLowerCase()))
|
|
35
|
-
throw new Error('К сожалению, данный метод пополнения временно недоступен');
|
|
33
|
+
const paymentMethods = (await config.API.get('/payments')).data
|
|
34
|
+
if (!paymentMethods.find((x: any) => x.isEnabled && x.type.toLowerCase() === value.toLowerCase())) throw new Error('К сожалению, данный метод пополнения временно недоступен')
|
|
36
35
|
|
|
37
|
-
if (value !== 'cryptowallet') return value
|
|
36
|
+
if (value !== 'cryptowallet') return value
|
|
38
37
|
}
|
|
39
38
|
|
|
40
39
|
if (!value) {
|
|
41
|
-
const allowedMethods = (await config.API.get('/orders/allowedMethods', { params: { currency: config.currency } })).data
|
|
40
|
+
const allowedMethods = (await config.API.get('/orders/allowedMethods', { params: { currency: config.currency } })).data
|
|
42
41
|
|
|
43
42
|
await context.sendFormatted(
|
|
44
43
|
{
|
|
@@ -47,14 +46,10 @@ export class DepositCommand extends Command {
|
|
|
47
46
|
},
|
|
48
47
|
{
|
|
49
48
|
reply_markup: {
|
|
50
|
-
inline_keyboard: [
|
|
51
|
-
...(allowedMethods.includes('card') ? [[{ text: '💳 Банковская карта', command: DepositCommand, payload: { method: 'card' } }]] : []),
|
|
52
|
-
[{ text: '🪙 Криптовалюта', command: DepositCommand, payload: { method: 'cryptowallet' } }],
|
|
53
|
-
[{ text: '🎫 Промокод', command: DepositByPromocodeCommand }],
|
|
54
|
-
],
|
|
49
|
+
inline_keyboard: [...(allowedMethods.includes('card') ? [[{ text: '💳 Банковская карта', command: DepositCommand, payload: { method: 'card' } }]] : []), [{ text: '🪙 Криптовалюта', command: DepositCommand, payload: { method: 'cryptowallet' } }], [{ text: '🎫 Промокод', command: DepositByPromocodeCommand }]],
|
|
55
50
|
},
|
|
56
51
|
}
|
|
57
|
-
)
|
|
52
|
+
)
|
|
58
53
|
} else if (value === 'cryptowallet') {
|
|
59
54
|
await context.sendFormatted(
|
|
60
55
|
{
|
|
@@ -71,19 +66,19 @@ export class DepositCommand extends Command {
|
|
|
71
66
|
],
|
|
72
67
|
},
|
|
73
68
|
}
|
|
74
|
-
)
|
|
69
|
+
)
|
|
75
70
|
}
|
|
76
71
|
})
|
|
77
72
|
method: string,
|
|
78
73
|
|
|
79
74
|
@CommandArgument('coin', async ({ value, args, context }) => {
|
|
80
|
-
if (args.method !== 'cryptoWallet') return true
|
|
81
|
-
else if (Number(value)) return value
|
|
75
|
+
if (args.method !== 'cryptoWallet') return true
|
|
76
|
+
else if (Number(value)) return value
|
|
82
77
|
|
|
83
|
-
const config = Client.config(context)
|
|
78
|
+
const config = Client.config(context)
|
|
84
79
|
|
|
85
80
|
if (!value) {
|
|
86
|
-
const wallets = await config.API.get('/crypto/coins').then((x) => x.data)
|
|
81
|
+
const wallets = await config.API.get('/crypto/coins').then((x) => x.data)
|
|
87
82
|
context.sendFormatted(
|
|
88
83
|
{
|
|
89
84
|
header: '<b>🪙 Доступные криптовалюты для пополнения:</b>',
|
|
@@ -100,10 +95,10 @@ export class DepositCommand extends Command {
|
|
|
100
95
|
]),
|
|
101
96
|
},
|
|
102
97
|
}
|
|
103
|
-
)
|
|
98
|
+
)
|
|
104
99
|
} else {
|
|
105
|
-
const wallets = await config.API.get(`/crypto/coins/${value}/wallets`).then((x) => x.data)
|
|
106
|
-
if (wallets.length === 1) return wallets[0].id
|
|
100
|
+
const wallets = await config.API.get(`/crypto/coins/${value}/wallets`).then((x) => x.data)
|
|
101
|
+
if (wallets.length === 1) return wallets[0].id
|
|
107
102
|
|
|
108
103
|
context.sendFormatted(
|
|
109
104
|
{
|
|
@@ -121,7 +116,7 @@ export class DepositCommand extends Command {
|
|
|
121
116
|
]),
|
|
122
117
|
},
|
|
123
118
|
}
|
|
124
|
-
)
|
|
119
|
+
)
|
|
125
120
|
}
|
|
126
121
|
})
|
|
127
122
|
coin: string | undefined,
|
|
@@ -130,17 +125,17 @@ export class DepositCommand extends Command {
|
|
|
130
125
|
{
|
|
131
126
|
name: 'deposit',
|
|
132
127
|
question: async ({ context, error, args, validateArgs }) => {
|
|
133
|
-
const config = Client.config(context)
|
|
128
|
+
const config = Client.config(context)
|
|
134
129
|
|
|
135
|
-
let minAmountSetting = JSON.parse(context.state.settings.find((x: any) => x.name === 'minDeposit').value)
|
|
136
|
-
let minAmount = minAmountSetting[config.currency] ?? (await minAmountSetting['RUB'].convert({ from: 'RUB', to: config.currency }))
|
|
130
|
+
let minAmountSetting = JSON.parse(context.state.settings.find((x: any) => x.name === 'minDeposit').value)
|
|
131
|
+
let minAmount = minAmountSetting[config.currency] ?? (await minAmountSetting['RUB'].convert({ from: 'RUB', to: config.currency }))
|
|
137
132
|
|
|
138
|
-
const minDepositByMethod = await config.API.get('/config/minDepositByMethod').then((x) => x.data.value)
|
|
133
|
+
const minDepositByMethod = await config.API.get('/config/minDepositByMethod').then((x) => x.data.value)
|
|
139
134
|
// prettier-ignore
|
|
140
135
|
if (minDepositByMethod && minDepositByMethod[args.method] !== undefined && (await minAmount.convert({ from: config.currency, to: 'RUB' })) < minDepositByMethod[args.method])
|
|
141
136
|
minAmount = await minDepositByMethod[args.method].convert({ from: 'RUB', to: config.currency });
|
|
142
137
|
|
|
143
|
-
validateArgs.minAmount = minAmount
|
|
138
|
+
validateArgs.minAmount = minAmount
|
|
144
139
|
return (
|
|
145
140
|
await context.sendFormattedQuestion({
|
|
146
141
|
photo: ['card', 'qrcode'].includes(args.method) ? config.images.deposit : config.images.depositCrypto,
|
|
@@ -153,38 +148,32 @@ export class DepositCommand extends Command {
|
|
|
153
148
|
footer: `<i>Минимальная сумма пополнения: {{ ${Number(minAmount).toLocaleString('ru')} ${config.currency} }}</i>`,
|
|
154
149
|
error: error?.message,
|
|
155
150
|
})
|
|
156
|
-
).text
|
|
151
|
+
).text
|
|
157
152
|
},
|
|
158
153
|
},
|
|
159
154
|
numberValidator({ allowFloat: true, min: 0 }),
|
|
160
155
|
async ({ value, context, validateArgs }) => {
|
|
161
|
-
const config = Client.config(context)
|
|
156
|
+
const config = Client.config(context)
|
|
162
157
|
|
|
163
|
-
const maxDeposit = await config.API.get('/config/maxDepositInService').then((x) => x.data.value)
|
|
164
|
-
const depositAmount = await value.convert({ from: config.currency, to: 'RUB' })
|
|
158
|
+
const maxDeposit = await config.API.get('/config/maxDepositInService').then((x) => x.data.value)
|
|
159
|
+
const depositAmount = await value.convert({ from: config.currency, to: 'RUB' })
|
|
165
160
|
|
|
166
|
-
if (depositAmount > maxDeposit && validateArgs.method !== 'cryptoWallet')
|
|
167
|
-
throw new Error(
|
|
168
|
-
`Пополнение, более чем на ${await maxDeposit.convert({ from: 'RUB', to: config.currency })}, доступно только через <a href="t.me/{{ ${
|
|
169
|
-
config.support.username
|
|
170
|
-
} }}">тех. поддержку</a>`
|
|
171
|
-
);
|
|
161
|
+
if (depositAmount > maxDeposit && validateArgs.method !== 'cryptoWallet') throw new Error(`Пополнение, более чем на ${await maxDeposit.convert({ from: 'RUB', to: config.currency })}, доступно только через <a href="t.me/{{ ${config.support.username} }}">тех. поддержку</a>`)
|
|
172
162
|
|
|
173
|
-
return value
|
|
163
|
+
return value
|
|
174
164
|
},
|
|
175
165
|
async ({ value, context, validateArgs }) => {
|
|
176
|
-
const config = Client.config(context)
|
|
166
|
+
const config = Client.config(context)
|
|
177
167
|
|
|
178
|
-
if (Number(value) < Number(validateArgs.minAmount))
|
|
179
|
-
throw new Error(`Минимальная сумма пополнения: ${Number(validateArgs.minAmount).toLocaleString('ru')} ${config.currency}`);
|
|
168
|
+
if (Number(value) < Number(validateArgs.minAmount)) throw new Error(`Минимальная сумма пополнения: ${Number(validateArgs.minAmount).toLocaleString('ru')} ${config.currency}`)
|
|
180
169
|
|
|
181
|
-
return value
|
|
170
|
+
return value
|
|
182
171
|
}
|
|
183
172
|
)
|
|
184
173
|
deposit: number
|
|
185
174
|
) {
|
|
186
|
-
const config = Client.config(context)
|
|
187
|
-
let interval: NodeJS.Timeout
|
|
175
|
+
const config = Client.config(context)
|
|
176
|
+
let interval: NodeJS.Timeout
|
|
188
177
|
|
|
189
178
|
if (['card', 'qrcode'].includes(method)) {
|
|
190
179
|
const message = await context.sendFormatted({
|
|
@@ -195,9 +184,9 @@ export class DepositCommand extends Command {
|
|
|
195
184
|
data: [['Создаем заявку на пополнение...']],
|
|
196
185
|
},
|
|
197
186
|
],
|
|
198
|
-
})
|
|
187
|
+
})
|
|
199
188
|
|
|
200
|
-
const startTime = Date.now()
|
|
189
|
+
const startTime = Date.now()
|
|
201
190
|
interval = setInterval(async () => {
|
|
202
191
|
await message.edit({
|
|
203
192
|
text: formatMessage({
|
|
@@ -210,19 +199,19 @@ export class DepositCommand extends Command {
|
|
|
210
199
|
footer: `<i>⏳ Прошло {{ ${Math.floor((Date.now() - startTime) / 1000)} }} сек.</i>`,
|
|
211
200
|
}),
|
|
212
201
|
parse_mode: 'HTML',
|
|
213
|
-
})
|
|
214
|
-
}, 1000)
|
|
202
|
+
})
|
|
203
|
+
}, 1000)
|
|
215
204
|
|
|
216
205
|
setTimeout(() => {
|
|
217
|
-
clearInterval(interval)
|
|
218
|
-
}, 300_000)
|
|
206
|
+
clearInterval(interval)
|
|
207
|
+
}, 300_000)
|
|
219
208
|
}
|
|
220
209
|
|
|
221
|
-
let order: any
|
|
210
|
+
let order: any
|
|
222
211
|
|
|
223
212
|
if (method === 'card') {
|
|
224
|
-
for (const _method of ['qrcode', 'card']) {
|
|
225
|
-
method = _method
|
|
213
|
+
for (const _method of [...(config.currency.toLowerCase() === 'rub' ? ['qrcode'] : []), 'card']) {
|
|
214
|
+
method = _method
|
|
226
215
|
|
|
227
216
|
order = await config.API.post(`orders`, {
|
|
228
217
|
mirrorId: context.mammoth.mirror.mirror.id,
|
|
@@ -232,9 +221,9 @@ export class DepositCommand extends Command {
|
|
|
232
221
|
currency: config.currency,
|
|
233
222
|
})
|
|
234
223
|
.then((x) => x.data)
|
|
235
|
-
.catch(() => null)
|
|
224
|
+
.catch(() => null)
|
|
236
225
|
|
|
237
|
-
if (order) break
|
|
226
|
+
if (order) break
|
|
238
227
|
}
|
|
239
228
|
} else {
|
|
240
229
|
order = await config.API.post(`orders`, {
|
|
@@ -246,15 +235,15 @@ export class DepositCommand extends Command {
|
|
|
246
235
|
params: { walletId: coin },
|
|
247
236
|
})
|
|
248
237
|
.then((x) => x.data)
|
|
249
|
-
.catch(() => null)
|
|
238
|
+
.catch(() => null)
|
|
250
239
|
}
|
|
251
240
|
|
|
252
241
|
//@ts-ignore
|
|
253
|
-
if (interval) clearInterval(interval)
|
|
254
|
-
this.logger.log(`Запрос на пополнение: ${JSON.stringify(order, null, 2)}`)
|
|
242
|
+
if (interval) clearInterval(interval)
|
|
243
|
+
this.logger.log(`Запрос на пополнение: ${JSON.stringify(order, null, 2)}`)
|
|
255
244
|
|
|
256
245
|
if (!order) {
|
|
257
|
-
context.user.log(0, `Не удалось получить реквизиты для пополнения на сумму ${Number(deposit).toLocaleString('ru')} ${config.currency}`)
|
|
246
|
+
context.user.log(0, `Не удалось получить реквизиты для пополнения на сумму ${Number(deposit).toLocaleString('ru')} ${config.currency}`)
|
|
258
247
|
return context.sendFormatted(
|
|
259
248
|
{
|
|
260
249
|
photo: config.images.deposit,
|
|
@@ -266,7 +255,7 @@ export class DepositCommand extends Command {
|
|
|
266
255
|
inline_keyboard: [[{ text: '👩💻 Поддержка', url: `t.me/${config.support.username}` }]],
|
|
267
256
|
},
|
|
268
257
|
}
|
|
269
|
-
)
|
|
258
|
+
)
|
|
270
259
|
}
|
|
271
260
|
|
|
272
261
|
if (!order.isRepeat) {
|
|
@@ -290,42 +279,40 @@ export class DepositCommand extends Command {
|
|
|
290
279
|
: '',
|
|
291
280
|
keyboard: [[{ text: '🚀 Оплатить счет', callback_data: `PaidOrderCommand?orderId=${order.id}` }]],
|
|
292
281
|
}
|
|
293
|
-
)
|
|
282
|
+
)
|
|
294
283
|
|
|
295
284
|
if (Number(deposit) !== Number(order.amount) && method !== 'cryptoWallet') {
|
|
296
285
|
return context.sendFormatted(
|
|
297
286
|
{
|
|
298
287
|
photo: config.images.deposit,
|
|
299
|
-
header: `<blockquote><b>ℹ️ Сумма пополнения стала выше</b></blockquote>\n\n<i>Для определения вашего пополнения в системе, Вам придется заплатить ${Number(
|
|
300
|
-
order.amount
|
|
301
|
-
).toLocaleString('ru')} ${order.currency.toUpperCase()}. Приносим свои извинения за неудобства</i>`,
|
|
288
|
+
header: `<blockquote><b>ℹ️ Сумма пополнения стала выше</b></blockquote>\n\n<i>Для определения вашего пополнения в системе, Вам придется заплатить ${Number(order.amount).toLocaleString('ru')} ${order.currency.toUpperCase()}. Приносим свои извинения за неудобства</i>`,
|
|
302
289
|
},
|
|
303
290
|
{
|
|
304
291
|
reply_markup: {
|
|
305
292
|
inline_keyboard: [[{ text: '📖 Да, я все понял, продолжить', command: GetDepositOrderCommand, payload: { orderId: order.id } }]],
|
|
306
293
|
},
|
|
307
294
|
}
|
|
308
|
-
)
|
|
295
|
+
)
|
|
309
296
|
}
|
|
310
297
|
|
|
311
298
|
setTimeout(async () => {
|
|
312
|
-
const neworder = await config.API.get(`/orders/${order.id}`).then((x) => x.data)
|
|
313
|
-
if (['paid', 'fakepaid'].includes(neworder.status) || neworder.cheque) return
|
|
299
|
+
const neworder = await config.API.get(`/orders/${order.id}`).then((x) => x.data)
|
|
300
|
+
if (['paid', 'fakepaid'].includes(neworder.status) || neworder.cheque) return
|
|
314
301
|
|
|
315
|
-
const msgInfo = await context.client.database.config.get(`order${order.id}`)
|
|
316
|
-
if (!msgInfo) return
|
|
302
|
+
const msgInfo = await context.client.database.config.get(`order${order.id}`)
|
|
303
|
+
if (!msgInfo) return
|
|
317
304
|
|
|
318
|
-
context.client.api.deleteMessage({ chat_id: msgInfo.value.chatId, message_id: msgInfo.value.messageId })
|
|
305
|
+
context.client.api.deleteMessage({ chat_id: msgInfo.value.chatId, message_id: msgInfo.value.messageId })
|
|
319
306
|
context.sendFormatted({
|
|
320
307
|
photo: config.images.deposit,
|
|
321
308
|
header: `<blockquote><b>⚠️ Время на оплату истекло</b></blockquote>\n\n<i>Мы не получили пополнение по нашим реквизитам. Они больше недоступны для пополнения</i>\n\n<b>ℹ️ Если Вы оплатили, а система не определила Ваш перевод - <a href="t.me/${context.mirror.projectMirror.design.supportBot?.username}">обратитесь в тех. поддержку</a></b>`,
|
|
322
309
|
reply_markup: {
|
|
323
310
|
inline_keyboard: [[{ text: '🔄 Проверить оплату', command: CheckPaidOrderCommand, payload: { orderId: order.id } }]],
|
|
324
311
|
},
|
|
325
|
-
})
|
|
326
|
-
}, new Date(order.expiresAt).getTime() - new Date().getTime())
|
|
312
|
+
})
|
|
313
|
+
}, new Date(order.expiresAt).getTime() - new Date().getTime())
|
|
327
314
|
}
|
|
328
315
|
|
|
329
|
-
context.redirect(GetDepositOrderCommand, { orderId: order.id, repeat: order.isRepeat })
|
|
316
|
+
context.redirect(GetDepositOrderCommand, { orderId: order.id, repeat: order.isRepeat })
|
|
330
317
|
}
|
|
331
318
|
}
|
|
@@ -61,7 +61,7 @@ export class ParserSharedCommandsService {
|
|
|
61
61
|
// Ищем начало метода
|
|
62
62
|
for (let i = 0; i < lines.length; i++) {
|
|
63
63
|
const line = lines[i]
|
|
64
|
-
if (line.includes(`private`) && line.includes(`${methodName}(`) && line.includes('{')) {
|
|
64
|
+
if (line.includes(`private static`) && line.includes(`${methodName}(`) && line.includes('{')) {
|
|
65
65
|
methodStartIndex = i
|
|
66
66
|
break
|
|
67
67
|
}
|
|
@@ -85,21 +85,9 @@ export class ParserSharedCommandsService {
|
|
|
85
85
|
}
|
|
86
86
|
})
|
|
87
87
|
|
|
88
|
-
// Дополнительная очистка - убираем все оставшиеся приватные методы с умным поиском
|
|
89
|
-
transformedContent = this.removeRemainingPrivateMethods(transformedContent)
|
|
90
|
-
|
|
91
88
|
return transformedContent
|
|
92
89
|
}
|
|
93
90
|
|
|
94
|
-
/**
|
|
95
|
-
* Проверяет, является ли импорт локальным (относительным путем)
|
|
96
|
-
* @param importPath - путь импорта
|
|
97
|
-
* @returns true, если импорт локальный
|
|
98
|
-
*/
|
|
99
|
-
private static isLocalImport(importPath: string) {
|
|
100
|
-
return importPath.startsWith('./') || importPath.startsWith('../') || importPath.startsWith('/')
|
|
101
|
-
}
|
|
102
|
-
|
|
103
91
|
/**
|
|
104
92
|
* Удаляет только локальные импорты, сохраняя нелокальные
|
|
105
93
|
* @param content - исходный код
|
|
@@ -115,46 +103,6 @@ export class ParserSharedCommandsService {
|
|
|
115
103
|
return result
|
|
116
104
|
}
|
|
117
105
|
|
|
118
|
-
/**
|
|
119
|
-
* Удаляет все оставшиеся приватные методы с умным поиском
|
|
120
|
-
* @param content - код для очистки
|
|
121
|
-
* @returns код с удаленными приватными методами
|
|
122
|
-
*/
|
|
123
|
-
private static removeRemainingPrivateMethods(content: string): string {
|
|
124
|
-
let result = content
|
|
125
|
-
const privateMethodRegex = /private\s+(?:static\s+)?(?:async\s+)?\w+\s*\([^)]*\)\s*\{/g
|
|
126
|
-
let match
|
|
127
|
-
|
|
128
|
-
while ((match = privateMethodRegex.exec(result)) !== null) {
|
|
129
|
-
const startIndex = match.index
|
|
130
|
-
const startBraceIndex = result.indexOf('{', startIndex)
|
|
131
|
-
|
|
132
|
-
if (startBraceIndex !== -1) {
|
|
133
|
-
// Находим конец метода, подсчитывая скобки
|
|
134
|
-
let braceCount = 1
|
|
135
|
-
let endIndex = startBraceIndex + 1
|
|
136
|
-
|
|
137
|
-
while (braceCount > 0 && endIndex < result.length) {
|
|
138
|
-
const char = result[endIndex]
|
|
139
|
-
if (char === '{') braceCount++
|
|
140
|
-
else if (char === '}') braceCount--
|
|
141
|
-
endIndex++
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (braceCount === 0) {
|
|
145
|
-
// Удаляем весь метод от начала до конца
|
|
146
|
-
const methodEndIndex = endIndex
|
|
147
|
-
result = result.substring(0, startIndex) + result.substring(methodEndIndex)
|
|
148
|
-
|
|
149
|
-
// Сбрасываем регулярное выражение, так как индексы изменились
|
|
150
|
-
privateMethodRegex.lastIndex = 0
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return result
|
|
156
|
-
}
|
|
157
|
-
|
|
158
106
|
/**
|
|
159
107
|
* Создает API вызов для метода
|
|
160
108
|
* @param methodName - название метода
|
|
@@ -279,3 +227,5 @@ export class ParserSharedCommandsService {
|
|
|
279
227
|
return results
|
|
280
228
|
}
|
|
281
229
|
}
|
|
230
|
+
|
|
231
|
+
fs.writeFileSync('test.ts', ParserSharedCommandsService.transformCommand(fs.readFileSync('../escort/src/commands/shared/models/PickActiveModels.srdcmd.ts', 'utf-8')))
|
package/test-imports.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/test.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { InlineQueryContext } from 'evogram/lib/migrated';
|
|
2
|
-
export declare class EscortCreateModelCommand extends SharedCommand {
|
|
3
|
-
execute(context: CommandContext, name: string, age: number, about: string, services: string[], rating: number, specifications: string[], _: true): Promise<any>;
|
|
4
|
-
inlineExecute(context: InlineQueryContext, ...args: any): Promise<void>;
|
|
5
|
-
}
|