From fc8b327388ce69d1421df206b8b019d2fd4cf857 Mon Sep 17 00:00:00 2001 From: ajax146 <31014239+ajax146@users.noreply.github.com> Date: Sun, 27 Apr 2025 13:55:51 -0400 Subject: [PATCH 1/2] Auto reject applications after 30 days --- techsupport_bot/commands/application.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/techsupport_bot/commands/application.py b/techsupport_bot/commands/application.py index 5cfca588..fc218887 100644 --- a/techsupport_bot/commands/application.py +++ b/techsupport_bot/commands/application.py @@ -2,6 +2,7 @@ from __future__ import annotations +import datetime from enum import Enum from typing import TYPE_CHECKING, Self @@ -927,6 +928,8 @@ async def execute(self: Self, config: munch.Munch, guild: discord.Guild) -> None user = await guild.fetch_member(int(app.applicant_id)) except discord.NotFound: user = None + + # User who made application left if not user: audit_log.append( f"Application by user: `{app.applicant_name}` was rejected because" @@ -937,6 +940,7 @@ async def execute(self: Self, config: munch.Munch, guild: discord.Guild) -> None ).apply() continue + # User changed their name if user.name != app.applicant_name: audit_log.append( f"Application by user: `{app.applicant_name}` had the stored name" @@ -948,6 +952,7 @@ async def execute(self: Self, config: munch.Munch, guild: discord.Guild) -> None int(config.extensions.application.application_role.value) ) + # User has the helper role if role in getattr(user, "roles", []): audit_log.append( f"Application by user: `{user.name}` was approved since they have" @@ -956,6 +961,19 @@ async def execute(self: Self, config: munch.Munch, guild: discord.Guild) -> None await app.update( application_status=ApplicationStatus.APPROVED.value ).apply() + + # Application has been pending for 30 days + if app.application_time < datetime.datetime.now() - datetime.timedelta( + days=30 + ): + audit_log.append( + f"Application by user: `{user.name}` was rejected since it's been" + f" inactive for 30 days" + ) + await app.update( + application_status=ApplicationStatus.REJECTED.value + ).apply() + if audit_log: embed = discord.Embed(title="Application manage events") for event in audit_log: From 5e55f6b41b84f5976aa9103ef487d8120b6a819b Mon Sep 17 00:00:00 2001 From: ajax146 <31014239+ajax146@users.noreply.github.com> Date: Sat, 3 May 2025 14:45:47 -0400 Subject: [PATCH 2/2] Add max_age config value --- techsupport_bot/commands/application.py | 33 ++++++++++++++++--------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/techsupport_bot/commands/application.py b/techsupport_bot/commands/application.py index fc218887..a56fd219 100644 --- a/techsupport_bot/commands/application.py +++ b/techsupport_bot/commands/application.py @@ -115,6 +115,13 @@ async def setup(bot: bot.TechSupportBot) -> None: description="The ID of the role to ping when a new application is created", default="", ) + config.add( + key="max_age", + datatype="int", + title="Max days an application can live", + description="After this many days, the system will auto reject the applications.", + default=30, + ) await bot.add_cog(ApplicationManager(bot=bot, extension_name="application")) await bot.add_cog(ApplicationNotifier(bot=bot, extension_name="application")) bot.add_extension_config("application", config) @@ -940,6 +947,20 @@ async def execute(self: Self, config: munch.Munch, guild: discord.Guild) -> None ).apply() continue + # Application has been pending for max_age days + max_age_config = config.extensions.application.max_age.value + if app.application_time < datetime.datetime.now() - datetime.timedelta( + days=max_age_config + ): + audit_log.append( + f"Application by user: `{user.name}` was rejected since it's been" + f" inactive for {max_age_config} days" + ) + await app.update( + application_status=ApplicationStatus.REJECTED.value + ).apply() + continue + # User changed their name if user.name != app.applicant_name: audit_log.append( @@ -962,18 +983,6 @@ async def execute(self: Self, config: munch.Munch, guild: discord.Guild) -> None application_status=ApplicationStatus.APPROVED.value ).apply() - # Application has been pending for 30 days - if app.application_time < datetime.datetime.now() - datetime.timedelta( - days=30 - ): - audit_log.append( - f"Application by user: `{user.name}` was rejected since it's been" - f" inactive for 30 days" - ) - await app.update( - application_status=ApplicationStatus.REJECTED.value - ).apply() - if audit_log: embed = discord.Embed(title="Application manage events") for event in audit_log: