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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qwen-alpha",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Telegram bot for Qwen Code integration — AI-powered code review, bug detection, and code generation",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -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
- const loadingMsg = isPrivate
45
- ? await ctx.reply('⏳ Думаю...')
46
- : null;
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 (loadingMsg) {
84
- await ctx.editMessageText(responseText, { parse_mode: 'Markdown' });
85
- } else {
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
- if (loadingMsg) {
119
- await ctx.editMessageText('❌ Ошибка при обработке запроса. Попробуйте позже.');
120
- } else {
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;