Исходный код raito.handlers.roles.staff

from __future__ import annotations

from typing import TYPE_CHECKING

from aiogram import html

from raito import rt
from raito.plugins.commands import description, hidden
from raito.plugins.roles.roles import ADMINISTRATOR, DEVELOPER, OWNER
from raito.utils.ascii import AsciiTree, TreeNode
from raito.utils.filters import RaitoCommand

if TYPE_CHECKING:
    from aiogram import Bot
    from aiogram.types import Message

    from raito.core.raito import Raito

router = rt.Router(name="raito.roles.staff", priority=1)


[документация] @router.message(RaitoCommand("staff"), DEVELOPER | OWNER | ADMINISTRATOR) @description("Shows users with roles") @hidden async def list_staff(message: Message, raito: Raito, bot: Bot) -> None: root = TreeNode("staff", is_folder=True) for role in raito.role_manager.available_roles: role_node = root.add_child(role.label, prefix=role.emoji, is_folder=True) user_ids = await raito.role_manager.get_users(bot_id=bot.id, role=role.slug) for user_id in user_ids: role_node.add_child(html.code(str(user_id))) tree = AsciiTree(folder_icon="", sort=False).render(root) text = html.bold("Current staff:") + "\n\n" + tree await message.answer(text, parse_mode="HTML")