mirror of
https://github.com/nikdoof/mumblepy.git
synced 2025-12-15 15:22:21 +00:00
199 lines
6.1 KiB
Python
199 lines
6.1 KiB
Python
class User(object):
|
|
def __init__(self, server, user):
|
|
self.__server = server
|
|
self.__user = user
|
|
if self.__user.userid:
|
|
self.__registration = self.__server.get_registration(self.__user.userid)
|
|
|
|
@property
|
|
def session(self):
|
|
"""Return the session ID of the user."""
|
|
return self.__user.session
|
|
|
|
@property
|
|
def id(self):
|
|
"""Return the user ID of the user, if they are registered."""
|
|
return self.__user.userid
|
|
|
|
@property
|
|
def muted(self):
|
|
"""Indicates if the user is currently muted."""
|
|
return bool(self.__user.mute)
|
|
|
|
@property
|
|
def deafened(self):
|
|
"""Indiciates if the user is currently deafened"""
|
|
return bool(self.__user.deaf)
|
|
|
|
@property
|
|
def suppress(self):
|
|
"""Indiciates if the user has been suppressed by the server due to lack of permissions"""
|
|
return bool(self.__user.suppress)
|
|
|
|
@property
|
|
def priority_speaker(self):
|
|
"""Indiciates if the user is currently a Priority Speaker"""
|
|
return bool(self.__user.prioritySpeaker)
|
|
|
|
@property
|
|
def self_muted(self):
|
|
"""Indiciates if the user has self muted."""
|
|
return bool(self.__user.selfMute)
|
|
|
|
@property
|
|
def self_deafened(self):
|
|
"""Indiciates if the user is self-deafened."""
|
|
return bool(self.__user.selfDeaf)
|
|
|
|
@property
|
|
def channel(self):
|
|
"""Returns the ``Channel`` object for the user's current channel"""
|
|
return self.__server.get_channel(self.__user.channel)
|
|
|
|
@property
|
|
def name(self):
|
|
"""The user's display name"""
|
|
return self.__user.name
|
|
|
|
@property
|
|
def online_seconds(self):
|
|
"""Returns the number of seconds the user has been connected to the server."""
|
|
return self.__user.onlinesecs
|
|
|
|
@property
|
|
def bytes_per_second(self):
|
|
"""Returns the current bps speed of the user's connection to Mumble."""
|
|
return self.__user.bytespersec
|
|
|
|
@property
|
|
def client_version(self):
|
|
"""Returns the version of the user's Mumble client."""
|
|
return self.__user.osversion
|
|
|
|
@property
|
|
def client_release(self):
|
|
"""Returns the release of the user's Mumble client."""
|
|
return self.__user.release
|
|
|
|
@property
|
|
def plugin_identity(self):
|
|
"""If a plugin is active for the user, this returns the plugin's identity"""
|
|
return self.__user.identity
|
|
|
|
@property
|
|
def os(self):
|
|
"""The user's current operating system"""
|
|
return self.__user.os
|
|
|
|
@property
|
|
def os_version(self):
|
|
"""The user's operating system release/version"""
|
|
return self.__user.osversion
|
|
|
|
@property
|
|
def plugin_context(self):
|
|
"""If a plugin is currently active for the user, this returns their context"""
|
|
return self.__user.context
|
|
|
|
@property
|
|
def comment(self):
|
|
"""Returns the user's set comment."""
|
|
return self.__user.comment
|
|
|
|
@property
|
|
def ip_address(self):
|
|
"""Returns a tuple of the user's IP address in IPv6 format"""
|
|
return self.__user.address
|
|
|
|
@property
|
|
def tcp_only(self):
|
|
"""Indiciates if the user is connected via a TCP only connection."""
|
|
return bool(self.__user.tcponly)
|
|
|
|
@property
|
|
def idle_seconds(self):
|
|
"""Returns the number of seconds the user has been idle."""
|
|
return self.__user.idlesecs
|
|
|
|
@property
|
|
def registered(self):
|
|
"""Indiciates if the user is registered"""
|
|
return self.__user.userid > 0
|
|
|
|
@property
|
|
def email(self):
|
|
"""If the user is registered, return the user's email address"""
|
|
if self.__user.userid:
|
|
return self.__registration.UserEmail
|
|
|
|
def update(self, **kwargs):
|
|
"""Update a value of the user's state.kwargs
|
|
|
|
Generally its advised to use one of the other functions (mute/deafen) to change the user's state, unless
|
|
its isn't covered by the class' API.
|
|
"""
|
|
for key, value in kwargs.items():
|
|
setattr(self.__user, key, value)
|
|
self.__server.set_user_state(self.__user)
|
|
|
|
def send_message(self, text):
|
|
"""Send a message to the user via Mumble's chat feature"""
|
|
return self.__server.send_user_message(self.__user.session, text)
|
|
|
|
def mute(self):
|
|
"""Mute the user."""
|
|
return self.update(mute=1)
|
|
|
|
def deafen(self):
|
|
"""Deafen the user."""
|
|
return self.update(deaf=1)
|
|
|
|
def unmute(self):
|
|
"""Unmute the user."""
|
|
return self.update(mute=0)
|
|
|
|
def undeafen(self):
|
|
"""Undeafen the user."""
|
|
return self.update(deaf=0)
|
|
|
|
def priority_speaker(self):
|
|
"""Enable priority speaker for the user."""
|
|
return self.update(prioritySpeaker=1)
|
|
|
|
def remove_priority_speaker(self):
|
|
"""Remove priority speaker from the user."""
|
|
return self.update(prioritySpeaker=0)
|
|
|
|
def move(self, channel):
|
|
"""Move the user to the specified channel."""
|
|
if isinstance(channel, int):
|
|
return self.update(channel=channel)
|
|
return self.update(channel=channel.id)
|
|
|
|
def kick(self, reason=''):
|
|
"""Kick the user from the server"""
|
|
return self.__server.kick_user(self.__user.session, reason)
|
|
|
|
def ban(self, reason='', bits=128, duration=360):
|
|
"""Ban the user from the server"""
|
|
return self.__server.add_ban(self.__user.address, reason, bits, duration)
|
|
|
|
def serialize(self):
|
|
"""Returns the user's state in a standard ``dict``"""
|
|
return {
|
|
'session': self.__user.session,
|
|
'id': self.__user.userid,
|
|
'priority_speaker': self.__user.prioritySpeaker,
|
|
'mute': self.__user.mute,
|
|
'deaf': self.__user.deaf,
|
|
'suppress': self.__user.suppress,
|
|
'channel': self.__user.channel,
|
|
'name': self.__user.name,
|
|
'online_secs': self.__user.onlinesecs,
|
|
'comment': self.__user.comment,
|
|
'self_mute': self.__user.selfMute,
|
|
'self_deaf': self.__user.selfDeaf,
|
|
'idle_secs': self.__user.idlesecs,
|
|
'ip': '.'.join(map(unicode, self.__user.address[-4:])),
|
|
'os': self.__user.osversion
|
|
} |