Делаю телеграм бота. Надо создать права для каждого пользователя, к примеру чтобы пользователь не мог перейти из главного меню в другое просто написав: "Другой меню". Попытался сделать так, но ничего не вышло, если у одного пользователя были права на другое меню, то у всех появлялись права на это: Класс пользователя:
class user
{
public string userName;
public List<bool> permissions;
public long chatId;
public bool logined = false;
public user(string a, List<bool> b, long c, bool f)
{
userName = a;
permissions = b;
chatId = c;
logined = f;
}
}
Метод для нахождения пользователя:
public static user FindUser(string userName)
{
foreach (user u in users)
{
if (u.userName == userName)
{
return u;
}
}
return null;
}
Создание пользователя:
if (FindUser(e.Message.From.Username) == null)
{
users.Add(new user(e.Message.From.Username, standart_Permissions, e.Message.Chat.Id, false));
}
Вот так я задаю право:
//GameBot Permissions
//0 - Вход
FindUser(e.Message.From.Username).permissions[0] = true;
Уточните как хранятся пользователи, если users - List или хранилище, которое кэширует пользователей в том же списке, то создание
users.Add(new user(... standart_Permissions ...);
А затем изменение через
FindUser(e.Message.From.Username).permissions[0] = true;
Вызовет изменение списка standart_Permissions и выдаст права для всех пользователей, так как List - ссылочный тип. (Принципы работы ссылочных типов можно почитать, например, тут - https://metanit.com/sharp/tutorial/2.16.php)
Для того чтобы этого избежать, нужно пересоздавать список прав, например, стандартным методом .ToList() -
users.Add(new user(... standart_Permissions.ToList() ...);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно выбрать id товарв у которого option_id(13) = value(3G) и option_id(57) = value(2 ГБ)
появилась задача зашифровать текст на сервере (php) и расшифровать его скриптом powershellПытаюсь найти общие функции для шифрования/дешифрования...