user-infractions shows total severity.
Command user-infractions now shows the total severity/weight and number of infractions.
This commit is contained in:
parent
a9920e44d1
commit
c02ff3f8f8
|
@ -15,6 +15,7 @@ from naff import (
|
||||||
Button,
|
Button,
|
||||||
ButtonStyles,
|
ButtonStyles,
|
||||||
)
|
)
|
||||||
|
from peewee import fn
|
||||||
from database import (
|
from database import (
|
||||||
GuildSettings,
|
GuildSettings,
|
||||||
Infractions as InfractionsModel,
|
Infractions as InfractionsModel,
|
||||||
|
@ -49,8 +50,11 @@ class Infractions(Extension):
|
||||||
EmbedField(
|
EmbedField(
|
||||||
name="**Received**",
|
name="**Received**",
|
||||||
value=f"<t:{int(infraction.at_time.timestamp())}:F>",
|
value=f"<t:{int(infraction.at_time.timestamp())}:F>",
|
||||||
|
inline=True,
|
||||||
|
),
|
||||||
|
EmbedField(
|
||||||
|
name="**Severity**", value=f"{infraction.weight}", inline=True
|
||||||
),
|
),
|
||||||
EmbedField(name="**Severity**", value=f"{infraction.weight}"),
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
embeds.append(embed)
|
embeds.append(embed)
|
||||||
|
@ -73,35 +77,59 @@ class Infractions(Extension):
|
||||||
await ctx.defer(ephemeral=False)
|
await ctx.defer(ephemeral=False)
|
||||||
infractions: List[InfractionsModel] = InfractionsModel.select().where(
|
infractions: List[InfractionsModel] = InfractionsModel.select().where(
|
||||||
InfractionsModel.guild_id == int(ctx.guild_id),
|
InfractionsModel.guild_id == int(ctx.guild_id),
|
||||||
InfractionsModel.user_id == int(ctx.author.id),
|
InfractionsModel.user_id == int(user.id),
|
||||||
)
|
)
|
||||||
|
|
||||||
if len(infractions) == 0:
|
if len(infractions) == 0:
|
||||||
await ctx.send(f"{user.mention} has no infractions.")
|
await ctx.send(f"{user.mention} has no infractions.")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
infractions_weight: List[InfractionsModel] = InfractionsModel.select(
|
||||||
|
InfractionsModel.user_id,
|
||||||
|
fn.SUM(InfractionsModel.weight).alias("total_weight"),
|
||||||
|
fn.COUNT(InfractionsModel.id).alias("total_infractions"),
|
||||||
|
).where(
|
||||||
|
InfractionsModel.guild_id == int(ctx.guild_id),
|
||||||
|
InfractionsModel.user_id == int(user.id),
|
||||||
|
)
|
||||||
|
|
||||||
embeds: List[Embed] = []
|
embeds: List[Embed] = []
|
||||||
for infraction in infractions: # pylint: disable=not-an-iterable
|
for infraction in infractions: # pylint: disable=not-an-iterable
|
||||||
issuer = await self.client.fetch_member(
|
issuer = await self.client.fetch_member(
|
||||||
guild_id=ctx.guild, user_id=infraction.given_by
|
guild_id=ctx.guild, user_id=infraction.given_by
|
||||||
)
|
)
|
||||||
embed = Embed(
|
embed = Embed(
|
||||||
title=f"Infraction for user {user.display_name} ({user.username}#{user.discriminator}, {user.id})", # pylint: disable=line-too-long
|
title=f"Infraction for user {user.display_name} ({user.username}#{user.discriminator}, {user.id})", # pylint: disable=line-too-long
|
||||||
description=f"{infraction.reason}",
|
description=f"{infraction.reason}",
|
||||||
color=infraction_colour(infraction.weight),
|
color=infraction_colour(infraction.weight),
|
||||||
fields=[
|
fields=[
|
||||||
EmbedField(name="**ID**", value=f"{infraction.id}"),
|
EmbedField(name="**ID**", value=f"{infraction.id}", inline=True),
|
||||||
EmbedField(
|
EmbedField(
|
||||||
name="**Received**",
|
name="**Received**",
|
||||||
value=f"<t:{int(infraction.at_time.timestamp())}:F>",
|
value=f"<t:{int(infraction.at_time.timestamp())}:F>",
|
||||||
|
inline=True,
|
||||||
|
),
|
||||||
|
EmbedField(
|
||||||
|
name="**Severity**", value=f"{infraction.weight}", inline=True
|
||||||
|
),
|
||||||
|
EmbedField(
|
||||||
|
name="**Issued by**",
|
||||||
|
value=f"{issuer.display_name}",
|
||||||
|
inline=True,
|
||||||
),
|
),
|
||||||
EmbedField(name="**Severity**", value=f"{infraction.weight}"),
|
|
||||||
EmbedField(name="**Issued by**", value=f"{issuer.display_name}"),
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
embeds.append(embed)
|
embeds.append(embed)
|
||||||
|
|
||||||
await ctx.send(embed=embeds, ephemeral=False)
|
print(infractions.count())
|
||||||
|
print(infractions_weight.count())
|
||||||
|
await ctx.send(
|
||||||
|
content=f"{user.mention} has {infractions_weight[0].total_infractions} infractions, for a total weight of {infractions_weight[0].total_weight:.2f}"
|
||||||
|
if infractions_weight.count() > 0
|
||||||
|
else None,
|
||||||
|
embed=embeds,
|
||||||
|
ephemeral=False,
|
||||||
|
)
|
||||||
|
|
||||||
@slash_command(
|
@slash_command(
|
||||||
name="warn",
|
name="warn",
|
||||||
|
@ -183,20 +211,20 @@ class Infractions(Extension):
|
||||||
ephemeral=True,
|
ephemeral=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
guild_settings: Optional[GuildSettings] = GuildSettings.get_or_none(GuildSettings.guild_id == int(ctx.guild_id))
|
# TODO: Add this in again when GuildSettings is implemented
|
||||||
if guild_settings is not None:
|
|
||||||
if guild_settings.admin_channel is not None:
|
# guild_settings: Optional[GuildSettings] = GuildSettings.get_or_none(GuildSettings.guild_id == int(ctx.guild_id))
|
||||||
admin_channel = self.client.fetch_channel(int(guild_settings.admin_channel))
|
# if guild_settings is not None:
|
||||||
if admin_channel is not None:
|
# if guild_settings.admin_channel is not None:
|
||||||
await admin_channel.send(embed=Embed(
|
# admin_channel = self.client.fetch_channel(int(guild_settings.admin_channel))
|
||||||
title=f"Warned {user.display_name} ({user.username}#{user.discriminator}, {user.id})",
|
# if admin_channel is not None:
|
||||||
description=f"{reason}",
|
# await admin_channel.send(embed=Embed(
|
||||||
color=infraction_colour(0x0000FF),
|
# title=f"Warned {user.display_name} ({user.username}#{user.discriminator}, {user.id})",
|
||||||
fields=[
|
# description=f"{reason}",
|
||||||
EmbedField(name="**Severity**", value=f"{weight}"),
|
# color=infraction_colour(0x0000FF),
|
||||||
EmbedField("**Issued by**", f"{ctx.author.display_name}"),
|
# fields=[
|
||||||
],
|
# ],
|
||||||
))
|
# ))
|
||||||
|
|
||||||
if not silent and warning_msg is None:
|
if not silent and warning_msg is None:
|
||||||
await ctx.send(
|
await ctx.send(
|
||||||
|
|
Loading…
Reference in New Issue