diff options
Diffstat (limited to 'discord/utils.py')
| -rw-r--r-- | discord/utils.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/discord/utils.py b/discord/utils.py index dc63f1d3..96a26918 100644 --- a/discord/utils.py +++ b/discord/utils.py @@ -38,6 +38,7 @@ import re import warnings from .errors import InvalidArgument +from .object import Object DISCORD_EPOCH = 1420070400000 @@ -340,3 +341,28 @@ def _string_width(string, *, _IS_ASCII=_IS_ASCII): for char in string: width += 2 if func(char) in UNICODE_WIDE_CHAR_TYPE else 1 return width + +def resolve_invite(invite): + """ + Resolves an invite from a :class:`Invite`, URL or ID + + Parameters + ----------- + invite: Union[:class:`Invite`, :class:`Object`, :class:`str`] + The invite. + + Returns + -------- + :class:`str` + The invite code. + """ + from .invite import Invite # circular import + if isinstance(invite, Invite) or isinstance(invite, Object): + return invite.id + else: + rx = r'(?:https?\:\/\/)?discord(?:\.gg|app\.com\/invite)\/(.+)' + m = re.match(rx, invite) + if m: + return m.group(1) + return invite + |