From f6395aac499c2ce32e5472d7f3d0f6826fbaf273 Mon Sep 17 00:00:00 2001 From: Yee Jia Rong <28086837+fourjr@users.noreply.github.com> Date: Tue, 6 Sep 2022 23:01:09 +0800 Subject: [PATCH] use silent as typing literal, resolve #3179 --- cogs/modmail.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/cogs/modmail.py b/cogs/modmail.py index b071cfc8ff..0ca921139e 100644 --- a/cogs/modmail.py +++ b/cogs/modmail.py @@ -2,7 +2,7 @@ import re from datetime import datetime from itertools import zip_longest -from typing import Optional, Union +from typing import Optional, Union, List, Tuple, Literal from types import SimpleNamespace import discord @@ -1344,9 +1344,9 @@ async def selfcontact(self, ctx): async def contact( self, ctx, - users: commands.Greedy[Union[discord.Member, discord.User, discord.Role]], + users: commands.Greedy[Union[Literal["silent", "silently"], discord.Member, discord.User, discord.Role]], *, - category: Union[SimilarCategoryConverter, str] = None, + category: SimilarCategoryConverter = None, manual_trigger=True, ): """ @@ -1360,16 +1360,22 @@ async def contact( A maximum of 5 users are allowed. `options` can be `silent` or `silently`. """ - silent = False + silent = any(x in users for x in ("silent", "silently")) + if silent: + try: + users.remove("silent") + except ValueError: + pass + + try: + users.remove("silently") + except ValueError: + pass + + print(users, silent) if isinstance(category, str): category = category.split() - # just check the last element in the list - if category[-1].lower() in ("silent", "silently"): - silent = True - # remove the last element as we no longer need it - category.pop() - category = " ".join(category) if category: try: