feat(shard): ✨ Finish polishing moderation commands.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -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),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user