aboutsummaryrefslogtreecommitdiff
path: root/discord/client.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/client.py')
-rw-r--r--discord/client.py47
1 files changed, 33 insertions, 14 deletions
diff --git a/discord/client.py b/discord/client.py
index 14b3e338..f8ac3b84 100644
--- a/discord/client.py
+++ b/discord/client.py
@@ -27,7 +27,6 @@ DEALINGS IN THE SOFTWARE.
import asyncio
from collections import namedtuple
import logging
-import re
import signal
import sys
import traceback
@@ -37,7 +36,7 @@ import websockets
from .user import User, Profile
from .invite import Invite
-from .object import Object
+from .widget import Widget
from .guild import Guild
from .member import Member
from .errors import *
@@ -170,16 +169,6 @@ class Client:
def _handle_ready(self):
self._ready.set()
- def _resolve_invite(self, invite):
- 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
-
@property
def latency(self):
""":class:`float`: Measures latency between a HEARTBEAT and a HEARTBEAT_ACK in seconds.
@@ -991,7 +980,7 @@ class Client:
The invite from the URL/ID.
"""
- invite_id = self._resolve_invite(url)
+ invite_id = utils.resolve_invite(url)
data = await self.http.get_invite(invite_id, with_counts=with_counts)
return Invite.from_incomplete(state=self._connection, data=data)
@@ -1018,11 +1007,41 @@ class Client:
Revoking the invite failed.
"""
- invite_id = self._resolve_invite(invite)
+ invite_id = utils.resolve_invite(invite)
await self.http.delete_invite(invite_id)
# Miscellaneous stuff
+ async def fetch_widget(self, guild_id):
+ """|coro|
+
+ Gets a :class:`Widget` from a guild ID.
+
+ .. note::
+
+ The guild must have the widget enabled to get this information.
+
+ Parameters
+ -----------
+ guild_id: :class:`int`
+ The ID of the guild.
+
+ Raises
+ -------
+ Forbidden
+ The widget for this guild is disabled.
+ HTTPException
+ Retrieving the widget failed.
+
+ Returns
+ --------
+ :class:`Widget`
+ The guild's widget.
+ """
+ data = await self.http.get_widget(guild_id)
+
+ return Widget(state=self._connection, data=data)
+
async def application_info(self):
"""|coro|