ekonda / kutana

The library for developing systems for messengers and social networks
MIT License
72 stars 17 forks source link

Добавьте больше декораторов - модификаторов доступа #69

Closed nukdokplex closed 1 year ago

nukdokplex commented 1 year ago

Когда разработчики разрабатывают плагины, они хотят видеть больше возможностей для разграничения доступа для различных пользователей. К примеру, разработчик пишет плагин для модерации мультичата (беседы). Ему необходимо ограничить доступ к командам, например к команде, которая банит участника. Было бы здорово не писать условие внутри функции, а просто импортировать готовый декоратор для нее. И декоратор, который проверяет, является ли отправитель (sender) администратором мультичата, этакий @plugin.is_chat_admin().

Ожидаемое поведение

Хотелось бы видеть следующие декораторы:

Возможно удастся придумать их больше, но я столкнулся с необходимость иметь хотя-бы эти.

Текущее поведение

Приведенных выше декораторов не существует в Kutana.

Возможные решения

Нужно - всего-то - ничего, просто добавить эти декораторы в kutana.Plugin.

Контекст

Эти декораторы мне очень сильно понадобились, когда я писал своего бота. Пришлось писать их с нуля, потому что в моем боте есть очень много плагинов с разграничением доступа.

michaelkryukov commented 1 year ago

Было бы здорово не писать условие внутри функции, а просто импортировать готовый декоратор для нее

Я полагаю, вы это и сделали? Получается ничего в самой библиотеке делать и надо) Можно готовые добавить куда-нибудь – в отдельный модуль или в плагин. Можете поделиться реализацией? Может просто стоит их добавить

nukdokplex commented 1 year ago

Я полагаю, вы это и сделали? Получается ничего в самой библиотеке делать и надо) Можно готовые добавить куда-нибудь – в отдельный модуль или в плагин. Можете поделиться реализацией? Может просто стоит их добавить

Я крайне огорчен вашей политикой. Отвечу только в этом issue на счет остальных моих трех.

Я не считаю, что скажем, такая простая вещь как добавление пары-тройки действительно нужных фич - это инфраструктурное рабство разработчиков ботов. Ими же можно, к примеру, просто не пользоваться и от этого с производительностью ничего не случится, но зато разработчикам ботов не придется изобретать велосипед или импортировать еще одну бииблиотеку, которую непонятно, где вообще взять, из gist'ов разве что, даже которых я не нашел.

Скорее всего это является частью вашей философии - создание гибчайшего инструмента в котором не будет ничего лишнего. Отчасти, это действительно хорошо. Но лично я вижу в этом огромную проблему. Kutana могла бы стать очень мощным инструментом создания ботов, например как Red, а возможно даже еще мощнее из-за своей мультиплатформенности, но из-за вашей философии она остаётся тем, чем является сейчас - сомнительной библиотекой, хотя может стать настоящим фреймворком.

Исходя из ваших ответов, я принял решение форкнуть Kutana и попытаться сделать то, о чем я говорил.

michaelkryukov commented 1 year ago

Я же буквально попросил у вас реализацию, чтобы добавить её в kutana. Идею про парсинг команд я написал, что сделаю отдельную issue, в которой всё сформулирую. По подмодулям - там надо немного доработать, но уже сейчас по папкам можно плагины размещать. Про переводы я сказал, что у меня просто ресурсов нет доработать, и лучше оставить на откуп разработчикам. Так что ответ не соответствует моим сообщениям в ваших issue. "Cомнительная библиотека" - это, конечно, сильно сказано)

nukdokplex commented 1 year ago

@michaelkryukov Я конечно сделал, но это было на коленке, так скажем. Однако, если вам это поможет, то я рад поделиться. Но их нужно дебажить.

https://gist.github.com/nukdokplex/e5a659ab0cccb7d97f46d9c3c6c9d576

nukdokplex commented 1 year ago

Не стал создавать pull request. И насчет форка я еще пожалуй тоже подумаю.

michaelkryukov commented 1 year ago

@nukdokplex я, если что, готов с радостью принимать хорошие изменения) Так что в форке, вроде, нет особой необходимости. За гист спасибо, посмотрю для контекста, как минимум

michaelkryukov commented 1 year ago

Экспериментально релизнул немного декораторов в мастер (https://github.com/ekonda/kutana/blob/master/kutana/decorators.py). Предложения/критика принимается в виде созданных новых ищусов