qwen-alpha 1.0.4 → 1.0.5
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/package.json +1 -1
- package/src/bot/handlers/message.js +42 -29
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const sessionService = require('../../services/db/sessions');
|
|
2
2
|
const statsService = require('../../services/db/stats');
|
|
3
|
+
const userService = require('../../services/db/users');
|
|
3
4
|
const { qwenService } = require('../../services/qwenService');
|
|
4
5
|
const { logger } = require('../../utils/logger');
|
|
5
6
|
|
|
@@ -41,36 +42,49 @@ async function messageHandler(ctx) {
|
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
// Загрузка индикатора
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
let loadingMsgId = null;
|
|
46
|
+
if (isPrivate) {
|
|
47
|
+
const loadingMsg = await ctx.reply('⏳ Думаю...');
|
|
48
|
+
loadingMsgId = loadingMsg?.message_id;
|
|
49
|
+
}
|
|
50
|
+
|
|
48
51
|
try {
|
|
49
52
|
const startTime = Date.now();
|
|
50
|
-
|
|
53
|
+
|
|
51
54
|
// Получение контекста из сессии
|
|
52
55
|
let contextMessages = [];
|
|
53
56
|
let session = ctx.state.session;
|
|
54
|
-
|
|
57
|
+
|
|
55
58
|
if (session) {
|
|
56
59
|
// Если это reply на сообщение в сессии
|
|
57
60
|
const replyToMessageId = ctx.message?.reply_to_message?.message_id;
|
|
58
|
-
|
|
61
|
+
|
|
59
62
|
if (replyToMessageId && session.message_tree[replyToMessageId]) {
|
|
60
63
|
// Получаем цепочку сообщений
|
|
61
64
|
contextMessages = sessionService.getMessageChain(session, replyToMessageId);
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
|
-
|
|
67
|
+
|
|
65
68
|
// Запрос к Qwen
|
|
66
69
|
const result = await qwenService.analyzeCode(prompt, contextMessages);
|
|
67
|
-
|
|
70
|
+
|
|
68
71
|
const duration = Date.now() - startTime;
|
|
69
72
|
statsService.updateAvgResponseTime(duration);
|
|
70
|
-
|
|
73
|
+
|
|
74
|
+
// Проверка на пустой ответ
|
|
75
|
+
if (!result || result.trim().length === 0) {
|
|
76
|
+
if (loadingMsgId) {
|
|
77
|
+
await ctx.telegram.deleteMessage(ctx.chat.id, loadingMsgId);
|
|
78
|
+
}
|
|
79
|
+
await ctx.reply('❌ Qwen вернул пустой ответ. Попробуйте другой запрос.', {
|
|
80
|
+
reply_parameters: { message_id: ctx.message.message_id },
|
|
81
|
+
});
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
71
85
|
// Форматирование ответа
|
|
72
86
|
let responseText = result;
|
|
73
|
-
|
|
87
|
+
|
|
74
88
|
// В группах добавляем упоминание если это первый ответ
|
|
75
89
|
if (!isPrivate && ctx.message?.reply_to_message) {
|
|
76
90
|
const originalUser = ctx.message.reply_to_message.from;
|
|
@@ -78,18 +92,18 @@ async function messageHandler(ctx) {
|
|
|
78
92
|
responseText = `@${originalUser.username} ${responseText}`;
|
|
79
93
|
}
|
|
80
94
|
}
|
|
81
|
-
|
|
95
|
+
|
|
82
96
|
// Отправка ответа
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// В группах отвечаем reply на исходное сообщение
|
|
87
|
-
await ctx.reply(responseText, {
|
|
88
|
-
parse_mode: 'Markdown',
|
|
89
|
-
reply_parameters: { message_id: ctx.message.message_id },
|
|
90
|
-
});
|
|
97
|
+
if (loadingMsgId) {
|
|
98
|
+
// Удаляем сообщение "⏳ Думаю..." и отправляем новый ответ
|
|
99
|
+
await ctx.telegram.deleteMessage(ctx.chat.id, loadingMsgId);
|
|
91
100
|
}
|
|
92
101
|
|
|
102
|
+
await ctx.reply(responseText, {
|
|
103
|
+
parse_mode: 'Markdown',
|
|
104
|
+
reply_parameters: { message_id: ctx.message.message_id },
|
|
105
|
+
});
|
|
106
|
+
|
|
93
107
|
// Добавление сообщений в сессию
|
|
94
108
|
if (session) {
|
|
95
109
|
// Добавляем сообщение пользователя
|
|
@@ -114,19 +128,18 @@ async function messageHandler(ctx) {
|
|
|
114
128
|
|
|
115
129
|
} catch (error) {
|
|
116
130
|
logger.error({ userId, chatId, error }, 'Message processing failed');
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
await ctx.reply('❌ Ошибка при обработке запроса. Попробуйте позже.', {
|
|
122
|
-
reply_parameters: { message_id: ctx.message.message_id },
|
|
123
|
-
});
|
|
131
|
+
|
|
132
|
+
// Удаляем сообщение "⏳ Думаю..." если есть
|
|
133
|
+
if (loadingMsgId) {
|
|
134
|
+
await ctx.telegram.deleteMessage(ctx.chat.id, loadingMsgId).catch(() => {});
|
|
124
135
|
}
|
|
125
136
|
|
|
137
|
+
await ctx.reply('❌ Ошибка при обработке запроса. Попробуйте позже.', {
|
|
138
|
+
reply_parameters: { message_id: ctx.message.message_id },
|
|
139
|
+
});
|
|
140
|
+
|
|
126
141
|
statsService.incrementError();
|
|
127
142
|
}
|
|
128
143
|
}
|
|
129
144
|
|
|
130
|
-
const userService = require('../../services/db/users');
|
|
131
|
-
|
|
132
145
|
module.exports = messageHandler;
|