tux.cogs.levels.levels
¶
Classes:
Name | Description |
---|---|
Levels | |
Classes¶
Levels(bot: Tux)
¶
Bases: Cog
Methods:
Name | Description |
---|---|
levels | Level and XP management related commands. |
set | Sets the level of a member. |
set_xp | Sets the xp of a member. |
reset | Resets the xp and level of a member. |
blacklist | Blacklists or unblacklists a member from leveling. |
Source code in tux/cogs/levels/levels.py
Python
def __init__(self, bot: Tux) -> None:
self.bot = bot
self.levels_service = LevelsService(bot)
self.db = DatabaseController()
self.levels.usage = generate_usage(self.levels)
self.set.usage = generate_usage(self.set)
self.reset.usage = generate_usage(self.reset)
self.blacklist.usage = generate_usage(self.blacklist)
self.set_xp.usage = generate_usage(self.set_xp)
Functions¶
levels(ctx: commands.Context[Tux]) -> None
async
¶
Level and XP management related commands.
Source code in tux/cogs/levels/levels.py
set(ctx: commands.Context[Tux], member: discord.Member, new_level: int) -> None
async
¶
Sets the level of a member.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ctx | Context[Tux] | The context object for the command. | required |
member | Member | The member to set the level for. | required |
Source code in tux/cogs/levels/levels.py
Python
@checks.has_pl(2)
@commands.guild_only()
@levels.command(name="set", aliases=["s"])
async def set(self, ctx: commands.Context[Tux], member: discord.Member, new_level: int) -> None:
"""
Sets the level of a member.
Parameters
----------
ctx : commands.Context[Tux]
The context object for the command.
member : discord.Member
The member to set the level for.
"""
assert ctx.guild
old_level: int = await self.db.levels.get_level(member.id, ctx.guild.id)
old_xp: float = await self.db.levels.get_xp(member.id, ctx.guild.id)
if embed_result := self.levels_service.valid_xplevel_input(new_level):
await ctx.send(embed=embed_result)
return
new_xp: float = self.levels_service.calculate_xp_for_level(new_level)
await self.db.levels.update_xp_and_level(
member.id,
ctx.guild.id,
new_xp,
new_level,
datetime.datetime.now(datetime.UTC),
)
# Update roles based on the new level
await self.levels_service.update_roles(member, ctx.guild, new_level)
embed: discord.Embed = EmbedCreator.create_embed(
embed_type=EmbedType.INFO,
title=f"Level Set - {member}",
description=f"{member}'s level has been updated from **{old_level}** to **{new_level}**\nTheir XP has been updated from **{round(old_xp)}** to **{round(new_xp)}**",
custom_color=discord.Color.blurple(),
)
await ctx.send(embed=embed)
set_xp(ctx: commands.Context[Tux], member: discord.Member, xp_amount: int) -> None
async
¶
Sets the xp of a member.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ctx | Context[Tux] | The context object for the command. | required |
member | Member | The member to set the XP for. | required |
Source code in tux/cogs/levels/levels.py
Python
@checks.has_pl(2)
@commands.guild_only()
@levels.command(name="setxp", aliases=["sxp"])
async def set_xp(self, ctx: commands.Context[Tux], member: discord.Member, xp_amount: int) -> None:
"""
Sets the xp of a member.
Parameters
----------
ctx : commands.Context[Tux]
The context object for the command.
member : discord.Member
The member to set the XP for.
"""
assert ctx.guild
if embed_result := self.levels_service.valid_xplevel_input(xp_amount):
await ctx.send(embed=embed_result)
return
old_level: int = await self.db.levels.get_level(member.id, ctx.guild.id)
old_xp: float = await self.db.levels.get_xp(member.id, ctx.guild.id)
new_level: int = self.levels_service.calculate_level(xp_amount)
await self.db.levels.update_xp_and_level(
member.id,
ctx.guild.id,
float(xp_amount),
new_level,
datetime.datetime.now(datetime.UTC),
)
# Update roles based on the new level
await self.levels_service.update_roles(member, ctx.guild, new_level)
embed: discord.Embed = EmbedCreator.create_embed(
embed_type=EmbedType.INFO,
title=f"XP Set - {member}",
description=f"{member}'s XP has been updated from **{round(old_xp)}** to **{(xp_amount)}**\nTheir level has been updated from **{old_level}** to **{new_level}**",
custom_color=discord.Color.blurple(),
)
await ctx.send(embed=embed)
reset(ctx: commands.Context[Tux], member: discord.Member) -> None
async
¶
Resets the xp and level of a member.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ctx | Context[Tux] | The context object for the command. | required |
member | Member | The member to reset the XP for. | required |
Source code in tux/cogs/levels/levels.py
Python
@checks.has_pl(2)
@commands.guild_only()
@levels.command(name="reset", aliases=["r"])
async def reset(self, ctx: commands.Context[Tux], member: discord.Member) -> None:
"""
Resets the xp and level of a member.
Parameters
----------
ctx : commands.Context[Tux]
The context object for the command.
member : discord.Member
The member to reset the XP for.
"""
assert ctx.guild
old_xp: float = await self.db.levels.get_xp(member.id, ctx.guild.id)
await self.db.levels.reset_xp(member.id, ctx.guild.id)
embed: discord.Embed = EmbedCreator.create_embed(
embed_type=EmbedType.INFO,
title=f"XP Reset - {member}",
description=f"{member}'s XP has been reset from **{round(old_xp)}** to **0**",
custom_color=discord.Color.blurple(),
)
await ctx.send(embed=embed)
blacklist(ctx: commands.Context[Tux], member: discord.Member) -> None
async
¶
Blacklists or unblacklists a member from leveling.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ctx | Context[Tux] | The context object for the command. | required |
member | Member | The member to XP blacklist. | required |
Source code in tux/cogs/levels/levels.py
Python
@checks.has_pl(2)
@commands.guild_only()
@levels.command(name="blacklist", aliases=["bl"])
async def blacklist(self, ctx: commands.Context[Tux], member: discord.Member) -> None:
"""
Blacklists or unblacklists a member from leveling.
Parameters
----------
ctx : commands.Context[Tux]
The context object for the command.
member : discord.Member
The member to XP blacklist.
"""
assert ctx.guild
state: bool = await self.db.levels.toggle_blacklist(member.id, ctx.guild.id)
embed: discord.Embed = EmbedCreator.create_embed(
embed_type=EmbedType.INFO,
title=f"XP Blacklist - {member}",
description=f"{member} has been {'blacklisted' if state else 'unblacklisted'} from gaining XP.",
custom_color=discord.Color.blurple(),
)
await ctx.send(embed=embed)