diff --git a/backend/src/PnvPanel.Api/Telegram/PnvBotUpdateHandler.cs b/backend/src/PnvPanel.Api/Telegram/PnvBotUpdateHandler.cs index 1d9c444..8ddc70d 100644 --- a/backend/src/PnvPanel.Api/Telegram/PnvBotUpdateHandler.cs +++ b/backend/src/PnvPanel.Api/Telegram/PnvBotUpdateHandler.cs @@ -187,10 +187,12 @@ public sealed class PnvBotUpdateHandler( : await sender.Send(new RejectTelegramLoginCommand(requestId, fromId), cancellationToken); await botClient.AnswerCallbackQuery(callback.Id, result.IsSuccess ? "Готово" : result.Error.Message, cancellationToken: cancellationToken); - if (result.IsSuccess) + if (result.IsSuccess && callback.Message is not null) { - var text = parts[1] == "approve" ? "✅ Вход подтверждён." : "❌ Вход отклонён."; - await botClient.SendMessage(chatId.Value, text, cancellationToken: cancellationToken); + var statusText = parts[1] == "approve" ? "✅ Вход подтверждён." : "❌ Вход отклонён."; + var text = $"{Escape(callback.Message.Text ?? "")}\n\n{statusText}"; + await botClient.EditMessageText( + chatId.Value, callback.Message.Id, text, parseMode: ParseMode.Html, cancellationToken: cancellationToken); } break; @@ -208,10 +210,14 @@ public sealed class PnvBotUpdateHandler( : await sender.Send(new RejectActivationCommand(requestId, Reason: null), cancellationToken); await botClient.AnswerCallbackQuery(callback.Id, result.IsSuccess ? "Готово" : result.Error.Message, cancellationToken: cancellationToken); - if (result.IsSuccess) + if (result.IsSuccess && callback.Message is not null) { - var text = parts[1] == "approve" ? "✅ Пользователь активирован." : "❌ Запрос отклонён."; - await botClient.SendMessage(chatId.Value, text, cancellationToken: cancellationToken); + // Редактируем исходное сообщение с запросом вместо отдельного — иначе кнопки + // «Активировать/Отклонить» остаются висеть под уже обработанным запросом. + var statusText = parts[1] == "approve" ? "✅ Пользователь активирован." : "❌ Запрос отклонён."; + var text = $"{Escape(callback.Message.Text ?? "")}\n\n{statusText}"; + await botClient.EditMessageText( + chatId.Value, callback.Message.Id, text, parseMode: ParseMode.Html, cancellationToken: cancellationToken); } break;