1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 22:23:13 +00:00
Lumi/modules/levels/level.py

30 lines
991 B
Python

from discord import Embed
from discord.ext import bridge
from lib.constants import CONST
from lib.embed_builder import EmbedBuilder
from services.xp_service import XpService
async def rank(ctx: bridge.Context) -> None:
if not ctx.guild:
return
xp_data: XpService = XpService(ctx.author.id, ctx.guild.id)
rank: str = str(xp_data.calculate_rank())
needed_xp_for_next_level: int = XpService.xp_needed_for_next_level(xp_data.level)
embed: Embed = EmbedBuilder.create_success_embed(
ctx=ctx,
title=CONST.STRINGS["xp_level"].format(xp_data.level),
footer_text=CONST.STRINGS["xp_server_rank"].format(rank or "NaN"),
show_name=False,
thumbnail_url=ctx.author.display_avatar.url,
)
embed.add_field(
name=CONST.STRINGS["xp_progress"],
value=XpService.generate_progress_bar(xp_data.xp, needed_xp_for_next_level),
inline=False,
)
await ctx.respond(embed=embed, content=ctx.author.mention)