Browse Source

Don't expose Client.messages

Not entirely sure why it was exposed in the first place. Most uses with
it essentially boiled down to mis-usage when they meant to use the
/messages endpoint (via Client.logs_from or Messageable.history) or
complaining about the partial data woes that came from it.
pull/582/head
Rapptz 8 years ago
parent
commit
a47ded6e49
  1. 13
      discord/client.py
  2. 14
      discord/state.py
  3. 2
      docs/migrating.rst

13
discord/client.py

@ -66,7 +66,6 @@ class Client:
A number of options can be passed to the :class:`Client`. A number of options can be passed to the :class:`Client`.
.. _deque: https://docs.python.org/3.4/library/collections.html#collections.deque
.. _event loop: https://docs.python.org/3/library/asyncio-eventloops.html .. _event loop: https://docs.python.org/3/library/asyncio-eventloops.html
.. _connector: http://aiohttp.readthedocs.org/en/stable/client_reference.html#connectors .. _connector: http://aiohttp.readthedocs.org/en/stable/client_reference.html#connectors
.. _ProxyConnector: http://aiohttp.readthedocs.org/en/stable/client_reference.html#proxyconnector .. _ProxyConnector: http://aiohttp.readthedocs.org/en/stable/client_reference.html#proxyconnector
@ -74,7 +73,7 @@ class Client:
Parameters Parameters
---------- ----------
max_messages : Optional[int] max_messages : Optional[int]
The maximum number of messages to store in :attr:`messages`. The maximum number of messages to store in the internal message cache.
This defaults to 5000. Passing in `None` or a value less than 100 This defaults to 5000. Passing in `None` or a value less than 100
will use the default instead of the passed in value. will use the default instead of the passed in value.
loop : Optional[event loop] loop : Optional[event loop]
@ -183,16 +182,6 @@ class Client:
"""List[:class:`abc.PrivateChannel`]: The private channels that the connected client is participating on.""" """List[:class:`abc.PrivateChannel`]: The private channels that the connected client is participating on."""
return self._connection.private_channels return self._connection.private_channels
@property
def messages(self):
"""A deque_ of :class:`Message` that the client has received from all
guilds and private messages.
The number of messages stored in this deque is controlled by the
``max_messages`` parameter.
"""
return self._connection.messages
@property @property
def voice_clients(self): def voice_clients(self):
"""List[:class:`VoiceClient`]: Represents a list of voice connections.""" """List[:class:`VoiceClient`]: Represents a list of voice connections."""

14
discord/state.py

@ -91,7 +91,7 @@ class ConnectionState:
self._private_channels = {} self._private_channels = {}
# extra dict to look up private channels by user id # extra dict to look up private channels by user id
self._private_channels_by_user = {} self._private_channels_by_user = {}
self.messages = deque(maxlen=self.max_messages) self._messages = deque(maxlen=self.max_messages)
def process_listeners(self, listener_type, argument, result): def process_listeners(self, listener_type, argument, result):
removed = [] removed = []
@ -209,7 +209,7 @@ class ConnectionState:
self._private_channels_by_user.pop(channel.recipient.id, None) self._private_channels_by_user.pop(channel.recipient.id, None)
def _get_message(self, msg_id): def _get_message(self, msg_id):
return utils.find(lambda m: m.id == msg_id, self.messages) return utils.find(lambda m: m.id == msg_id, self._messages)
def _add_guild_from_data(self, guild): def _add_guild_from_data(self, guild):
guild = Guild(data=guild, state=self) guild = Guild(data=guild, state=self)
@ -310,21 +310,21 @@ class ConnectionState:
channel = self.get_channel(int(data['channel_id'])) channel = self.get_channel(int(data['channel_id']))
message = Message(channel=channel, data=data, state=self) message = Message(channel=channel, data=data, state=self)
self.dispatch('message', message) self.dispatch('message', message)
self.messages.append(message) self._messages.append(message)
def parse_message_delete(self, data): def parse_message_delete(self, data):
message_id = int(data['id']) message_id = int(data['id'])
found = self._get_message(message_id) found = self._get_message(message_id)
if found is not None: if found is not None:
self.dispatch('message_delete', found) self.dispatch('message_delete', found)
self.messages.remove(found) self._messages.remove(found)
def parse_message_delete_bulk(self, data): def parse_message_delete_bulk(self, data):
message_ids = set(map(int, data.get('ids', []))) message_ids = set(map(int, data.get('ids', [])))
to_be_deleted = list(filter(lambda m: m.id in message_ids, self.messages)) to_be_deleted = list(filter(lambda m: m.id in message_ids, self._messages))
for msg in to_be_deleted: for msg in to_be_deleted:
self.dispatch('message_delete', msg) self.dispatch('message_delete', msg)
self.messages.remove(msg) self._messages.remove(msg)
def parse_message_update(self, data): def parse_message_update(self, data):
message = self._get_message(int(data['id'])) message = self._get_message(int(data['id']))
@ -630,7 +630,7 @@ class ConnectionState:
return return
# do a cleanup of the messages cache # do a cleanup of the messages cache
self.messages = deque((msg for msg in self.messages if msg.guild != guild), maxlen=self.max_messages) self._messages = deque((msg for msg in self._messages if msg.guild != guild), maxlen=self.max_messages)
self._remove_guild(guild) self._remove_guild(guild)
self.dispatch('guild_remove', guild) self.dispatch('guild_remove', guild)

2
docs/migrating.rst

@ -195,6 +195,8 @@ A list of these changes is enumerated below.
+---------------------------------------+------------------------------------------------------------------------------+ +---------------------------------------+------------------------------------------------------------------------------+
| ``Client.wait_until_login`` | Removed | | ``Client.wait_until_login`` | Removed |
+---------------------------------------+------------------------------------------------------------------------------+ +---------------------------------------+------------------------------------------------------------------------------+
| ``Client.messages`` | Removed |
+---------------------------------------+------------------------------------------------------------------------------+
| ``Client.wait_until_ready`` | No change | | ``Client.wait_until_ready`` | No change |
+---------------------------------------+------------------------------------------------------------------------------+ +---------------------------------------+------------------------------------------------------------------------------+

Loading…
Cancel
Save