Teamspeak

Main module

Teamspeak management.

class sni.teamspeak.teamspeak.TeamspeakClient[source]

Bases: pydantic.main.BaseModel

Represents a teamspeak client as reported by the teamspeak query server.

cid: int = None
clid: int = None
client_database_id: int = None
client_nickname: str = None
client_type: int = None
class sni.teamspeak.teamspeak.TeamspeakGroup[source]

Bases: pydantic.main.BaseModel

Represents a teamspeak group as reported by the teamspeak query server.

iconid: int = None
name: str = None
savedb: int = None
sgid: int = None
type: int = None
sni.teamspeak.teamspeak.cached_teamspeak_query(connection: ts3.query.TS3Connection, query: Callable, ttl: int = 60, *, args=[], kwargs={}) → Any[source]

Returns a parsed query result, and caches the result.

sni.teamspeak.teamspeak.client_list(connection: ts3.query.TS3Connection) → List[sni.teamspeak.teamspeak.TeamspeakClient][source]

Returns the list of clients currently connected to the teamspeak server.

See also

sni.teamspeak.TeamspeakClient

sni.teamspeak.teamspeak.close_teamspeak_connection(connection: ts3.query.TS3Connection) → None[source]

Closes a Teamspeak connection. Wraps ts3.query.TS3Connection.close() in a try… except block to catch spurious connection reset exceptions.

sni.teamspeak.teamspeak.complete_authentication_challenge(connection: ts3.query.TS3Connection, usr: sni.user.models.User)[source]

Complete an authentication challenge, see sni.teamspeak.new_authentication_challenge().

sni.teamspeak.teamspeak.ensure_group(connection: ts3.query.TS3Connection, name: str) → sni.teamspeak.teamspeak.TeamspeakGroup[source]

Ensures that a teamspeak group exists, and returns a sni.teamspeak.teamspeak.TeamspeakGroup.

sni.teamspeak.teamspeak.find_client(connection: ts3.query.TS3Connection, *, nickname: Optional[str] = None, client_database_id: Optional[int] = None) → sni.teamspeak.teamspeak.TeamspeakClient[source]

Returns the sni.teamspeak.TeamspeakClient representation of a client. Raises a LookupError if the client is not found, or if multiple client with the same nickname are found.

sni.teamspeak.teamspeak.find_group(connection: ts3.query.TS3Connection, *, name: Optional[str] = None, group_id: Optional[int] = None) → sni.teamspeak.teamspeak.TeamspeakGroup[source]

Returns the sni.teamspeak.TeamspeakGroup representation of a teamspeak group. Raises a LookupError if the group is not found.

sni.teamspeak.teamspeak.group_list(connection: ts3.query.TS3Connection) → List[sni.teamspeak.teamspeak.TeamspeakGroup][source]

Returns the list of groups in the teamspeak server.

See also

sni.teamspeak.TeamspeakGroup

sni.teamspeak.teamspeak.new_authentication_challenge(usr: sni.user.models.User) → str[source]

Initiates an authentication challenge. The challenge proceeds as follows:

  1. A user (sni.user) asks to start a challenge by calling this method.

  2. This methods returns a UUID, and the user has 60 seconds to change its teamspeak nickname to that UUID.

  3. The user notifies SNI that (s)he has done so.

  4. The server checks (see sni.teamspeak.complete_authentication_challenge()), and if sucessful, the corresponding teamspeak client is registered in the database and bound to that user. The nickname is also automatically assigned.

sni.teamspeak.teamspeak.new_teamspeak_connection() → ts3.query.TS3Connection[source]

Returns a new connection to the teamspeak server.

Database models

Teamspeak database models

class sni.teamspeak.models.TeamspeakAuthenticationChallenge(*args, **values)[source]

Bases: mongoengine.document.Document

Represents a teamspeak authentication challenge, akin to sni.uac.token.StateCode.

See also

sni.teamspeak.new_authentication_challenge()

challenge_nickname

See sni.teamspeak.teamspeak.new_authentication_challenge()

created_on

Timestamp of the creation of this document

user

“Corresponding user

Jobs

Recurrent teamspeak jobs

sni.teamspeak.jobs.map_teamspeak_groups()[source]

Creates all groups on Teamspeak.

sni.teamspeak.jobs.message_registered_clients_with_wrong_name()[source]

Iterates through all users that are registered in Teamspeak, and checks their nickname. If it doesn’t match, sends a message.

sni.teamspeak.jobs.update_teamspeak_groups()[source]

Updates group memberships on Teamspeak

Database signals

Database signals. See Mongoengine signals

Migration

Database migrations

sni.teamspeak.migration.migrate() → None[source]

Runs migration tasks