From ae3674bf1b645fb2360e6aa225f87f5b22d155e5 Mon Sep 17 00:00:00 2001 From: Professional Date: Wed, 19 Mar 2025 23:37:05 +0700 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=20=D1=81=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8E=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B9=20=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/Program.cs b/Program.cs index 26623aa..0dc5226 100644 --- a/Program.cs +++ b/Program.cs @@ -574,6 +574,23 @@ class Program } + private static async Task NotifyUserAboutStatusChange(long chatId, long reportId, string newStatus) + { + try + { + string statusEmoji = GetStatusEmoji(newStatus); + await _botClient.SendMessage( + chatId: chatId, + text: $"{statusEmoji} Статус вашей заявки #{reportId} был изменен на: {newStatus}", + parseMode: ParseMode.Html + ); + Log.Information($"Уведомление о смене статуса заявки #{reportId} отправлено пользователю {chatId}"); + } + catch (Exception ex) + { + Log.Error($"Ошибка при отправке уведомления пользователю о смене статуса: {ex.Message}"); + } + } @@ -1055,15 +1072,23 @@ class Program try { string oldStatus = ""; + long userChatId = 0; - // Сначала получаем текущий статус + // Сначала получаем текущий статус и chatId пользователя using (var connection = new SqliteConnection("Data Source=bot.db")) { await connection.OpenAsync(); var getStatusCommand = connection.CreateCommand(); - getStatusCommand.CommandText = "SELECT Status FROM Reports WHERE Id = @id"; + getStatusCommand.CommandText = "SELECT Status, ChatId FROM Reports WHERE Id = @id"; getStatusCommand.Parameters.AddWithValue("@id", reportId); - oldStatus = (await getStatusCommand.ExecuteScalarAsync())?.ToString() ?? string.Empty; + using (var reader = await getStatusCommand.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + oldStatus = reader.GetString(0); + userChatId = reader.GetInt64(1); + } + } } // Если статус не изменился, прерываем выполнение @@ -1081,6 +1106,9 @@ class Program // Уведомляем администраторов об изменении статуса await NotifyAdminsAboutStatusChange(reportId, newStatus, oldStatus, changerId); + + // Уведомляем пользователя об изменении статуса + await NotifyUserAboutStatusChange(userChatId, reportId, newStatus); } } catch (Exception ex) @@ -1089,6 +1117,7 @@ class Program } } + private static async Task SaveReportToDatabase(long chatId, Report report) { string connectionString = "Data Source=bot.db"; // Используем SQLite