Ограниченный доступ к командам

Работа с набором привилегий

PRTelegram бот позволяет обрабатывать команды в зависимости от привилегий пользователей.

Для начала создадим перечисление UserPrivilege, которое будет отмечено атрибутом [Flags]. Для тех кто не знаком, что за атрибут Flags, посмотрите статью по этой ссылке.

/// <summary>
/// Привилегии пользователей
/// </summary>
[Flags]
public enum UserPrivilege
{
    [Description("Гость")]
    Guest = 1,
    [Description("Зарегистрированный")]
    Registered = 2,
    [Description("Администратор")]
    Admin = 4,
    [Description("VIP")]
    VIP = 8,
    [Description("Модератор")]
    Moderator = 16,
}

Создадим метод который хотим ограничить для выполнения определенных пользователей

Для проверки привилегий используется атрибут Access, который принимает в себя int значение. Это сделано для того чтобы можно было создавать свои перечисления со своим набором привилегий. Принцип работы, закидываем привилегии в виде флагов и преобразуем в int, а потом обратно из int в флаги.

Так же для примера создадим метод расширения заглушку:

После создания нового экземпляра класса PRBot мы должны подписаться на события проверки привилегий.

Результаты работы:

Last updated