Source code for curious.dataclasses.voice_state
# This file is part of curious.
#
# curious is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# curious is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with curious. If not, see <http://www.gnu.org/licenses/>.
"""
Wrappers for voice state objects.
.. currentmodule:: curious.dataclasses.voice_state
"""
from curious.dataclasses import channel as dt_channel, guild as dt_guild, member as dt_member
[docs]class VoiceState(object):
"""
Represents the voice state of a user.
"""
__slots__ = ("user_id", "guild_id", "channel_id", "_self_mute",
"_server_mute", "_self_deaf", "_server_deaf", "_bot")
def __init__(self, **kwargs) -> None:
self._bot = kwargs.get("client")
#: The ID of the user for this VoiceState.
self.user_id = int(kwargs.get("user_id", 0)) or None
#: The ID of the guild for this VoiceState.
self.guild_id = int(kwargs.get("guild_id", 0)) or None
#: The ID of the channel for this VoiceState.
self.channel_id = int(kwargs.get("channel_id", 0)) or None
# Internal state values.
self._self_mute = kwargs.get("self_mute", False)
self._server_mute = kwargs.get("mute", False)
self._self_deaf = kwargs.get("self_deaf", False)
self._server_deaf = kwargs.get("deaf", False)
@property
def guild(self) -> 'dt_guild.Guild':
"""
:return: The :class:`.Guild` associated, or None if the guild is uncached.
"""
return self._bot.guilds.get(self.guild_id)
@property
def channel(self) -> 'dt_channel.Channel':
"""
:return: The :class:`.Channel` associated, or None if the channel is uncached.
"""
return self.guild.channels.get(self.channel_id)
@property
def member(self) -> 'dt_member.Member':
"""
:return: The :class:`.Member` associated, or None.
"""
return self.guild.members.get(self.user_id)
@property
def muted(self) -> bool:
"""
:return: If this user is muted or not.
"""
return self._server_mute or self._self_mute
@property
def deafened(self) -> bool:
"""
:return: If this user is deafened or not.
"""
return self._server_deaf or self._self_deaf
def __repr__(self):
return "<VoiceState user={} deaf={} mute={} channel={}>".format(self.member.user,
self.deafened,
self.muted,
self.channel)
[docs] async def mute(self):
"""
Server mutes this member on the guild.
"""
return await self.guild.change_voice_state(self.member, mute=True)
[docs] async def unmute(self):
"""
Server unmutes this member on the guild.
"""
return await self.guild.change_voice_state(self.member, mute=False)
[docs] async def deafen(self):
"""
Server deafens this member on the guild.
"""
return await self.guild.change_voice_state(self.member, deaf=True)
[docs] async def undeafen(self):
"""
Server undeafens this member on the guild.
"""
return await self.guild.change_voice_state(self.member, deaf=False)