From e370d4af3db5b00a4482edd2146de7c65819b2a9 Mon Sep 17 00:00:00 2001 From: Cordila <49218334+Cordila@users.noreply.github.com> Date: Fri, 9 Sep 2022 22:48:33 +0530 Subject: [PATCH 1/8] Update modmail.py --- cogs/modmail.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/cogs/modmail.py b/cogs/modmail.py index ecdf7144e6..df1cb81c26 100644 --- a/cogs/modmail.py +++ b/cogs/modmail.py @@ -1211,6 +1211,31 @@ async def logs_closed_by(self, ctx, *, user: User = None): session = EmbedPaginatorSession(ctx, *embeds) await session.run() + + @logs.command(name="id") + @checks.has_permissions(PermissionLevel.SUPPORTER) + async def logs_id(self, ctx, key: str): + """ + Get the log link for the specified log ID + """ + icon_url = ctx.author.avatar.url + + logs = await self.bot.api.find_log_entry(key) + + if not any(not log["open"] for log in logs): + embed = discord.Embed( + color=self.bot.error_color, + description=f"Log entry `{key}` not found.", + ) + return await ctx.send(embed=embed) + + logs = reversed(log for log in logs if not log["open"]) + + embeds = self.format_log_embeds(logs, avatar_url=icon_url) + + session = EmbedPaginatorSession(ctx, *embeds) + await session.run() + @logs.command(name="delete", aliases=["wipe"]) @checks.has_permissions(PermissionLevel.OWNER) From 69e5a8e8b95ee7b077494771f906e2e8df73c4a8 Mon Sep 17 00:00:00 2001 From: Cordila <49218334+Cordila@users.noreply.github.com> Date: Fri, 9 Sep 2022 22:50:23 +0530 Subject: [PATCH 2/8] Update clients.py --- core/clients.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/clients.py b/core/clients.py index eebe3bcff6..0c25ca661d 100644 --- a/core/clients.py +++ b/core/clients.py @@ -355,6 +355,9 @@ async def validate_database_connection(self): async def get_user_logs(self, user_id: Union[str, int]) -> list: return NotImplemented + + async def find_log_entry(self, key: str) -> list: + return NotImplemented async def get_latest_user_logs(self, user_id: Union[str, int]): return NotImplemented @@ -528,6 +531,13 @@ async def get_user_logs(self, user_id: Union[str, int]) -> list: logger.debug("Retrieving user %s logs.", user_id) return await self.logs.find(query, projection).to_list(None) + + async def find_log_entry(self, key: str) -> list: + query = {"key": key} + projection = {"messages": {"$slice": 5}} + logger.debug(f"Retrieving log ID {key}.") + + return await self.logs.find(query, projection).to_list(None) async def get_latest_user_logs(self, user_id: Union[str, int]): query = {"recipient.id": str(user_id), "guild_id": str(self.bot.guild_id), "open": False} From c68e2a6c24c2c901e1adec18bf8c35b8cd9ce85a Mon Sep 17 00:00:00 2001 From: Cordila <49218334+Cordila@users.noreply.github.com> Date: Fri, 9 Sep 2022 22:52:52 +0530 Subject: [PATCH 3/8] Formatting --- cogs/modmail.py | 3 +-- core/clients.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cogs/modmail.py b/cogs/modmail.py index df1cb81c26..b0c94d2726 100644 --- a/cogs/modmail.py +++ b/cogs/modmail.py @@ -1211,7 +1211,7 @@ async def logs_closed_by(self, ctx, *, user: User = None): session = EmbedPaginatorSession(ctx, *embeds) await session.run() - + @logs.command(name="id") @checks.has_permissions(PermissionLevel.SUPPORTER) async def logs_id(self, ctx, key: str): @@ -1236,7 +1236,6 @@ async def logs_id(self, ctx, key: str): session = EmbedPaginatorSession(ctx, *embeds) await session.run() - @logs.command(name="delete", aliases=["wipe"]) @checks.has_permissions(PermissionLevel.OWNER) async def logs_delete(self, ctx, key_or_link: str): diff --git a/core/clients.py b/core/clients.py index 0c25ca661d..7eb21bd7b3 100644 --- a/core/clients.py +++ b/core/clients.py @@ -355,7 +355,7 @@ async def validate_database_connection(self): async def get_user_logs(self, user_id: Union[str, int]) -> list: return NotImplemented - + async def find_log_entry(self, key: str) -> list: return NotImplemented @@ -531,7 +531,7 @@ async def get_user_logs(self, user_id: Union[str, int]) -> list: logger.debug("Retrieving user %s logs.", user_id) return await self.logs.find(query, projection).to_list(None) - + async def find_log_entry(self, key: str) -> list: query = {"key": key} projection = {"messages": {"$slice": 5}} From 53c65076545c03763870dc33b785c845dab288d9 Mon Sep 17 00:00:00 2001 From: Cordila <49218334+Cordila@users.noreply.github.com> Date: Tue, 14 Mar 2023 12:22:48 +0530 Subject: [PATCH 4/8] Change log id to log key, added id as an alias --- cogs/modmail.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cogs/modmail.py b/cogs/modmail.py index 531e9620de..47ba18c062 100644 --- a/cogs/modmail.py +++ b/cogs/modmail.py @@ -1212,11 +1212,11 @@ async def logs_closed_by(self, ctx, *, user: User = None): session = EmbedPaginatorSession(ctx, *embeds) await session.run() - @logs.command(name="id") + @logs.command(name="key", aliases=["id"]) @checks.has_permissions(PermissionLevel.SUPPORTER) - async def logs_id(self, ctx, key: str): + async def logs_key(self, ctx, key: str): """ - Get the log link for the specified log ID + Get the log link for the specified log key """ icon_url = ctx.author.avatar.url From 1502c5248b64b4a60326320e171208d16c2d1548 Mon Sep 17 00:00:00 2001 From: Cordila <49218334+Cordila@users.noreply.github.com> Date: Tue, 14 Mar 2023 12:48:40 +0530 Subject: [PATCH 5/8] Print the log even if it is closed and fix bug --- cogs/modmail.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cogs/modmail.py b/cogs/modmail.py index 47ba18c062..1f7f97f821 100644 --- a/cogs/modmail.py +++ b/cogs/modmail.py @@ -1222,14 +1222,14 @@ async def logs_key(self, ctx, key: str): logs = await self.bot.api.find_log_entry(key) - if not any(not log["open"] for log in logs): + if not logs: embed = discord.Embed( color=self.bot.error_color, description=f"Log entry `{key}` not found.", ) return await ctx.send(embed=embed) - logs = reversed(log for log in logs if not log["open"]) + logs = list(reversed(logs)) embeds = self.format_log_embeds(logs, avatar_url=icon_url) From 560a422d5e1210e15d9f32949841d5517a98cd51 Mon Sep 17 00:00:00 2001 From: Cordila <49218334+Cordila@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:29:17 +0530 Subject: [PATCH 6/8] Update modmail.py --- cogs/modmail.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/cogs/modmail.py b/cogs/modmail.py index 1f7f97f821..597068a3aa 100644 --- a/cogs/modmail.py +++ b/cogs/modmail.py @@ -1229,8 +1229,6 @@ async def logs_key(self, ctx, key: str): ) return await ctx.send(embed=embed) - logs = list(reversed(logs)) - embeds = self.format_log_embeds(logs, avatar_url=icon_url) session = EmbedPaginatorSession(ctx, *embeds) From e8068425ad3eec5921b2fd45379b908d5f370320 Mon Sep 17 00:00:00 2001 From: Taku <45324516+Taaku18@users.noreply.github.com> Date: Tue, 11 Jul 2023 03:21:10 -0700 Subject: [PATCH 7/8] Added a missing period --- cogs/modmail.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cogs/modmail.py b/cogs/modmail.py index 597068a3aa..2d386456e0 100644 --- a/cogs/modmail.py +++ b/cogs/modmail.py @@ -1216,7 +1216,7 @@ async def logs_closed_by(self, ctx, *, user: User = None): @checks.has_permissions(PermissionLevel.SUPPORTER) async def logs_key(self, ctx, key: str): """ - Get the log link for the specified log key + Get the log link for the specified log key. """ icon_url = ctx.author.avatar.url From 4a3db7c0d4c0874ce83a50e1e067cdfa31dfb5fa Mon Sep 17 00:00:00 2001 From: Taku <45324516+Taaku18@users.noreply.github.com> Date: Sat, 15 Jul 2023 04:40:10 -0700 Subject: [PATCH 8/8] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf75ef37d3..fad0639ae3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ however, insignificant breaking changes do not guarantee a major version bump, s ### Added - New .env config option: `REGISTRY_PLUGINS_ONLY`, restricts to only allow adding registry plugins. ([PR #3247](https://github.com/modmail-dev/modmail/pull/3247)) +- `?log key ` to retrieve the log link and view a preview using a log key. ([PR #3196](https://github.com/modmail-dev/Modmail/pull/3196)) ### Changed - Guild icons in embed footers and author urls now have a fixed size of 128. ([PR #3261](https://github.com/modmail-dev/modmail/pull/3261))