К содержимому

Теги

Теги - набор пользовательских меток. Другие расширения могут оставлять специальные метки на пользователе. На определённое время или постоянные.

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

::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.loader
def 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="Установить аттрибута")