- Статус
 - Оффлайн
 
- Регистрация
 - 26 Янв 2018
 
- Сообщения
 - 948
 
- Реакции
 - 1,625
 
Кароче мне в мою голову пришла идея невъебенная чтобы залупить атрибуты которые будут наследовать абстрактную модель в энжин бота для всяких верификаций, атрибуты это есче такой прикол над классами/филдами пишется
		
		
	
	
		
	
Собсна сама модель примерно такая получается
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Щяс поясню
допустим у меня есть модуль в боте(класс который наследует абст. класс Module), которому для работы нужны права суперпользователя(всякие системные кмд), я создаю атрибут который будет проверять на то, есть ли у человека sudo, которое по дефу и так передается во все классы, но так в самом теле исполнения кода команды я не буду срать проверками на арги и прочую дичь
		
	
казалось бы справедливо уже, но я столкнулся с тем, что конструктор у атрибутов не вызывается как написано в доках(спс майки), ну и пришлось порефлексировать немного
		
	 (перед этим в конструкторе я заполнил лист из object этими самыми атрибутами)
теперь достаточно просто вызывать этот верифай перед исполнением тела модуля и дело в шляпе(ну и ловить эксепшн офк)
по скольку это андокументед все и делалось методом тыка у мя на это ушло ~чяс работы
опять же это все примеры в реализации, просто хотелос помочь тем, кто ресерчить это будет
код не супер квалити потому что писался в 4 часа утра когда у меня голова кипела от рефлексии
				
			Собсна сама модель примерно такая получается
			
				C#:
			
		
		
		[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
    abstract class ModuleAttribute : Attribute {
        public abstract bool IsContextValid(Message msg, string args, TelegramBotClient bot, bool sudo, Bot botBase);
        public abstract string GetErrorMessage(Language lang);
    }
	допустим у меня есть модуль в боте(класс который наследует абст. класс Module), которому для работы нужны права суперпользователя(всякие системные кмд), я создаю атрибут который будет проверять на то, есть ли у человека sudo, которое по дефу и так передается во все классы, но так в самом теле исполнения кода команды я не буду срать проверками на арги и прочую дичь
казалось бы справедливо уже, но я столкнулся с тем, что конструктор у атрибутов не вызывается как написано в доках(спс майки), ну и пришлось порефлексировать немного
теперь достаточно просто вызывать этот верифай перед исполнением тела модуля и дело в шляпе(ну и ловить эксепшн офк)
по скольку это андокументед все и делалось методом тыка у мя на это ушло ~чяс работы
опять же это все примеры в реализации, просто хотелос помочь тем, кто ресерчить это будет
код не супер квалити потому что писался в 4 часа утра когда у меня голова кипела от рефлексии
