mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
All update related events now pass in the previous state.
This commit is contained in:
parent
78e95ef755
commit
49d78c69c7
@ -30,6 +30,7 @@ from .member import Member
|
|||||||
from .channel import Channel
|
from .channel import Channel
|
||||||
from .enums import ServerRegion, Status
|
from .enums import ServerRegion, Status
|
||||||
from .mixins import Hashable
|
from .mixins import Hashable
|
||||||
|
import copy
|
||||||
|
|
||||||
class Server(Hashable):
|
class Server(Hashable):
|
||||||
"""Represents a Discord server.
|
"""Represents a Discord server.
|
||||||
@ -94,11 +95,12 @@ class Server(Hashable):
|
|||||||
def _update_voice_state(self, data):
|
def _update_voice_state(self, data):
|
||||||
user_id = data.get('user_id')
|
user_id = data.get('user_id')
|
||||||
member = utils.find(lambda m: m.id == user_id, self.members)
|
member = utils.find(lambda m: m.id == user_id, self.members)
|
||||||
|
before = copy.copy(member)
|
||||||
if member is not None:
|
if member is not None:
|
||||||
ch_id = data.get('channel_id')
|
ch_id = data.get('channel_id')
|
||||||
channel = utils.find(lambda c: c.id == ch_id, self.channels)
|
channel = utils.find(lambda c: c.id == ch_id, self.channels)
|
||||||
member.update_voice_state(voice_channel=channel, **data)
|
member.update_voice_state(voice_channel=channel, **data)
|
||||||
return member
|
return before, member
|
||||||
|
|
||||||
def _from_data(self, guild):
|
def _from_data(self, guild):
|
||||||
self.name = guild.get('name')
|
self.name = guild.get('name')
|
||||||
|
@ -148,8 +148,10 @@ class ConnectionState:
|
|||||||
if server is not None:
|
if server is not None:
|
||||||
channel_id = data.get('id')
|
channel_id = data.get('id')
|
||||||
channel = utils.find(lambda c: c.id == channel_id, server.channels)
|
channel = utils.find(lambda c: c.id == channel_id, server.channels)
|
||||||
channel.update(server=server, **data)
|
if channel is not None:
|
||||||
self.dispatch('channel_update', channel)
|
old_channel = copy.copy(channel)
|
||||||
|
channel.update(server=server, **data)
|
||||||
|
self.dispatch('channel_update', old_channel, channel)
|
||||||
|
|
||||||
def parse_channel_create(self, data):
|
def parse_channel_create(self, data):
|
||||||
is_private = data.get('is_private', False)
|
is_private = data.get('is_private', False)
|
||||||
@ -275,14 +277,16 @@ class ConnectionState:
|
|||||||
if server is not None:
|
if server is not None:
|
||||||
role_id = data['role']['id']
|
role_id = data['role']['id']
|
||||||
role = utils.find(lambda r: r.id == role_id, server.roles)
|
role = utils.find(lambda r: r.id == role_id, server.roles)
|
||||||
role.update(**data['role'])
|
if role is not None:
|
||||||
self.dispatch('server_role_update', role)
|
old_role = copy.copy(role)
|
||||||
|
role.update(**data['role'])
|
||||||
|
self.dispatch('server_role_update', old_role, role)
|
||||||
|
|
||||||
def parse_voice_state_update(self, data):
|
def parse_voice_state_update(self, data):
|
||||||
server = self._get_server(data.get('guild_id'))
|
server = self._get_server(data.get('guild_id'))
|
||||||
if server is not None:
|
if server is not None:
|
||||||
updated_member = server._update_voice_state(data)
|
updated_members = server._update_voice_state(data)
|
||||||
self.dispatch('voice_state_update', updated_member)
|
self.dispatch('voice_state_update', *updated_members)
|
||||||
|
|
||||||
def parse_typing_start(self, data):
|
def parse_typing_start(self, data):
|
||||||
channel = self.get_channel(data.get('channel_id'))
|
channel = self.get_channel(data.get('channel_id'))
|
||||||
|
16
docs/api.rst
16
docs/api.rst
@ -226,11 +226,12 @@ to handle it, which defaults to print a traceback and ignore the exception.
|
|||||||
|
|
||||||
:param channel: The :class:`Channel` that got added or deleted.
|
:param channel: The :class:`Channel` that got added or deleted.
|
||||||
|
|
||||||
.. function:: on_channel_update(channel)
|
.. function:: on_channel_update(before, after)
|
||||||
|
|
||||||
Called whenever a channel is updated. e.g. changed name, topic, permissions.
|
Called whenever a channel is updated. e.g. changed name, topic, permissions.
|
||||||
|
|
||||||
:param channel: The :class:`Channel` that got updated.
|
:param before: The :class:`Channel` that got updated with the old info.
|
||||||
|
:param after: The :class:`Channel` that got updated with the updated info.
|
||||||
|
|
||||||
.. function:: on_member_join(member)
|
.. function:: on_member_join(member)
|
||||||
on_member_remove(member)
|
on_member_remove(member)
|
||||||
@ -296,11 +297,12 @@ to handle it, which defaults to print a traceback and ignore the exception.
|
|||||||
:param server: The :class:`Server` that was created or deleted.
|
:param server: The :class:`Server` that was created or deleted.
|
||||||
:param role: The :class:`Role` that was created or deleted.
|
:param role: The :class:`Role` that was created or deleted.
|
||||||
|
|
||||||
.. function:: on_server_role_update(role)
|
.. function:: on_server_role_update(before, after)
|
||||||
|
|
||||||
Called when a :class:`Role` is changed server-wide.
|
Called when a :class:`Role` is changed server-wide.
|
||||||
|
|
||||||
:param role: The :class:`Role` that was updated.
|
:param before: The :class:`Role` that updated with the old info.
|
||||||
|
:param after: The :class:`Role` that updated with the updated info
|
||||||
|
|
||||||
.. function:: on_server_available(server)
|
.. function:: on_server_available(server)
|
||||||
on_server_unavailable(server)
|
on_server_unavailable(server)
|
||||||
@ -310,7 +312,7 @@ to handle it, which defaults to print a traceback and ignore the exception.
|
|||||||
|
|
||||||
:param server: The :class:`Server` that has changed availability.
|
:param server: The :class:`Server` that has changed availability.
|
||||||
|
|
||||||
.. function:: on_voice_state_update(member)
|
.. function:: on_voice_state_update(before, after)
|
||||||
|
|
||||||
Called when a :class:`Member` changes their voice state.
|
Called when a :class:`Member` changes their voice state.
|
||||||
|
|
||||||
@ -321,7 +323,8 @@ to handle it, which defaults to print a traceback and ignore the exception.
|
|||||||
- A member is muted or deafened by their own accord.
|
- A member is muted or deafened by their own accord.
|
||||||
- A member is muted or deafened by a server administrator.
|
- A member is muted or deafened by a server administrator.
|
||||||
|
|
||||||
:param member: The :class:`Member` whose voice state changed.
|
:param before: The :class:`Member` whose voice state changed prior to the changes.
|
||||||
|
:param after: The :class:`Member` whose voice state changed after the changes.
|
||||||
|
|
||||||
.. function:: on_typing(channel, user, when)
|
.. function:: on_typing(channel, user, when)
|
||||||
|
|
||||||
@ -341,6 +344,7 @@ Utility Functions
|
|||||||
|
|
||||||
.. autofunction:: discord.utils.find
|
.. autofunction:: discord.utils.find
|
||||||
|
|
||||||
|
.. autofunction:: discord.utils.get
|
||||||
|
|
||||||
Enumerators
|
Enumerators
|
||||||
------------
|
------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user