Added clientlist command to return a dict of clients keyed by clid

This commit is contained in:
2011-06-07 09:38:10 +01:00
parent 0621469930
commit b1006c6494
2 changed files with 20 additions and 3 deletions

View File

@@ -20,9 +20,9 @@ server = TS3Server('127.0.0.1', 10011, 1)
server.login('serveradmin', 'supersecretpassword')
while True:
resp = server.send_command('clientlist')
clientlist = server.clientlist()
for client in resp.data:
for client in clientlist.values():
if client['client_database_id'] in moveids and not int(client['cid']) == destination:
print "Found ID %s: %s" (client['client_database_id'], client['client_nickname'])
if server.send_client('clientmove', keys={'clid': client['clid'], 'cid': channel}).is_successful:

View File

@@ -330,6 +330,23 @@ class TS3Server(TS3Proto):
response = self.send_command('use', keys={'sid': id})
return response.is_successful
def clientlist(self):
"""
Returns a clientlist of the current connected server/vhost
"""
response = self.send_command('clientlist')
if response.is_successful:
clientlist = {}
for client in response.data:
clientlist[client['clid']] = client
return clientlist
else:
# TODO: Raise a exception?
self.logger.debug("clientlist - error retrieving client list")
return {}
def clientkick(self, clid=None, cldbid=None, type=REASON_KICK_SERVER, message=None):
"""
Kicks a user identified by either clid or cldbid
@@ -345,7 +362,7 @@ class TS3Server(TS3Proto):
break
if not client:
# we should throw an exception here actually
# TODO: we should throw an exception here actually
self.logger.debug("clientkick - no client with specified cldbid (%s) was found" % cldbid)
return False
elif clid: