feat(shard): ✨ Finish polishing moderation commands.
This commit is contained in:
@@ -312,6 +312,10 @@ class Payphone(commands.AutoShardedBot):
|
|||||||
|
|
||||||
await ban.save()
|
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)
|
await self.redis.set(f"banned:{user_id}", 1, exat=expires_at)
|
||||||
|
|
||||||
return ban
|
return ban
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class Admin(base.Cog):
|
|||||||
|
|
||||||
await ctx.send(
|
await ctx.send(
|
||||||
f"✅ Toggled the moderator role {'on' if user.is_moderator else 'off'} for <@{user.id}>.",
|
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"])
|
@commands.command(aliases=["b"])
|
||||||
@@ -168,12 +168,14 @@ class Admin(base.Cog):
|
|||||||
.select_related("reported_by")
|
.select_related("reported_by")
|
||||||
.first()
|
.first()
|
||||||
)
|
)
|
||||||
|
remaining_reports = await models.Report.filter(resolved=False).count()
|
||||||
|
|
||||||
if report is None:
|
if report is None:
|
||||||
return await ctx.send("✅ No reports left, have this cookie 🍪 !!")
|
return await ctx.send("✅ No reports left, have this cookie 🍪 !!")
|
||||||
|
|
||||||
await ctx.send(
|
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"])
|
@commands.command(aliases=["bs", "ws"])
|
||||||
@@ -208,6 +210,10 @@ class Admin(base.Cog):
|
|||||||
.order_by("-created_at")
|
.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 not bans and not warns:
|
||||||
if user.bans_count or user.warns_count:
|
if user.bans_count or user.warns_count:
|
||||||
await ctx.send(
|
await ctx.send(
|
||||||
@@ -262,6 +268,7 @@ class Admin(base.Cog):
|
|||||||
if ban.expired_by
|
if ban.expired_by
|
||||||
else ""
|
else ""
|
||||||
)
|
)
|
||||||
|
+ f" · {user.warns_count}w, {user.bans_count}b"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
if ban.report
|
if ban.report
|
||||||
@@ -281,6 +288,7 @@ class Admin(base.Cog):
|
|||||||
if ban.expired_by
|
if ban.expired_by
|
||||||
else ""
|
else ""
|
||||||
)
|
)
|
||||||
|
+ f" · {user.warns_count}w, {user.bans_count}b"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -315,7 +323,7 @@ class Admin(base.Cog):
|
|||||||
),
|
),
|
||||||
thumbnail=warn.report.user_avatar_url,
|
thumbnail=warn.report.user_avatar_url,
|
||||||
footer=discord.EmbedFooter(
|
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
|
if warn.report
|
||||||
@@ -329,7 +337,7 @@ class Admin(base.Cog):
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
footer=discord.EmbedFooter(
|
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"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -464,7 +472,7 @@ class Admin(base.Cog):
|
|||||||
@checks.is_moderator()
|
@checks.is_moderator()
|
||||||
async def lock(self, ctx: commands.Context) -> None:
|
async def lock(self, ctx: commands.Context) -> None:
|
||||||
"""Closes and locks a thread.
|
"""Closes and locks a thread.
|
||||||
|
|
||||||
Permissions:
|
Permissions:
|
||||||
- Bot Moderator
|
- Bot Moderator
|
||||||
- In Payphone Hub
|
- In Payphone Hub
|
||||||
|
|||||||
@@ -11,18 +11,32 @@ from payphone.cogs.admin import embeds
|
|||||||
class ReportView(discord.ui.View):
|
class ReportView(discord.ui.View):
|
||||||
"""The report 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.
|
"""Initializes the ReportView.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
bot (Payphone): The bot.
|
bot (Payphone): The bot.
|
||||||
report (models.Report): The report.
|
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)
|
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.bot = bot
|
||||||
self.report = report
|
self.report = report
|
||||||
|
self.counter = counter
|
||||||
|
|
||||||
@discord.ui.select(
|
@discord.ui.select(
|
||||||
placeholder="Select an action",
|
placeholder="Select an action",
|
||||||
@@ -70,6 +84,7 @@ class ReportView(discord.ui.View):
|
|||||||
.select_related("reported_by")
|
.select_related("reported_by")
|
||||||
.first()
|
.first()
|
||||||
)
|
)
|
||||||
|
reports_remaining = await models.Report.filter(resolved=False).count()
|
||||||
|
|
||||||
if report is None:
|
if report is None:
|
||||||
self.stop()
|
self.stop()
|
||||||
@@ -82,7 +97,12 @@ class ReportView(discord.ui.View):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
await interaction.response.edit_message(
|
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)
|
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()
|
await self.report.save()
|
||||||
|
|
||||||
report = await models.Report.filter(resolved=False).first()
|
report = await models.Report.filter(resolved=False).first()
|
||||||
|
reports_remaining = await models.Report.filter(resolved=False).count()
|
||||||
|
|
||||||
if report is None:
|
if report is None:
|
||||||
self.stop()
|
self.stop()
|
||||||
@@ -266,5 +287,10 @@ class ReportView(discord.ui.View):
|
|||||||
)
|
)
|
||||||
|
|
||||||
await interaction.response.edit_message(
|
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"])
|
await webhook.edit_message(propagation_id, content=payload.data["content"])
|
||||||
|
|
||||||
@commands.message_command(
|
@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(
|
async def report_message(
|
||||||
self, ctx: discord.ApplicationContext, message: discord.Message
|
self, ctx: discord.ApplicationContext, message: discord.Message
|
||||||
|
|||||||
Reference in New Issue
Block a user