фикс уведов
This commit is contained in:
parent
f3fe09f6a1
commit
23394de0a6
56
Program.cs
56
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, "Произошла ошибка при обновлении настроек.");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user