Теги
Теги - набор пользовательских меток. Другие расширения могут оставлять специальные метки на пользователе. На определённое время или постоянные.
Определение
Заголовок раздела «Определение»Поскольку функционал тегов реализован на уровне ядра, вы можете использовать теги во всех своих расширениях.
::caution[Имена тегов]
В ядре пока не реализован регистр тегов. Так что каждое расширение самостоятельно определяет набор тегов. :::
Есть 2 тега, которые используются на уровне ядра:
chio/banned: Пользователь заблокирован и не может использовать команды.chio/admin: У пользователя есть особые права на использование команд.
Все прочие теги, разработчики сами определяют. Обычно имена тегов включают в себя имя расширения + функционал. Например:
profile/edit: Возможность редактирования профиля пользователя.
Использование
Заголовок раздела «Использование»Для того чтобы управлять тегами пользователей, воспользуйтесь расширением:
extensions/systems/tags.py, если его у вас ещё нету.
Оно предоставляет весь основной необходимый функционал.
Для использования тегов, используются заранее заготовленные хуки:
-
has_tags(): У пользователя есть все перечисленные теги. -
any_tags(): у пользователя есть хотя бы один из тегов. Самая часто используемая функция. Пример использования:profile/admin,chio/admin. -
not_tags(): У пользователя нет указанных тегов. Используется в ядре, на проверкуchio/banned.
Использовать их можно на уровне расширения:
@arc.loaderdef loader(client: ChioClient) -> None: """Действие при загрузке плагина.""" plugin.add_hook(any_tags("chio/admin")) # Добавили проверку на наличие тегов client.add_plugin(plugin)Так и на уровне отдельной команды:
@profiles_group.include@arc.with_hook(any_tags("profile/edit", "chio/admin"))@arc.slash_subcommand("set", description="Установить аттрибута")