qwen-alpha 1.0.0

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/.eslintrc.js ADDED
@@ -0,0 +1,21 @@
1
+ module.exports = {
2
+ env: {
3
+ node: true,
4
+ es2021: true,
5
+ },
6
+ extends: ['eslint:recommended'],
7
+ parserOptions: {
8
+ ecmaVersion: 'latest',
9
+ sourceType: 'module',
10
+ },
11
+ rules: {
12
+ 'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
13
+ 'semi': ['error', 'always'],
14
+ 'quotes': ['warn', 'single'],
15
+ 'no-console': 'off',
16
+ 'no-eval': 'error',
17
+ 'eqeqeq': ['error', 'always'],
18
+ 'curly': ['error', 'all'],
19
+ },
20
+ ignorePatterns: ['node_modules/', 'logs/', '*.log'],
21
+ };
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ 18
package/.prettierrc ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": true,
4
+ "tabWidth": 2,
5
+ "trailingComma": "es5",
6
+ "printWidth": 100,
7
+ "bracketSpacing": true,
8
+ "arrowParens": "always"
9
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 JeBance
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/PUBLISH.md ADDED
@@ -0,0 +1,252 @@
1
+ # πŸš€ Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ запуску Qwen Alpha
2
+
3
+ ## βœ… Π§Π΅ΠΊ-лист ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ
4
+
5
+ - [ ] ВсС зависимости установлСны (`npm install`)
6
+ - [ ] ВСсты проходят (`npm test`)
7
+ - [ ] Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ (`npm run lint`)
8
+ - [ ] README.md Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½
9
+ - [ ] Version Π² package.json ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½
10
+
11
+ ---
12
+
13
+ ## πŸ“¦ ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π½Π° npm
14
+
15
+ ### 1. Π›ΠΎΠ³ΠΈΠ½ Π² npm
16
+
17
+ ```bash
18
+ npm login
19
+ ```
20
+
21
+ Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ваш Π»ΠΎΠ³ΠΈΠ½, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ email.
22
+
23
+ ### 2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ
24
+
25
+ ```bash
26
+ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° package.json
27
+ npm pkg get
28
+
29
+ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹
30
+ npm pack --dry-run
31
+
32
+ # ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ содСрТимого .tgz
33
+ tar -tzf qwen-alpha-1.0.0.tgz
34
+ ```
35
+
36
+ ### 3. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ
37
+
38
+ ```bash
39
+ # ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсии
40
+ npm publish
41
+
42
+ # ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ beta вСрсии (Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ latest)
43
+ npm publish --tag beta
44
+ ```
45
+
46
+ ### 4. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ
47
+
48
+ ```bash
49
+ # ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° npmjs.com
50
+ npm view qwen-alpha
51
+
52
+ # Или ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ https://www.npmjs.com/package/qwen-alpha
53
+ ```
54
+
55
+ ---
56
+
57
+ ## πŸ§ͺ ВСстированиС послС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ
58
+
59
+ ### 1. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ установка
60
+
61
+ ```bash
62
+ npm install -g qwen-alpha
63
+ ```
64
+
65
+ ### 2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° CLI
66
+
67
+ ```bash
68
+ qwen-alpha --version
69
+ qwen-alpha --help
70
+ ```
71
+
72
+ ### 3. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰
73
+
74
+ ```bash
75
+ qwen-alpha --init-only
76
+ ```
77
+
78
+ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ создалась ΠΏΠ°ΠΏΠΊΠ° `~/.qwen-alpha/`.
79
+
80
+ ### 4. Запуск Π±ΠΎΡ‚Π°
81
+
82
+ ```bash
83
+ qwen-alpha --token <YOUR_BOT_TOKEN>
84
+ ```
85
+
86
+ ---
87
+
88
+ ## πŸ”„ ОбновлСниС вСрсии
89
+
90
+ ### SemVer (Semantic Versioning)
91
+
92
+ ```
93
+ MAJOR.MINOR.PATCH
94
+ β”‚ β”‚ β”‚
95
+ β”‚ β”‚ └─ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимыС исправлСния
96
+ β”‚ └─────── ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимыС Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
97
+ └───────────── Π»ΠΎΠΌΠ°ΡŽΡ‰ΠΈΠ΅ измСнСния
98
+ ```
99
+
100
+ ### ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ для обновлСния вСрсии
101
+
102
+ ```bash
103
+ # Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π³ΠΎΠ² (1.0.0 β†’ 1.0.1)
104
+ npm version patch
105
+
106
+ # НовыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (1.0.0 β†’ 1.1.0)
107
+ npm version minor
108
+
109
+ # Π›ΠΎΠΌΠ°ΡŽΡ‰ΠΈΠ΅ измСнСния (1.0.0 β†’ 2.0.0)
110
+ npm version major
111
+
112
+ # Pre-release вСрсии (1.0.0 β†’ 1.0.1-beta.0)
113
+ npm version prerelease --preid=beta
114
+ ```
115
+
116
+ ПослС `npm version` автоматичСски обновится package.json ΠΈ создастся git tag.
117
+
118
+ ### ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ вСрсии
119
+
120
+ ```bash
121
+ # Push ΠΊΠΎΠΌΠΌΠΈΡ‚Π° ΠΈ Ρ‚Π΅Π³Π°
122
+ git push && git push --tags
123
+
124
+ # ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π½Π° npm
125
+ npm publish
126
+ ```
127
+
128
+ ---
129
+
130
+ ## πŸ› УстранСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ
131
+
132
+ ### Ошибка "You cannot publish over the previously published versions"
133
+
134
+ ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ:
135
+
136
+ ```bash
137
+ npm version patch
138
+ npm publish
139
+ ```
140
+
141
+ ### Ошибка "npm ERR! 403 Forbidden"
142
+
143
+ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Ρ‹ ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:
144
+
145
+ ```bash
146
+ npm whoami
147
+ npm owner ls qwen-alpha
148
+ ```
149
+
150
+ ### Ошибка "package.json name ΡƒΠΆΠ΅ занят"
151
+
152
+ Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ name Π² package.json Π½Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
153
+
154
+ ---
155
+
156
+ ## πŸ“Š Бтатистика npm
157
+
158
+ ```bash
159
+ # ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅
160
+ npm view qwen-alpha
161
+
162
+ # ВсС вСрсии
163
+ npm view qwen-alpha versions
164
+
165
+ # Зависимости
166
+ npm view qwen-alpha dependencies
167
+
168
+ # ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ
169
+ npm install -g npm-views
170
+ npm-views qwen-alpha
171
+ ```
172
+
173
+ ---
174
+
175
+ ## πŸ” Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
176
+
177
+ ### ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:
178
+
179
+ 1. **НСт Π»ΠΈ .env Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ**
180
+ ```bash
181
+ git ls-files | grep .env
182
+ ```
183
+
184
+ 2. **Π’ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π° Π½Π΅ Π² ΠΊΠΎΠ΄Π΅**
185
+ - Π’ΠΎΠΊΠ΅Π½ пСрСдаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· CLI `--token`
186
+ - Или Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния `BOT_TOKEN`
187
+
188
+ 3. **npm audit**
189
+ ```bash
190
+ npm audit
191
+ npm audit fix
192
+ ```
193
+
194
+ ---
195
+
196
+ ## πŸ“ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования
197
+
198
+ ### Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ запуск
199
+
200
+ ```bash
201
+ qwen-alpha --token 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
202
+ ```
203
+
204
+ ### Π‘ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
205
+
206
+ ```bash
207
+ qwen-alpha --token <TOKEN> --log-level debug
208
+ ```
209
+
210
+ ### Π‘ whitelist ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
211
+
212
+ ```bash
213
+ qwen-alpha --token <TOKEN> --allowed-users 123456789,987654321
214
+ ```
215
+
216
+ ### Π§Π΅Ρ€Π΅Π· Docker (ΠΏΡ€ΠΈΠΌΠ΅Ρ€)
217
+
218
+ ```dockerfile
219
+ FROM node:18-alpine
220
+ RUN npm install -g qwen-alpha @qwen-code/qwen-code
221
+ CMD ["qwen-alpha", "--token", "$BOT_TOKEN"]
222
+ ```
223
+
224
+ ---
225
+
226
+ ## 🎯 Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги послС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ
227
+
228
+ 1. **Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΡ‚Π° Π² Telegram**
229
+ - ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ https://t.me/BotFather
230
+ - Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΎΡ‚Π° Ссли Π΅Ρ‰Ρ‘ Π½Π΅ создан
231
+ - ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½
232
+
233
+ 2. **ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π±ΠΎΡ‚Π°**
234
+ - УстановитС Π°Π²Π°Ρ‚Π°Ρ€ (Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ)
235
+ - НастройтС description ΠΈ about
236
+
237
+ 3. **ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»**
238
+ - `/start` β€” привСтствиС
239
+ - `/help` β€” справка
240
+ - ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π°Π½Π°Π»ΠΈΠ·
241
+
242
+ 4. **Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π³Ρ€ΡƒΠΏΠΏΡ‹** (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)
243
+ - Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π±ΠΎΡ‚Π° Π² Π³Ρ€ΡƒΠΏΠΏΡƒ
244
+ - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ `/qwen` ΠΊΠΎΠΌΠ°Π½Π΄
245
+
246
+ 5. **ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³**
247
+ - Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Π»ΠΎΠ³Π°ΠΌΠΈ Π² `~/.qwen-alpha/logs/`
248
+ - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ `/admin stats`
249
+
250
+ ---
251
+
252
+ **Π£Π΄Π°Ρ‡ΠΈ с ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ! πŸš€**
package/README.md ADDED
@@ -0,0 +1,282 @@
1
+ # Qwen Alpha
2
+
3
+ [![CI](https://github.com/JeBance/QwenAlpha/actions/workflows/ci.yml/badge.svg)](https://github.com/JeBance/QwenAlpha/actions/workflows/ci.yml)
4
+ [![npm](https://img.shields.io/npm/v/qwen-alpha.svg)](https://www.npmjs.com/package/qwen-alpha)
5
+ [![license](https://img.shields.io/npm/l/qwen-alpha.svg)](https://github.com/JeBance/QwenAlpha/blob/main/LICENSE)
6
+
7
+ **Telegram Π±ΠΎΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Qwen Code** β€” AI-powered code review, гСнСрация ΠΊΠΎΠ΄Π° ΠΈ Π°Π½Π°Π»ΠΈΠ· прямо Π² Telegram.
8
+
9
+ ---
10
+
11
+ ## πŸš€ Быстрый старт
12
+
13
+ ### Установка
14
+
15
+ ```bash
16
+ npm install -g qwen-alpha
17
+ ```
18
+
19
+ ### ВрСбования
20
+
21
+ - **Node.js** >= 18.0.0
22
+ - **Qwen Code** (глобально): `npm install -g @qwen-code/qwen-code`
23
+ - **Telegram Bot Token** (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρƒ [@BotFather](https://t.me/BotFather))
24
+
25
+ ### Запуск
26
+
27
+ ```bash
28
+ qwen-alpha --token <YOUR_BOT_TOKEN>
29
+ ```
30
+
31
+ Или Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния:
32
+
33
+ ```bash
34
+ export BOT_TOKEN=<YOUR_BOT_TOKEN>
35
+ qwen-alpha --token $BOT_TOKEN
36
+ ```
37
+
38
+ ---
39
+
40
+ ## πŸ“‹ ВозмоТности
41
+
42
+ ### Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
43
+
44
+ | Ѐункция | ОписаниС |
45
+ |---------|----------|
46
+ | **Code Review** | Анализ ΠΊΠΎΠ΄Π°, поиск Π±Π°Π³ΠΎΠ² ΠΈ уязвимостСй |
47
+ | **ГСнСрация ΠΊΠΎΠ΄Π°** | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎ описанию |
48
+ | **ОбъяснСниС ΠΊΠΎΠ΄Π°** | ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС слоТных участков |
49
+ | **Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³** | Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ читаСмости ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ |
50
+ | **Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ** | Анализ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ (Π΄ΠΎ 2MB) |
51
+ | **ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Π΄ΠΈΠ°Π»ΠΎΠ³Π°** | Π‘ΠΎΡ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ обсуТдСния |
52
+
53
+ ### ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΠΎΡ‚Π°
54
+
55
+ | Команда | ОписаниС |
56
+ |---------|----------|
57
+ | `/start` | Запуск Π±ΠΎΡ‚Π° ΠΈ привСтствиС |
58
+ | `/help` | Бписок ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ информация |
59
+ | `/reset` | Бброс Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии |
60
+ | `/stats` | Бтатистика ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ |
61
+ | `/settings` | Настройки Π±ΠΎΡ‚Π° |
62
+ | `/admin` | ПанСль администратора |
63
+
64
+ ### Для Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Ρ… Ρ‡Π°Ρ‚ΠΎΠ²
65
+
66
+ - **Начало сСссии**: `/qwen <запрос>` ΠΈΠ»ΠΈ `@QwenAlphaRobot <запрос>`
67
+ - **ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅**: ΠΎΡ‚Π²Π΅Ρ‚ (reply) Π½Π° сообщСниС ΠΈΠ· сСссии
68
+ - **ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚**: Π±ΠΎΡ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ всю Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ обсуТдСния
69
+ - **Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ**: каТдая Ρ‚Π΅ΠΌΠ° β€” ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ сСссия
70
+
71
+ ---
72
+
73
+ ## βš™οΈ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ
74
+
75
+ ### CLI ΠΎΠΏΡ†ΠΈΠΈ
76
+
77
+ ```bash
78
+ qwen-alpha --token <TOKEN> [ΠΎΠΏΡ†ΠΈΠΈ]
79
+ ```
80
+
81
+ | ΠžΠΏΡ†ΠΈΡ | ОписаниС | По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ |
82
+ |-------|----------|--------------|
83
+ | `--token <TOKEN>` | Telegram Bot API Ρ‚ΠΎΠΊΠ΅Π½ | **ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ** |
84
+ | `--log-level <LEVEL>` | Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования | `info` |
85
+ | `--allowed-users <IDS>` | Whitelist user_id | всС |
86
+ | `--init-only` | Волько инициализация Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ | `false` |
87
+
88
+ ### ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния
89
+
90
+ ```bash
91
+ # .env Ρ„Π°ΠΉΠ» (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)
92
+ BOT_TOKEN=your_bot_token_here
93
+ LOG_LEVEL=info
94
+ ALLOWED_USERS=123456789,987654321
95
+ QWEN_TIMEOUT=60000
96
+ RATE_LIMIT_WINDOW=60000
97
+ RATE_LIMIT_MAX=10
98
+ ```
99
+
100
+ ---
101
+
102
+ ## πŸ“ Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
103
+
104
+ Π”Π°Π½Π½Ρ‹Π΅ хранятся Π² `~/.qwen-alpha/`:
105
+
106
+ ```
107
+ ~/.qwen-alpha/
108
+ β”œβ”€β”€ db/
109
+ β”‚ β”œβ”€β”€ users.json # ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ
110
+ β”‚ β”œβ”€β”€ sessions.json # БСссии (24Ρ‡)
111
+ β”‚ β”œβ”€β”€ admins.json # Администраторы
112
+ β”‚ └── stats.json # Бтатистика
113
+ β”œβ”€β”€ logs/
114
+ β”‚ └── qwen-alpha-YYYY-MM-DD.log
115
+ └── config/
116
+ └── settings.json # Настройки Π±ΠΎΡ‚Π°
117
+ ```
118
+
119
+ **Π’Π°ΠΆΠ½ΠΎ**: Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ хранятся Π² node_modules ΠΈ Π½Π΅ Π·Π°Ρ‚ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ.
120
+
121
+ ---
122
+
123
+ ## πŸ›‘ АдминистрированиС
124
+
125
+ ### ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ запуск
126
+
127
+ ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠΈΠΉ `/start`, становится **супСр-Π°Π΄ΠΌΠΈΠ½ΠΎΠΌ**.
128
+
129
+ ### Админ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
130
+
131
+ ```bash
132
+ # Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½Π°ΠΌΠΈ
133
+ /admin add <user_id> # Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π΄ΠΌΠΈΠ½Π°
134
+ /admin remove <user_id> # Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π°Π΄ΠΌΠΈΠ½Π°
135
+
136
+ # Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ
137
+ /admin ban <user_id> # Π—Π°Π±Π°Π½ΠΈΡ‚ΡŒ
138
+ /admin unban <user_id> # Π Π°Π·Π±Π°Π½ΠΈΡ‚ΡŒ
139
+
140
+ # БСссии
141
+ /admin sessions list # Бписок сСссий
142
+ /admin sessions clear <chat_id> # ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Π°Ρ‚
143
+
144
+ # Настройки
145
+ /admin set <key> <value> # Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройку
146
+ /admin settings # ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ настройки
147
+
148
+ # Бтатистика
149
+ /admin stats # ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ статистика
150
+ ```
151
+
152
+ ### Настройки Π±ΠΎΡ‚Π°
153
+
154
+ | Настройка | По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ | ОписаниС |
155
+ |-----------|--------------|----------|
156
+ | `session_timeout_hours` | 24 | Π‘Ρ€ΠΎΠΊ ΠΆΠΈΠ·Π½ΠΈ сСссии (часы) |
157
+ | `max_file_size_mb` | 2 | Макс. Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° (MB) |
158
+ | `requests_per_user_per_hour` | 60 | Π›ΠΈΠΌΠΈΡ‚ запросов/час |
159
+ | `group_mode` | mention | Π Π΅ΠΆΠΈΠΌ Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… |
160
+
161
+ ---
162
+
163
+ ## πŸ”§ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
164
+
165
+ ### Установка зависимостСй
166
+
167
+ ```bash
168
+ git clone https://github.com/JeBance/QwenAlpha.git
169
+ cd QwenAlpha
170
+ npm install
171
+ ```
172
+
173
+ ### Запуск Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
174
+
175
+ ```bash
176
+ npm start -- --token <YOUR_BOT_TOKEN>
177
+ ```
178
+
179
+ ### ВСсты
180
+
181
+ ```bash
182
+ npm test
183
+ ```
184
+
185
+ ### Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
186
+
187
+ ```bash
188
+ npm run lint
189
+ npm run format
190
+ npm run format:check
191
+ ```
192
+
193
+ ---
194
+
195
+ ## πŸ“Š Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
196
+
197
+ ```
198
+ QwenAlpha/
199
+ β”œβ”€β”€ bin/
200
+ β”‚ └── qwen-alpha.js # CLI entry point
201
+ β”œβ”€β”€ src/
202
+ β”‚ β”œβ”€β”€ index.js # Основной экспорт
203
+ β”‚ β”œβ”€β”€ bot/
204
+ β”‚ β”‚ β”œβ”€β”€ bot.js # Telegraf инициализация
205
+ β”‚ β”‚ β”œβ”€β”€ handlers/ # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄
206
+ β”‚ β”‚ └── middleware/ # Middleware
207
+ β”‚ β”œβ”€β”€ services/
208
+ β”‚ β”‚ β”œβ”€β”€ db/ # JSON Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅
209
+ β”‚ β”‚ └── qwenService.js # Qwen Code интСграция
210
+ β”‚ β”œβ”€β”€ config/ # ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ
211
+ β”‚ └── utils/ # Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹
212
+ β”œβ”€β”€ tests/ # ВСсты
213
+ β”œβ”€β”€ .github/workflows/ # CI/CD
214
+ └── package.json
215
+ ```
216
+
217
+ ---
218
+
219
+ ## πŸ› РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ
220
+
221
+ ### Qwen Code Π½Π΅ установлСн
222
+
223
+ ```bash
224
+ npm install -g @qwen-code/qwen-code
225
+ ```
226
+
227
+ ### Ошибка "Bot token not specified"
228
+
229
+ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `--token` ΠΈΠ»ΠΈ установитС `BOT_TOKEN`:
230
+
231
+ ```bash
232
+ export BOT_TOKEN=123456789:ABCdef...
233
+ qwen-alpha --token $BOT_TOKEN
234
+ ```
235
+
236
+ ### Ошибка доступа ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ
237
+
238
+ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° Π½Π° запись Π² `~/.qwen-alpha/`:
239
+
240
+ ```bash
241
+ chmod -R 755 ~/.qwen-alpha/
242
+ ```
243
+
244
+ ### Π‘ΠΎΡ‚ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ…
245
+
246
+ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π±ΠΎΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²Π° Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ сообщСний.
247
+
248
+ ---
249
+
250
+ ## πŸ“ ЛицСнзия
251
+
252
+ [MIT License](LICENSE)
253
+
254
+ ---
255
+
256
+ ## πŸ”— Бсылки
257
+
258
+ - **Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ**: https://github.com/JeBance/QwenAlpha
259
+ - **NPM**: https://www.npmjs.com/package/qwen-alpha
260
+ - **Qwen Code**: https://github.com/QwenLM/qwen-code
261
+ - **Telegraf**: https://telegraf.js.org/
262
+
263
+ ---
264
+
265
+ ## 🀝 Π’ΠΊΠ»Π°Π΄ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚
266
+
267
+ 1. Fork рСпозитория
268
+ 2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ (`git checkout -b feature/amazing-feature`)
269
+ 3. Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ измСнСния (`git commit -m 'Add amazing feature'`)
270
+ 4. ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π² remote (`git push origin feature/amazing-feature`)
271
+ 5. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Pull Request
272
+
273
+ ---
274
+
275
+ ## πŸ“ž ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹
276
+
277
+ - **Telegram**: @QwenAlphaRobot (Π±ΠΎΡ‚)
278
+ - **GitHub**: https://github.com/JeBance/QwenAlpha/issues
279
+
280
+ ---
281
+
282
+ **Qwen Alpha** β€” ваш AI ассистСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ Π² Telegram! πŸš€
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { Command } = require('commander');
4
+ const packageJson = require('../package.json');
5
+ const { startBot } = require('../src');
6
+ const { logger } = require('../src/utils/logger');
7
+
8
+ /**
9
+ * ΠŸΠ°Ρ€ΡΠΈΠ½Π³ списка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ· строки
10
+ * @param {string} value - Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π²ΠΈΠ΄Π° "123456789,987654321"
11
+ * @returns {number[]} Массив user_id
12
+ */
13
+ function parseUserList(value) {
14
+ if (!value) return [];
15
+ return value
16
+ .split(',')
17
+ .map(id => parseInt(id.trim(), 10))
18
+ .filter(id => !isNaN(id));
19
+ }
20
+
21
+ const program = new Command();
22
+
23
+ program
24
+ .name('qwen-alpha')
25
+ .description('Telegram Π±ΠΎΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Qwen Code β€” AI-powered code review ΠΈ гСнСрация ΠΊΠΎΠ΄Π°')
26
+ .version(packageJson.version);
27
+
28
+ program
29
+ .requiredOption('--token <TOKEN>', 'Telegram Bot API Ρ‚ΠΎΠΊΠ΅Π½ (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρƒ @BotFather)')
30
+ .option('--log-level <LEVEL>', 'Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования (debug, info, warn, error)', 'info')
31
+ .option('--allowed-users <USERS>', 'Whitelist user_id Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)', '')
32
+ .option('--init-only', 'Волько инициализация Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄', false)
33
+ .addHelpText('after', `
34
+ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования:
35
+ $ qwen-alpha --token 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
36
+ $ qwen-alpha --token <TOKEN> --log-level debug
37
+ $ qwen-alpha --token <TOKEN> --allowed-users 123456789,987654321
38
+
39
+ ДокумСнтация: https://github.com/JeBance/QwenAlpha
40
+ `);
41
+
42
+ program.parse(process.argv);
43
+
44
+ const options = program.opts();
45
+
46
+ async function main() {
47
+ try {
48
+ // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰
49
+ const { initDirectories } = require('../src/utils/paths');
50
+ const { storeManager } = require('../src/services/db');
51
+
52
+ initDirectories();
53
+ storeManager.init();
54
+
55
+ // Если Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инициализация
56
+ if (options.initOnly) {
57
+ console.log('βœ… Qwen Alpha Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹');
58
+ console.log(`πŸ“ Π”Π°Π½Π½Ρ‹Π΅ хранятся Π²: ~/.qwen-alpha/`);
59
+ process.exit(0);
60
+ }
61
+
62
+ // Валидация Ρ‚ΠΎΠΊΠ΅Π½Π°
63
+ if (!options.token || options.token === '<TOKEN>') {
64
+ console.error('❌ Ошибка: Telegram Bot API Ρ‚ΠΎΠΊΠ΅Π½ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½');
65
+ console.error('');
66
+ console.error('ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Ρƒ @BotFather ΠΈ запуститС:');
67
+ console.error(' qwen-alpha --token <YOUR_BOT_TOKEN>');
68
+ console.error('');
69
+ console.error('Или установитС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния:');
70
+ console.error(' export BOT_TOKEN=<YOUR_BOT_TOKEN>');
71
+ console.error(' qwen-alpha --token $BOT_TOKEN');
72
+ process.exit(1);
73
+ }
74
+
75
+ // ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΎΠΏΡ†ΠΈΠΉ для startBot
76
+ const botOptions = {
77
+ token: options.token,
78
+ logLevel: options.logLevel,
79
+ allowedUsers: parseUserList(options.allowedUsers),
80
+ };
81
+
82
+ // Запуск Π±ΠΎΡ‚Π°
83
+ await startBot(botOptions);
84
+
85
+ console.log('βœ… Qwen Alpha Π·Π°ΠΏΡƒΡ‰Π΅Π½');
86
+ console.log(' НаТмитС Ctrl+C для остановки');
87
+
88
+ } catch (error) {
89
+ logger.error({ error }, 'Failed to start Qwen Alpha');
90
+ console.error('❌ Ошибка ΠΏΡ€ΠΈ запускС:', error.message);
91
+ process.exit(1);
92
+ }
93
+ }
94
+
95
+ main();