コード例 #1
0
    async def profile(self, ctx: Context, *, member: Member = None):
        """User's profile"""

        if not member:
            member = ctx.author

        user, _ = await User.get_or_create(id=member.id)
        # Calculate current level progress:
        # (exp - curr lvl req) * 100 / (curr lvl req - next lvl req)
        current_level_exp = (user.level * 4)**2
        next_level_exp = ((user.level + 1) * 4)**2
        progress = round((user.exp - current_level_exp) * 100 /
                         (next_level_exp - current_level_exp))
        # Find position of profile in global user ranking
        rank = (await User.all().order_by("-exp")).index(user)

        embed = Embed(ctx,
                      title=f"{member.name}'s profile",
                      color=member.color)
        embed.set_thumbnail(url=member.avatar_url)

        embed.add_fields(
            ("Rank", str(rank + 1)),
            ("Level", f"{user.level}"),
            ("Experience", f"{user.exp}/{next_level_exp} ({progress}%)"),
            ("Balance", f"{user.balance} coins"),
        )

        if mutes := await Mute.filter(guild__id=ctx.guild.id,
                                      user__id=member.id).count():
            embed.add_field(name="Mutes", value=str(mutes))
コード例 #2
0
ファイル: utility.py プロジェクト: mlunax/nagatoro
    async def user(self, ctx: Context, *, user: Union[Member, User] = None):
        """Shows info about an user or a member"""

        if not user:
            user = ctx.author

        title = str(user) if not user.bot else f"{user} :robot:"
        embed = Embed(ctx, title=title, color=user.color)
        embed.set_thumbnail(url=user.avatar_url)
        embed.add_fields(("ID", user.id), ("Created at", user.created_at))

        await ctx.send(embed=embed)
コード例 #3
0
    async def server(self, ctx: Context):
        """Shows info about this server"""

        embed = Embed(ctx, title=ctx.guild.name)
        embed.set_thumbnail(url=ctx.guild.icon_url_as(size=2048))

        embed.add_fields(
            (t(ctx, "id"), ctx.guild.id),
            (t(ctx, "owner"), ctx.guild.owner.mention),
            (t(ctx, "region"), ctx.guild.region),
            (t(ctx, "members"), str(ctx.guild.member_count)),
            (t(ctx, "text_channels"), str(len(ctx.guild.text_channels))),
            (t(ctx, "voice_channels"), str(len(ctx.guild.voice_channels))),
        )

        await ctx.send(embed=embed)