feat(shard): ✨ Finish polishing moderation commands.

This commit is contained in:
2025-04-08 23:13:05 -03:00
parent f05f287bba
commit 86d3f02a4e
5 changed files with 49 additions and 10 deletions
+4
View File
@@ -312,6 +312,10 @@ class Payphone(commands.AutoShardedBot):
await ban.save()
await models.User.filter(id=user_id).update(
bans_count=expressions.F("bans_count") + 1
)
await self.redis.set(f"banned:{user_id}", 1, exat=expires_at)
return ban
+12 -4
View File
@@ -52,7 +52,7 @@ class Admin(base.Cog):
await ctx.send(
f"✅ Toggled the moderator role {'on' if user.is_moderator else 'off'} for <@{user.id}>.",
allowed_mentions=discord.AllowedMentions(users=False)
allowed_mentions=discord.AllowedMentions(users=False),
)
@commands.command(aliases=["b"])
@@ -168,12 +168,14 @@ class Admin(base.Cog):
.select_related("reported_by")
.first()
)
remaining_reports = await models.Report.filter(resolved=False).count()
if report is None:
return await ctx.send("✅ No reports left, have this cookie 🍪 !!")
await ctx.send(
embed=embeds.report_embed(report), view=views.ReportView(self.bot, report)
embed=embeds.report_embed(report),
view=views.ReportView(self.bot, report, (0, remaining_reports)),
)
@commands.command(aliases=["bs", "ws"])
@@ -208,6 +210,10 @@ class Admin(base.Cog):
.order_by("-created_at")
)
if user.bans_count != len(bans):
user.bans_count = len(bans)
await user.save()
if not bans and not warns:
if user.bans_count or user.warns_count:
await ctx.send(
@@ -262,6 +268,7 @@ class Admin(base.Cog):
if ban.expired_by
else ""
)
+ f" · {user.warns_count}w, {user.bans_count}b"
),
)
if ban.report
@@ -281,6 +288,7 @@ class Admin(base.Cog):
if ban.expired_by
else ""
)
+ f" · {user.warns_count}w, {user.bans_count}b"
),
)
)
@@ -315,7 +323,7 @@ class Admin(base.Cog):
),
thumbnail=warn.report.user_avatar_url,
footer=discord.EmbedFooter(
text=f"Warned by {(await self.bot.get_or_fetch_user(warn.created_by.id)).display_name}"
text=f"Warned by {(await self.bot.get_or_fetch_user(warn.created_by.id)).display_name} · {user.warns_count}w, {user.bans_count}b"
),
)
if warn.report
@@ -329,7 +337,7 @@ class Admin(base.Cog):
)
],
footer=discord.EmbedFooter(
text=f"Warned by {(await self.bot.get_or_fetch_user(warn.created_by.id)).display_name}"
text=f"Warned by {(await self.bot.get_or_fetch_user(warn.created_by.id)).display_name} · {user.warns_count}w, {user.bans_count}b"
),
)
)
+29 -3
View File
@@ -11,18 +11,32 @@ from payphone.cogs.admin import embeds
class ReportView(discord.ui.View):
"""The report view."""
def __init__(self, bot: Payphone, report: models.Report) -> None:
def __init__(
self, bot: Payphone, report: models.Report, counter: tuple[int, int]
) -> None:
"""Initializes the ReportView.
Args:
bot (Payphone): The bot.
report (models.Report): The report.
counter (tuple[int, int]): The amount of reports checked during this session, and the
total amount of reports assigned to be checked during this session.
"""
super().__init__(timeout=None)
self.add_item(
discord.ui.Button(
label=f"{counter[0]}/{counter[1]}",
disabled=True,
style=discord.ButtonStyle.gray,
row=1,
)
)
self.bot = bot
self.report = report
self.counter = counter
@discord.ui.select(
placeholder="Select an action",
@@ -70,6 +84,7 @@ class ReportView(discord.ui.View):
.select_related("reported_by")
.first()
)
reports_remaining = await models.Report.filter(resolved=False).count()
if report is None:
self.stop()
@@ -82,7 +97,12 @@ class ReportView(discord.ui.View):
else:
await interaction.response.edit_message(
embed=embeds.report_embed(report), view=ReportView(self.bot, report)
embed=embeds.report_embed(report),
view=ReportView(
self.bot,
report,
(self.counter[0] + 1, reports_remaining + self.counter[0] + 1),
),
)
user = await models.User.get_cache_or_db(self.bot.redis, self.report.user_id)
@@ -255,6 +275,7 @@ class ReportView(discord.ui.View):
await self.report.save()
report = await models.Report.filter(resolved=False).first()
reports_remaining = await models.Report.filter(resolved=False).count()
if report is None:
self.stop()
@@ -266,5 +287,10 @@ class ReportView(discord.ui.View):
)
await interaction.response.edit_message(
embed=embeds.report_embed(report), view=ReportView(self.bot, report)
embed=embeds.report_embed(report),
view=ReportView(
self.bot,
report,
(self.counter[0] + 1, reports_remaining + self.counter[0] + 1),
),
)
+2 -1
View File
@@ -567,7 +567,8 @@ class Calls(base.Cog):
await webhook.edit_message(propagation_id, content=payload.data["content"])
@commands.message_command(
name="Report Message" if not constants.IS_DEBUG else "(Dev) Report Message"
name="Report Message" if not constants.IS_DEBUG else "(Dev) Report Message",
guild_ids=[constants.PAYPHONE_HUB_ID] if not constants.IS_DEBUG else None,
)
async def report_message(
self, ctx: discord.ApplicationContext, message: discord.Message
Generated
+1 -1
View File
@@ -465,7 +465,7 @@ wheels = [
[[package]]
name = "payphone"
version = "0.84.0"
version = "0.85.0"
source = { virtual = "." }
dependencies = [
{ name = "aerich" },