diff --git a/Program.cs b/Program.cs index f7d584e..ded9090 100644 --- a/Program.cs +++ b/Program.cs @@ -144,9 +144,15 @@ class Program command.Parameters.AddWithValue("@userId", chatId); var result = await command.ExecuteScalarAsync(); + + // Отладочная информация + Log.Information($"[Отладка] Для пользователя {chatId} проверяем настройки уведомлений. Результат из БД: {result}"); + if (result != null && result != DBNull.Value) { - notificationsEnabled = Convert.ToInt32(result) == 1; + int dbValue = Convert.ToInt32(result); + notificationsEnabled = dbValue == 1; + Log.Information($"[Отладка] Для пользователя {chatId} настройка уведомлений из БД: {dbValue} => notificationsEnabled={notificationsEnabled}"); } else { @@ -155,6 +161,7 @@ class Program insertCommand.CommandText = "INSERT INTO UserSettings (UserId, NotificationsEnabled) VALUES (@userId, 1)"; insertCommand.Parameters.AddWithValue("@userId", chatId); await insertCommand.ExecuteNonQueryAsync(); + Log.Information($"[Отладка] Создали запись для пользователя {chatId} с notificationsEnabled=true"); } } @@ -162,6 +169,8 @@ class Program string notificationStatus = notificationsEnabled ? "✅ Включены" : "❌ Отключены"; string toggleAction = notificationsEnabled ? "toggle_off" : "toggle_on"; + Log.Information($"[Отладка] Для пользователя {chatId} показываем статус: {notificationStatus}, toggleAction: {toggleAction}"); + var keyboard = new InlineKeyboardMarkup(new[] { new[] @@ -185,9 +194,11 @@ class Program catch (Exception ex) { Log.Error($"Ошибка при отображении настроек пользователя: {ex.Message}"); + Log.Error($"StackTrace: {ex.StackTrace}"); await botClient.SendMessage(chatId, "Произошла ошибка при загрузке настроек."); } } + private static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) { try @@ -724,13 +735,30 @@ class Program { try { - // Исправление: правильно интерпретируем action + // Проверка текущего состояния перед изменением + bool currentState = true; + using (var connection = new SqliteConnection("Data Source=bot.db")) + { + await connection.OpenAsync(); + var checkCommand = connection.CreateCommand(); + checkCommand.CommandText = "SELECT NotificationsEnabled FROM UserSettings WHERE UserId = @userId"; + checkCommand.Parameters.AddWithValue("@userId", chatId); + + var result = await checkCommand.ExecuteScalarAsync(); + if (result != null && result != DBNull.Value) + { + currentState = Convert.ToInt32(result) == 1; + } + } + + Log.Information($"[Отладка] Переключение уведомлений для пользователя {chatId}: текущее состояние={currentState}, action={action}"); + // Если action = "toggle_on", то нужно ВКЛЮЧИТЬ уведомления (установить в БД 1) // Если action = "toggle_off", то нужно ВЫКЛЮЧИТЬ уведомления (установить в БД 0) bool newValue = action == "toggle_on"; int dbValue = newValue ? 1 : 0; - Log.Information($"Переключение уведомлений для пользователя {chatId}: action={action}, новое значение={newValue}, значение в БД={dbValue}"); + Log.Information($"[Отладка] Переключение уведомлений для пользователя {chatId}: action={action}, новое значение={newValue}, значение в БД={dbValue}"); using (var connection = new SqliteConnection("Data Source=bot.db")) { @@ -743,7 +771,26 @@ class Program DO UPDATE SET NotificationsEnabled = @value"; command.Parameters.AddWithValue("@userId", chatId); command.Parameters.AddWithValue("@value", dbValue); - await command.ExecuteNonQueryAsync(); + + int rowsAffected = await command.ExecuteNonQueryAsync(); + Log.Information($"[Отладка] Запрос выполнен, затронуто {rowsAffected} строк"); + } + + // Проверка после изменения + using (var connection = new SqliteConnection("Data Source=bot.db")) + { + await connection.OpenAsync(); + var checkCommand = connection.CreateCommand(); + checkCommand.CommandText = "SELECT NotificationsEnabled FROM UserSettings WHERE UserId = @userId"; + checkCommand.Parameters.AddWithValue("@userId", chatId); + + var result = await checkCommand.ExecuteScalarAsync(); + bool updatedState = false; + if (result != null && result != DBNull.Value) + { + updatedState = Convert.ToInt32(result) == 1; + } + Log.Information($"[Отладка] После обновления: значение в БД для пользователя {chatId} = {result}, обновленное состояние={updatedState}"); } // Показываем обновленные настройки @@ -755,6 +802,7 @@ class Program catch (Exception ex) { Log.Error($"Ошибка при изменении настроек уведомлений: {ex.Message}"); + Log.Error($"StackTrace: {ex.StackTrace}"); await botClient.SendMessage(chatId, "Произошла ошибка при обновлении настроек."); } }