From dc0aadc8f4985310282d35f3d74de4db02828c76 Mon Sep 17 00:00:00 2001 From: "Nyeki.py" <84998222+Nekidev@users.noreply.github.com> Date: Fri, 18 Oct 2024 04:27:56 -0300 Subject: [PATCH] feat(bot): :sparkles: Add remaining reports counter to `p.reports`. --- payphone/cogs/mods/cog.py | 5 +++-- payphone/cogs/mods/views.py | 16 ++++++++++++---- payphone/cogs/users/cog.py | 4 +++- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/payphone/cogs/mods/cog.py b/payphone/cogs/mods/cog.py index 2cc5634..4f849a9 100644 --- a/payphone/cogs/mods/cog.py +++ b/payphone/cogs/mods/cog.py @@ -9,7 +9,7 @@ import discord from discord import errors from discord.ext import commands -from tortoise import transactions +from tortoise import transactions, functions from payphone import bot from payphone.db import models, utils @@ -183,6 +183,7 @@ class Mods(base.Cog): .select_related("call") .prefetch_related("call__call_rss", "call__call_rss__profile") ) + total = await models.Report.filter(status=models.ReportStatus.ON_REVIEW).count() if report is None: await ctx.send("✅ You're up to date! No reports left to check.") @@ -190,7 +191,7 @@ class Mods(base.Cog): await ctx.send( embed=embeds.ReportEmbed(self.bot, report), - view=views.ReportView(self.bot, report), + view=views.ReportView(self.bot, report, total), ) @commands.command(aliases=["mod"]) diff --git a/payphone/cogs/mods/views.py b/payphone/cogs/mods/views.py index 94329f3..5b3a10c 100644 --- a/payphone/cogs/mods/views.py +++ b/payphone/cogs/mods/views.py @@ -2,7 +2,7 @@ import discord from discord.ext import pages from discord.utils import find -from tortoise import transactions +from tortoise import transactions, functions from payphone import bot from payphone.db import models @@ -55,12 +55,15 @@ class BanNotificationView(discord.ui.View): class ReportView(discord.ui.View): """The view sent together with the report embed.""" - def __init__(self, bot: bot.Payphone, report: models.Report) -> None: + def __init__( + self, bot: bot.Payphone, report: models.Report, remaining_reports: int + ) -> None: """Initializes the view. Args: bot (bot.Payphone): The bot. report (models.Report): The report. + remaining_reports (int): The amount of reports that need to be reviewed remaining. """ super().__init__(timeout=300, disable_on_timeout=True) @@ -96,6 +99,9 @@ class ReportView(discord.ui.View): actions.callback = actions_callback self.add_item(actions) + self.add_item( + discord.ui.Button(label=f"Remaining: {remaining_reports}", disabled=True, row=2) + ) @discord.ui.button(label="Message Logs", style=discord.ButtonStyle.gray, row=2) async def message_logs( @@ -181,6 +187,7 @@ class ReportView(discord.ui.View): .select_related("call") .prefetch_related("call__call_rss", "call__call_rss__profile") ) + total = await models.Report.filter(status=models.ReportStatus.ON_REVIEW).count() if report is None: await interaction.response.edit_message( @@ -192,7 +199,7 @@ class ReportView(discord.ui.View): await interaction.response.edit_message( embed=embeds.ReportEmbed(self.bot, report), - view=views.ReportView(self.bot, report), + view=views.ReportView(self.bot, report, total), ) @discord.ui.button(label="Decline", style=discord.ButtonStyle.red, row=2) @@ -213,6 +220,7 @@ class ReportView(discord.ui.View): .select_related("call") .prefetch_related("call__call_rss", "call__call_rss__profile") ) + total = await models.Report.filter(status=models.ReportStatus.ON_REVIEW).count() if report is None: await interaction.response.edit_message( @@ -224,5 +232,5 @@ class ReportView(discord.ui.View): await interaction.response.edit_message( embed=embeds.ReportEmbed(self.bot, report), - view=views.ReportView(self.bot, report), + view=views.ReportView(self.bot, report, total), ) diff --git a/payphone/cogs/users/cog.py b/payphone/cogs/users/cog.py index 975b666..59decf6 100644 --- a/payphone/cogs/users/cog.py +++ b/payphone/cogs/users/cog.py @@ -59,7 +59,9 @@ class Users(base.Cog): users_map[user_map[0]].leaderboard_position = i + 1 users_map[user_map[0]].leaderboard_calls_count = user_map[1] - await models.User.bulk_update(users_map.values(), ["leaderboard_position", "leaderboard_calls_count"], 500) + await models.User.bulk_update( + users_map.values(), ["leaderboard_position", "leaderboard_calls_count"], 500 + ) @commands.command() @transactions.atomic()