diff --git a/discord/channel.py b/discord/channel.py index 74d740016..ee276f58b 100644 --- a/discord/channel.py +++ b/discord/channel.py @@ -56,10 +56,15 @@ class Channel(object): An array of :class:`Roles` that have been overridden from their default values in the :attr:`Server.roles` attribute. + .. attribute:: voice_members + + An array of :class:`Members` that are currently inside this voice channel. + If :attr:`type` is not ``'voice'`` then this is always an empty array. """ def __init__(self, **kwargs): self.update(**kwargs) + self.voice_members = [] def update(self, **kwargs): self.name = kwargs.get('name') diff --git a/discord/server.py b/discord/server.py index 0e596d44e..62668bca4 100644 --- a/discord/server.py +++ b/discord/server.py @@ -89,8 +89,17 @@ class Member(User): self.is_afk = kwargs.get('suppress', False) self.mute = kwargs.get('mute', False) self.deaf = kwargs.get('deaf', False) + old_channel = getattr(self, 'voice_channel', None) self.voice_channel = kwargs.get('voice_channel') + if old_channel is None and self.voice_channel is not None: + # we joined a channel + self.voice_channel.voice_members.append(self) + elif old_channel is not None and self.voice_channel is None: + # we left a channel + old_channel.voice_members.remove(self) + + class Server(object): """Represents a Discord server.