info.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:dogbot 作者: slice 项目源码 文件源码
def roles(self, ctx):
        """
        Views detailed information about the roles in this server.

        Information is presented in a table-like layout.

        Columns:
            - Role position
                The role's position in the hierarchy. The bottom role is #0.
            - Role name
            - Role color
            - Role ID
            - Role properties
            - Role members

        Role properties:
            Role properties are represented as a sequence of characters.
            Each character has a separate meaning.

            H: This role is hoisted.
            M: This role is managed.
            @: This role is mentionable by everyone.
            D: This role is the default role (@everyone).
            A: This role has the "Administrator" permission.
            E: This role has the "Mention Everyone" permission.
        """
        paginator = commands.Paginator()

        sorted_roles = sorted(ctx.guild.roles, key=lambda r: r.position, reverse=True)
        longest_role_name = max(map(lambda r: len(r.name), ctx.guild.roles))

        # add lines
        for role in sorted_roles:
            # compile a list of role properties
            attrs = {
                # role attributes
                'H': role.hoist, 'M': role.managed, '@': role.mentionable, 'D': role.is_default(),

                # role permissions
                'A': role.permissions.administrator, 'E': role.permissions.mention_everyone
            }
            properties = ''.join(rep for rep, val in attrs.items() if val)

            # how many members?
            members = utils.commas(len(role.members))

            # get color
            color = 'default' if role.color == discord.Color.default() else str(role.color)

            fmt = (f'{role.position: <2} {role.name: <{longest_role_name}} {color} {role.id: <18} '
                   f'{properties: <{len(attrs)}} {members: <4}')
            paginator.add_line(fmt)

        for page in paginator.pages:
            await ctx.send(page)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号