From 79a49f91458159564ae5a7696797829c6a848a5d Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sat, 24 Dec 2016 05:11:06 -0500 Subject: [PATCH] Absolute import some circular dependencies to appease Python 3.4. --- discord/abc.py | 5 +++++ discord/calls.py | 5 +++-- discord/channel.py | 24 +++++++++++++----------- discord/client.py | 21 +++++++++++---------- discord/embeds.py | 5 +++-- discord/emoji.py | 4 ++-- discord/gateway.py | 13 ++++++++----- discord/guild.py | 28 +++++++++++++++------------- discord/http.py | 8 +++++--- discord/member.py | 8 ++++---- discord/message.py | 31 ++++++++++++++++--------------- discord/object.py | 4 ++-- discord/state.py | 38 ++++++++++++++++++++------------------ discord/voice_client.py | 2 +- 14 files changed, 108 insertions(+), 88 deletions(-) diff --git a/discord/abc.py b/discord/abc.py index b52edb463..e609faf27 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -34,6 +34,11 @@ from .iterators import LogsFromIterator from .context_managers import Typing from .errors import ClientException, NoMoreMessages +import discord.message +import discord.iterators +import discord.context_managers +import discord.errors + class Snowflake(metaclass=abc.ABCMeta): __slots__ = () diff --git a/discord/calls.py b/discord/calls.py index 334f1d75e..d4ec4367a 100644 --- a/discord/calls.py +++ b/discord/calls.py @@ -24,8 +24,9 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from . import utils import datetime +import discord.utils + from .enums import GuildRegion, try_enum from .member import VoiceState @@ -47,7 +48,7 @@ class CallMessage: def __init__(self, message, **kwargs): self.message = message - self.ended_timestamp = utils.parse_time(kwargs.get('ended_timestamp')) + self.ended_timestamp = discord.utils.parse_time(kwargs.get('ended_timestamp')) self.participants = kwargs.get('participants') @property diff --git a/discord/channel.py b/discord/channel.py index b9141fe5f..78a06473b 100644 --- a/discord/channel.py +++ b/discord/channel.py @@ -23,7 +23,6 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from . import utils, abc from .permissions import Permissions, PermissionOverwrite from .enums import ChannelType, try_enum from collections import namedtuple @@ -32,6 +31,9 @@ from .role import Role from .user import User from .member import Member +import discord.utils +import discord.abc + import copy import asyncio @@ -103,7 +105,7 @@ class CommonGuildChannel(Hashable): their default values in the :attr:`Guild.roles` attribute.""" ret = [] for overwrite in filter(lambda o: o.type == 'role', self._overwrites): - role = utils.get(self.guild.roles, id=overwrite.id) + role = discord.utils.get(self.guild.roles, id=overwrite.id) if role is None: continue @@ -125,7 +127,7 @@ class CommonGuildChannel(Hashable): @property def created_at(self): """Returns the channel's creation time in UTC.""" - return utils.snowflake_time(self.id) + return discord.utils.snowflake_time(self.id) def overwrites_for(self, obj): """Returns the channel-specific overwrites for a member or a role. @@ -178,7 +180,7 @@ class CommonGuildChannel(Hashable): if ow.type == 'role': # accidentally quadratic - target = utils.find(lambda r: r.id == ow.id, self.server.roles) + target = discord.utils.find(lambda r: r.id == ow.id, self.server.roles) elif ow.type == 'member': target = self.server.get_member(ow.id) @@ -299,7 +301,7 @@ class CommonGuildChannel(Hashable): """ yield from self._state.http.delete_channel(self.id) -class TextChannel(abc.MessageChannel, CommonGuildChannel): +class TextChannel(discord.abc.MessageChannel, CommonGuildChannel): """Represents a Discord guild text channel. Supported Operations: @@ -479,7 +481,7 @@ class VoiceChannel(CommonGuildChannel): data = yield from self._state.http.edit_channel(self.id, **options) self._update(self.guild, data) -class DMChannel(abc.MessageChannel, Hashable): +class DMChannel(discord.abc.MessageChannel, Hashable): """Represents a Discord direct message channel. Supported Operations: @@ -523,7 +525,7 @@ class DMChannel(abc.MessageChannel, Hashable): @property def created_at(self): """Returns the direct message channel's creation time in UTC.""" - return utils.snowflake_time(self.id) + return discord.utils.snowflake_time(self.id) def permissions_for(self, user=None): """Handles permission resolution for a :class:`User`. @@ -554,7 +556,7 @@ class DMChannel(abc.MessageChannel, Hashable): base.manage_messages = False return base -class GroupChannel(abc.MessageChannel, Hashable): +class GroupChannel(discord.abc.MessageChannel, Hashable): """Represents a Discord group channel. Supported Operations: @@ -597,14 +599,14 @@ class GroupChannel(abc.MessageChannel, Hashable): self._update_group(data) def _update_group(self, data): - owner_id = utils._get_as_snowflake(data, 'owner_id') + owner_id = discord.utils._get_as_snowflake(data, 'owner_id') self.icon = data.get('icon') self.name = data.get('name') if owner_id == self.me.id: self.owner = self.me else: - self.owner = utils.find(lambda u: u.id == owner_id, self.recipients) + self.owner = discord.utils.find(lambda u: u.id == owner_id, self.recipients) def _get_destination(self): return self.id, None @@ -629,7 +631,7 @@ class GroupChannel(abc.MessageChannel, Hashable): @property def created_at(self): """Returns the channel's creation time in UTC.""" - return utils.snowflake_time(self.id) + return discord.utils.snowflake_time(self.id) def permissions_for(self, user): """Handles permission resolution for a :class:`User`. diff --git a/discord/client.py b/discord/client.py index 74bb941cf..0318a984e 100644 --- a/discord/client.py +++ b/discord/client.py @@ -24,20 +24,21 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from . import __version__ as library_version from .user import User from .invite import Invite from .object import Object from .errors import * -from .state import ConnectionState from .permissions import Permissions, PermissionOverwrite -from . import utils, compat from .enums import ChannelType, Status from .voice_client import VoiceClient from .gateway import * from .emoji import Emoji from .http import HTTPClient +import discord.utils +import discord.compat +import discord.state + import asyncio import aiohttp import websockets @@ -141,11 +142,11 @@ class Client: connector = options.pop('connector', None) self.http = HTTPClient(connector, loop=self.loop) - self.connection = ConnectionState(dispatch=self.dispatch, - chunker=self.request_offline_members, - syncer=self._syncer, - http=self.http, loop=self.loop, - **options) + self.connection = discord.state.ConnectionState(dispatch=self.dispatch, + chunker=self.request_offline_members, + syncer=self._syncer, + http=self.http, loop=self.loop, + **options) self._closed = asyncio.Event(loop=self.loop) self._is_logged_in = asyncio.Event(loop=self.loop) @@ -287,7 +288,7 @@ class Client: getattr(self, handler)(*args, **kwargs) if hasattr(self, method): - compat.create_task(self._run_event(method, *args, **kwargs), loop=self.loop) + discord.compat.create_task(self._run_event(method, *args, **kwargs), loop=self.loop) @asyncio.coroutine def on_error(self, event_method, *args, **kwargs): @@ -937,7 +938,7 @@ class Client: avatar = self.user.avatar else: if avatar_bytes is not None: - avatar = utils._bytes_to_base64_data(avatar_bytes) + avatar = discord.utils._bytes_to_base64_data(avatar_bytes) else: avatar = None diff --git a/discord/embeds.py b/discord/embeds.py index e47b814e5..cd36600e8 100644 --- a/discord/embeds.py +++ b/discord/embeds.py @@ -26,8 +26,9 @@ DEALINGS IN THE SOFTWARE. import datetime +import discord.utils + from .colour import Colour -from . import utils class _EmptyEmbed: def __bool__(self): @@ -128,7 +129,7 @@ class Embed: pass try: - self._timestamp = utils.parse_time(data['timestamp']) + self._timestamp = discord.utils.parse_time(data['timestamp']) except KeyError: pass diff --git a/discord/emoji.py b/discord/emoji.py index 55d0ab736..7b966c3d7 100644 --- a/discord/emoji.py +++ b/discord/emoji.py @@ -27,7 +27,7 @@ DEALINGS IN THE SOFTWARE. import asyncio from collections import namedtuple -from . import utils +import discord.utils from .mixins import Hashable PartialEmoji = namedtuple('PartialEmoji', 'id name') @@ -106,7 +106,7 @@ class Emoji(Hashable): @property def created_at(self): """Returns the emoji's creation time in UTC.""" - return utils.snowflake_time(self.id) + return discord.utils.snowflake_time(self.id) @property def url(self): diff --git a/discord/gateway.py b/discord/gateway.py index 169d6fb10..8d1f7040f 100644 --- a/discord/gateway.py +++ b/discord/gateway.py @@ -28,7 +28,10 @@ import sys import websockets import asyncio import aiohttp -from . import utils, compat + +import discord.utils +import discord.compat + from .enums import Status, try_enum from .game import Game from .errors import GatewayNotFound, ConnectionClosed, InvalidArgument @@ -70,7 +73,7 @@ class KeepAliveHandler(threading.Thread): data = self.get_payload() log.debug(self.msg.format(data)) coro = self.ws.send_as_json(data) - f = compat.run_coroutine_threadsafe(coro, loop=self.ws.loop) + f = discord.compat.run_coroutine_threadsafe(coro, loop=self.ws.loop) try: # block until sending is complete f.result() @@ -400,7 +403,7 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): @asyncio.coroutine def send_as_json(self, data): try: - yield from super().send(utils.to_json(data)) + yield from super().send(discord.utils.to_json(data)) except websockets.exceptions.ConnectionClosed as e: if not self._can_handle_close(e.code): raise ConnectionClosed(e) from e @@ -428,7 +431,7 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol): } } - sent = utils.to_json(payload) + sent = discord.utils.to_json(payload) log.debug('Sending "{}" to change status'.format(sent)) yield from self.send(sent) @@ -510,7 +513,7 @@ class DiscordVoiceWebSocket(websockets.client.WebSocketClientProtocol): @asyncio.coroutine def send_as_json(self, data): - yield from self.send(utils.to_json(data)) + yield from self.send(discord.utils.to_json(data)) @classmethod @asyncio.coroutine diff --git a/discord/guild.py b/discord/guild.py index c293b077b..0ffd8168d 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -27,7 +27,9 @@ DEALINGS IN THE SOFTWARE. import copy import asyncio -from . import utils + +import discord.utils + from .role import Role from .member import Member, VoiceState from .emoji import Emoji @@ -224,7 +226,7 @@ class Guild(Hashable): for mdata in guild.get('members', []): roles = [self.default_role] for role_id in mdata['roles']: - role = utils.find(lambda r: r.id == role_id, self.roles) + role = discord.utils.find(lambda r: r.id == role_id, self.roles) if role is not None: roles.append(role) @@ -235,8 +237,8 @@ class Guild(Hashable): self._sync(guild) self.large = None if member_count is None else self._member_count >= 250 - self.owner_id = utils._get_as_snowflake(guild, 'owner_id') - self.afk_channel = self.get_channel(utils._get_as_snowflake(guild, 'afk_channel_id')) + self.owner_id = discord.utils._get_as_snowflake(guild, 'owner_id') + self.afk_channel = self.get_channel(discord.utils._get_as_snowflake(guild, 'afk_channel_id')) for obj in guild.get('voice_states', []): self._update_voice_state(obj, int(obj['channel_id'])) @@ -293,15 +295,15 @@ class Guild(Hashable): """Returns a :class:`Member` with the given ID. If not found, returns None.""" return self._members.get(user_id) - @utils.cached_slot_property('_default_role') + @discord.utils.cached_slot_property('_default_role') def default_role(self): """Gets the @everyone role that all members have by default.""" - return utils.find(lambda r: r.is_everyone, self.roles) + return discord.utils.find(lambda r: r.is_everyone, self.roles) - @utils.cached_slot_property('_default_channel') + @discord.utils.cached_slot_property('_default_channel') def default_channel(self): """Gets the default :class:`Channel` for the guild.""" - return utils.find(lambda c: c.is_default, self.channels) + return discord.utils.find(lambda c: c.is_default, self.channels) @property def owner(self): @@ -330,7 +332,7 @@ class Guild(Hashable): @property def created_at(self): """Returns the guild's creation time in UTC.""" - return utils.snowflake_time(self.id) + return discord.utils.snowflake_time(self.id) @property def role_hierarchy(self): @@ -378,14 +380,14 @@ class Guild(Hashable): # do the actual lookup and return if found # if it isn't found then we'll do a full name lookup below. - result = utils.get(members, name=name[:-5], discriminator=potential_discriminator) + result = discord.utils.get(members, name=name[:-5], discriminator=potential_discriminator) if result is not None: return result def pred(m): return m.nick == name or m.name == name - return utils.find(pred, members) + return discord.utils.find(pred, members) @asyncio.coroutine @@ -469,7 +471,7 @@ class Guild(Hashable): icon = self.icon else: if icon_bytes is not None: - icon = utils._bytes_to_base64_data(icon_bytes) + icon = discord.utils._bytes_to_base64_data(icon_bytes) else: icon = None @@ -659,7 +661,7 @@ class Guild(Hashable): An error occurred creating an emoji. """ - img = utils._bytes_to_base64_data(image) + img = discord.utils._bytes_to_base64_data(image) data = yield from self._state.http.create_custom_emoji(self.id, name, img) return self._state.store_emoji(self, data) diff --git a/discord/http.py b/discord/http.py index 2a9798ac1..2eda3c8a7 100644 --- a/discord/http.py +++ b/discord/http.py @@ -36,7 +36,9 @@ from random import randint as random_integer log = logging.getLogger(__name__) from .errors import HTTPException, Forbidden, NotFound, LoginFailure, GatewayNotFound -from . import utils, __version__ +from . import __version__ + +import discord.utils @asyncio.coroutine def json_or_text(response): @@ -97,7 +99,7 @@ class HTTPClient: # some checking if it's a JSON request if 'json' in kwargs: headers['Content-Type'] = 'application/json' - kwargs['data'] = utils.to_json(kwargs.pop('json')) + kwargs['data'] = discord.utils.to_json(kwargs.pop('json')) kwargs['headers'] = headers with (yield from lock): @@ -244,7 +246,7 @@ class HTTPClient: if embed: payload['embed'] = embed - form.add_field('payload_json', utils.to_json(payload)) + form.add_field('payload_json', discord.utils.to_json(payload)) form.add_field('file', buffer, filename=filename, content_type='application/octet-stream') return self.post(url, data=form, bucket='messages:' + str(guild_id)) diff --git a/discord/member.py b/discord/member.py index 964c17df3..99412a68a 100644 --- a/discord/member.py +++ b/discord/member.py @@ -26,10 +26,10 @@ DEALINGS IN THE SOFTWARE. import asyncio +import discord.utils from .user import User from .game import Game from .permissions import Permissions -from . import utils from .enums import Status, ChannelType, try_enum from .colour import Colour @@ -143,7 +143,7 @@ class Member: def __init__(self, *, data, guild, state): self._state = state self._user = state.store_user(data['user']) - self.joined_at = utils.parse_time(data.get('joined_at')) + self.joined_at = discord.utils.parse_time(data.get('joined_at')) self.roles = data.get('roles', []) self.status = Status.offline game = data.get('game', {}) @@ -239,7 +239,7 @@ class Member: return True for role in message.role_mentions: - has_role = utils.get(self.roles, id=role.id) is not None + has_role = discord.utils.get(self.roles, id=role.id) is not None if has_role: return True @@ -439,7 +439,7 @@ class Member: Adding roles failed. """ - new_roles = utils._unique(r for s in (self.roles[1:], roles) for r in s) + new_roles = discord.utils._unique(r for s in (self.roles[1:], roles) for r in s) yield from self.edit(roles=new_roles) @asyncio.coroutine diff --git a/discord/message.py b/discord/message.py index cbe794add..65ccffaa0 100644 --- a/discord/message.py +++ b/discord/message.py @@ -27,10 +27,11 @@ DEALINGS IN THE SOFTWARE. import asyncio import re +import discord.utils +import discord.abc from .user import User from .reaction import Reaction from .emoji import Emoji -from . import utils, abc from .object import Object from .calls import CallMessage from .enums import MessageType, try_enum @@ -132,7 +133,7 @@ class Message: def _add_reaction(self, data): emoji = self._state.reaction_emoji(data['emoji']) - reaction = utils.find(lambda r: r.emoji == emoji, self.reactions) + reaction = discord.utils.find(lambda r: r.emoji == emoji, self.reactions) is_me = data['me'] = int(data['user_id']) == self._state.self_id if reaction is None: @@ -147,7 +148,7 @@ class Message: def _remove_reaction(self, data): emoji = self._state.reaction_emoji(data['emoji']) - reaction = utils.find(lambda r: r.emoji == emoji, self.reactions) + reaction = discord.utils.find(lambda r: r.emoji == emoji, self.reactions) if reaction is None: # already removed? @@ -173,7 +174,7 @@ class Message: except KeyError: continue - self._try_patch(data, 'edited_timestamp', utils.parse_time) + self._try_patch(data, 'edited_timestamp', discord.utils.parse_time) self._try_patch(data, 'author', self._state.store_user) self._try_patch(data, 'pinned', bool) self._try_patch(data, 'mention_everyone', bool) @@ -207,7 +208,7 @@ class Message: self.role_mentions = [] if self.guild is not None: for role_id in role_mentions: - role = utils.get(self.guild.roles, id=role_id) + role = discord.utils.get(self.guild.roles, id=role_id) if role is not None: self.role_mentions.append(role) @@ -224,7 +225,7 @@ class Message: if uid == self.author.id: participants.append(self.author) else: - user = utils.find(lambda u: u.id == uid, self.mentions) + user = discord.utils.find(lambda u: u.id == uid, self.mentions) if user is not None: participants.append(user) @@ -236,7 +237,7 @@ class Message: """Optional[:class:`Guild`]: The guild that the message belongs to, if applicable.""" return getattr(self.channel, 'guild', None) - @utils.cached_slot_property('_cs_raw_mentions') + @discord.utils.cached_slot_property('_cs_raw_mentions') def raw_mentions(self): """A property that returns an array of user IDs matched with the syntax of <@user_id> in the message content. @@ -246,28 +247,28 @@ class Message: """ return [int(x) for x in re.findall(r'<@!?([0-9]+)>', self.content)] - @utils.cached_slot_property('_cs_raw_channel_mentions') + @discord.utils.cached_slot_property('_cs_raw_channel_mentions') def raw_channel_mentions(self): """A property that returns an array of channel IDs matched with the syntax of <#channel_id> in the message content. """ return [int(x) for x in re.findall(r'<#([0-9]+)>', self.content)] - @utils.cached_slot_property('_cs_raw_role_mentions') + @discord.utils.cached_slot_property('_cs_raw_role_mentions') def raw_role_mentions(self): """A property that returns an array of role IDs matched with the syntax of <@&role_id> in the message content. """ return [int(x) for x in re.findall(r'<@&([0-9]+)>', self.content)] - @utils.cached_slot_property('_cs_channel_mentions') + @discord.utils.cached_slot_property('_cs_channel_mentions') def channel_mentions(self): if self.guild is None: return [] it = filter(None, map(lambda m: self.guild.get_channel(m), self.raw_channel_mentions)) - return utils._unique(it) + return discord.utils._unique(it) - @utils.cached_slot_property('_cs_clean_content') + @discord.utils.cached_slot_property('_cs_clean_content') def clean_content(self): """A property that returns the content in a "cleaned up" manner. This basically means that mentions are transformed @@ -332,7 +333,7 @@ class Message: self.channel.is_private = True return - if isinstance(self.channel, abc.GuildChannel): + if isinstance(self.channel, discord.abc.GuildChannel): self.guild = self.channel.guild found = self.guild.get_member(self.author.id) if found is not None: @@ -341,9 +342,9 @@ class Message: @property def created_at(self): """Returns the message's creation time in UTC.""" - return utils.snowflake_time(self.id) + return discord.utils.snowflake_time(self.id) - @utils.cached_slot_property('_cs_system_content') + @discord.utils.cached_slot_property('_cs_system_content') def system_content(self): """A property that returns the content that is rendered regardless of the :attr:`Message.type`. diff --git a/discord/object.py b/discord/object.py index ad201d040..6398ac8e3 100644 --- a/discord/object.py +++ b/discord/object.py @@ -23,7 +23,7 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from . import utils +import discord.utils class Object: """Represents a generic Discord object. @@ -51,4 +51,4 @@ class Object: @property def created_at(self): """Returns the snowflake's creation time in UTC.""" - return utils.snowflake_time(self.id) + return discord.utils.snowflake_time(self.id) diff --git a/discord/state.py b/discord/state.py index 222e54cad..e9b5a4854 100644 --- a/discord/state.py +++ b/discord/state.py @@ -33,10 +33,12 @@ from .message import Message from .channel import * from .member import Member from .role import Role -from . import utils, compat from .enums import Status, ChannelType, try_enum from .calls import GroupCall +import discord.utils +import discord.compat + from collections import deque, namedtuple import copy, enum, math import datetime @@ -180,7 +182,7 @@ class ConnectionState: self._private_channels_by_user.pop(channel.recipient.id, None) def _get_message(self, msg_id): - return utils.find(lambda m: m.id == msg_id, self.messages) + return discord.utils.find(lambda m: m.id == msg_id, self.messages) def _add_guild_from_data(self, guild): guild = Guild(data=guild, state=self.ctx) @@ -251,7 +253,7 @@ class ConnectionState: factory, _ = _channel_factory(pm['type']) self._add_private_channel(factory(me=self.user, data=pm, state=self.ctx)) - compat.create_task(self._delay_ready(), loop=self.loop) + discord.compat.create_task(self._delay_ready(), loop=self.loop) def parse_resumed(self, data): self.dispatch('resumed') @@ -317,7 +319,7 @@ class ConnectionState: self.dispatch('reaction_remove', reaction, user) def parse_presence_update(self, data): - guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) + guild = self._get_guild(discord.utils._get_as_snowflake(data, 'guild_id')) if guild is None: return @@ -342,7 +344,7 @@ class ConnectionState: self.user = User(state=self.ctx, data=data) def parse_channel_delete(self, data): - guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) + guild = self._get_guild(discord.utils._get_as_snowflake(data, 'guild_id')) channel_id = int(data['id']) if guild is not None: channel = guild.get_channel(channel_id) @@ -365,7 +367,7 @@ class ConnectionState: self.dispatch('channel_update', old_channel, channel) return - guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) + guild = self._get_guild(discord.utils._get_as_snowflake(data, 'guild_id')) if guild is not None: channel = guild.get_channel(channel_id) if channel is not None: @@ -380,7 +382,7 @@ class ConnectionState: channel = factory(me=self.user, data=data, state=self.ctx) self._add_private_channel(channel) else: - guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) + guild = self._get_guild(discord.utils._get_as_snowflake(data, 'guild_id')) if guild is not None: channel = factory(guild=guild, state=self.ctx, data=data) guild._add_channel(channel) @@ -406,7 +408,7 @@ class ConnectionState: def _make_member(self, guild, data): roles = [guild.default_role] for roleid in data.get('roles', []): - role = utils.get(guild.roles, id=roleid) + role = discord.utils.get(guild.roles, id=roleid) if role is not None: roles.append(role) @@ -514,7 +516,7 @@ class ConnectionState: # since we're not waiting for 'useful' READY we'll just # do the chunk request here - compat.create_task(self._chunk_and_dispatch(guild, unavailable), loop=self.loop) + discord.compat.create_task(self._chunk_and_dispatch(guild, unavailable), loop=self.loop) return # Dispatch available if newly available @@ -561,7 +563,7 @@ class ConnectionState: guild = self._get_guild(int(data['guild_id'])) if guild is not None: user_id = data.get('user', {}).get('id') - member = utils.get(guild.members, id=user_id) + member = discord.utils.get(guild.members, id=user_id) if member is not None: self.dispatch('member_ban', member) @@ -583,7 +585,7 @@ class ConnectionState: guild = self._get_guild(int(data['guild_id'])) if guild is not None: role_id = int(data['role_id']) - role = utils.find(lambda r: r.id == role_id, guild.roles) + role = discord.utils.find(lambda r: r.id == role_id, guild.roles) try: guild._remove_role(role) except ValueError: @@ -596,7 +598,7 @@ class ConnectionState: if guild is not None: role_data = data['role'] role_id = int(role_data['id']) - role = utils.find(lambda r: r.id == role_id, guild.roles) + role = discord.utils.find(lambda r: r.id == role_id, guild.roles) if role is not None: old_role = copy.copy(role) role._update(role_data) @@ -615,8 +617,8 @@ class ConnectionState: self.process_listeners(ListenerType.chunk, guild, len(members)) def parse_voice_state_update(self, data): - guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) - channel_id = utils._get_as_snowflake(data, 'channel_id') + guild = self._get_guild(discord.utils._get_as_snowflake(data, 'guild_id')) + channel_id = discord.utils._get_as_snowflake(data, 'channel_id') if guild is not None: if int(data['user_id']) == self.user.id: voice = self._get_voice_client(guild.id) @@ -636,13 +638,13 @@ class ConnectionState: channel = self.get_channel(int(data['channel_id'])) if channel is not None: member = None - user_id = utils._get_as_snowflake(data, 'user_id') + user_id = discord.utils._get_as_snowflake(data, 'user_id') if isinstance(channel, DMChannel): member = channel.recipient elif isinstance(channel, TextChannel): member = channel.guild.get_member(user_id) elif isinstance(channel, GroupChannel): - member = utils.find(lambda x: x.id == user_id, channel.recipients) + member = discord.utils.find(lambda x: x.id == user_id, channel.recipients) if member is not None: timestamp = datetime.datetime.utcfromtimestamp(data.get('timestamp')) @@ -673,12 +675,12 @@ class ConnectionState: elif isinstance(channel, TextChannel): return channel.guild.get_member(user_id) elif isinstance(channel, GroupChannel): - return utils.find(lambda m: m.id == user_id, channel.recipients) + return discord.utils.find(lambda m: m.id == user_id, channel.recipients) else: return None def _get_reaction_emoji(self, data): - emoji_id = utils._get_as_snowflake(data, 'id') + emoji_id = discord.utils._get_as_snowflake(data, 'id') if not emoji_id: return data['name'] diff --git a/discord/voice_client.py b/discord/voice_client.py index b9e6c36f4..168ff0900 100644 --- a/discord/voice_client.py +++ b/discord/voice_client.py @@ -61,7 +61,7 @@ try: except ImportError: has_nacl = False -from . import utils, opus +from . import opus from .gateway import * from .errors import ClientException, InvalidArgument, ConnectionClosed