roster.py 文件源码

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

项目:spirit 作者: jgayfer 项目源码 文件源码
def show(self, ctx):
        """
        Display the roster

        The roster includes the name, Destiny 2 class,
        and timezone of server members. Note that only
        users who have set a role or timezone will be
        displayed on the roster.
        """
        manager = MessageManager(self.bot, ctx.author, ctx.channel, ctx.prefix, [ctx.message])
        roster_groups = []
        roster = self.bot.db.get_roster(ctx.guild.id)

        if len(roster) != 0:

            text = "```\n"
            for row in roster:

                # Add a single entry to the roster message
                member = ctx.guild.get_member(row.get('user_id'))
                role = row.get('role')
                timezone = row.get('timezone')
                if member:
                    name = member.display_name
                    formatted_name = (name[:16] + '..') if len(name) > 16 else name
                    role = role if role else "---"
                    timezone = timezone if timezone else "---"
                    text += '{:18} {:6} {:7}\n'.format(formatted_name, timezone, role)

                # If the message is too big, place it into a group
                if len(text) > 2000:
                    text += "```"
                    roster_groups.append(text)
                    text = "```\n"

            # Add any remaining entries into a roster group
            if len(text) > 5:
                text += "```"
                roster_groups.append(text)

            # Send the initial roster message
            embed_msg = discord.Embed(color=constants.BLUE)
            embed_msg.title="{} Roster".format(ctx.guild.name)
            embed_msg.description = roster_groups[0]
            await manager.say(embed_msg, embed=True, delete=False)

            # Send additional roster messages if the roster is too long
            for group in roster_groups[1:]:
                embed_msg = discord.Embed(color=constants.BLUE)
                embed_msg.title="{} Roster (continued)".format(ctx.guild.name)
                embed_msg.description = group
                await manager.say(embed_msg, embed=True, delete=False)

        else:
            await manager.say("No roster exists yet. Use '{}roster settimezone' or '{}roster ".format(ctx.prefix, ctx.prefix)
                            + "setclass' to add the first entry!")
        await manager.clear()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号