Package: ts3ekkoclient
Sprache: python3.6Entwicklung eines TeamSpeak3 (TS3) Bots, welcher mit gleicher (bestehender) Konfiguration in mehreren Channeln eines TS3
Servers gleichzeit aktiv ist.Applikationts3ekkonimmt Commands über das Chat Interface war (shell-ähnlich)bsp syntax:!queue  [-s|–source-type=<type>] [-p|–position=<pos>] <uri>*bsp:!queue -s youtube -p 1 youtube.com/watch?v=0xC0FFEE youtube.com/watch?v=0xdlqwidoiwControl CommandsCommandInfo!spawnSpawned neue Instanz des Bots im Channel, in dem der Invoker aktuell ist (Übermittlung via privater Nachricht
an irgendeine andere Instanz auf dem Server)!despawnDespawned die Instanz, zu der dieser Command gesendet wurde!joinBewegt den Bot in den Channel des Invokers. [CHANGE: command hinzugefügt]Audio CommandsCommandInfo!queue [-p|–position=<pos>] <uri>*Fügt neuen Track der instanz-gebundenen Queue zu. Als Quellen sind YouTube sowie lokal (filesystem) möglich (-s) [CHANGE:–source-typeentfernt, da mpv über auto-detection verfügt]!skip [<count>]Überspringt Anzahl von Tracks in queue. Defaults zum nächsten Track (skip aktuellen)!media [queue]Zeigt Informationen über aktuellen Track an. Wennqueuekeyword angegeben ist, dann werden Informationen
über die Tracks in der Queue angezeigt!mediaalias set <aliasname> <uri>*Erstellt einen Alias für eine beliebige Anzahl von URIs. Alias kann anstelle von URIs verwendet werden,
dafür $aliasname schreiben. Media Alias sind nicht an eine Bot Instanz gebunden.!mediaalias get <aliasname>Zeigt Informationen (Inhalt, Ersteller) zum Alias an!mediaalias delete <aliasname>Löscht den Alias!mediaalias append <aliasname> <uri>*Hängt Tracks an den Inhalt des Alias an!pausemediaPausiert aktuelle Wiedergabe!resumemediaFährt mit Wiedergabe fort!clearqueueEntfernt alle Tracks aus der Queue!volume resetSetzt Volume der Bot Instanz auf den Standardwert zurück!volume <percent>Setzt Volume der Bot Instant auf den gewünschten ProzentwertText Helper CommandsHierbei handelt es sich um eine Art Text-Alias/Command System. Nutzer können einen beliebigen Text (z.B. Links oder
Erklärungen) an einen Alias hängen. Dieser Alias kann dann als Bot-Command verwendet werden. Sollte eine Nachricht
dem Alias gleichen, dann wird der Bot den damit verbunden Text in den selben Kommunikationschannel schreiben.
So müssen Links oder Erklärungen nicht immer neu kopiert und in den Chat geschrieben werden,
der Alias reicht (gesehen von der Benutzerseite).CommandInfo!textalias set [-p|–permanent] <aliasname> <value>Erstellt einen Bot-Instanz gebundenen (ungebunden/permanent durch-p) Alias!textalias get [-p|–permanent] <aliasname>Liest den Inhalt eines Bot-Instanz gebundenen (ungebunden/permanent durch-p) Alias
(ggf. mit Zusatzinformationen bzgl. Ersteller) aus!textalias delete [-p|–permanent] <aliasname>Löscht einen Bot-Instanz gebundenen (ungebunden/permanent durch-p) Alias!textalias list-temporaryListet alle Alias auf, die an die aktuelle Bot-Instanz gebunden sind!textalias list-permanentListet alle Alias auf, die nicht an die aktuelle Bot-Instanz gebunden sind (ungebunden/permanent)!~<aliasname> <value>Kurzform für!textalias set, nur Bot-Instanz gebundene Alias!~<aliasname>Aufruf des AliasPermissionsEs soll möglich sein, Befehle nur bestimmten Personen oder Personengruppen zugänglich zu machen.
Als Identifikationsmerkmal werden dafür die TS3 Eigenschaften des Command Invokers benutzt (Server Gruppen,
Channel Gruppen, Identität, etc).EinmöglichesCommand Interface für Permissions könnte wie folgt aussehen. Diese Commands wurden mit dem Hintergrund
zusammengestellt, dass es eine feste Menge von Permissions gibt, welche jegliche zu regulierenden Commands abdeckt.
Jede Permission ist eindeutig über einen alphanumerischen Namen (inklusive Unterstriche, Punkte) identifizierbar
(folgt ‘<permission>’ genannt). Punkte in Namen von Permissions werden zur hierarchischen Strukturierung verwendet
(Bsp: audio.mediaalias.append).CommandInfo!permission add <permission> [-i|–identity | -s|–servergroup | -c|–channelgroup] <identifier>Fügt eine Identität, Server- oder Channel Gruppe zur Liste der erlaubten Entitäten für diese Permission hinzu!permission delete <permission> [-i|–identity | -s|–servergroup | -c|–channelgroup]  <identifier>Entfernt eine Identität, Server- oder Channel Gruppe von der Liste der erlaubten Entitäten für diese Permission!permission get <permission>Zeige alle assozierten Entitäten der Permission!permission list [-r] <permission-path>Zeige Namen aller direkten Permissions in diesem Pfad (Punkt-Separierung),-rfür rekursive Darstellung!permission info <permission-name>Zeige Informationen zur Permission (z.B. Benutzung, verwandte Permissions, Doku)Ob dieses Command Interface in diesem Umfang oder dieser Art implementiert wird, ist jedoch noch fraglich.ts3ekkomanagekontrolliert die verschiedenen docker container für die einzelnen channelspawn von neuen containern für angeforderte channel (!spawn)de-spawn von containern für channel, in denen der bot nicht mehr erwünscht ist (!despawn)DeploymentVagrant Linux VM (libvirt), provisioniert mit ansibleDocker ImagesTS3 Client + ts3ekkoDieses Image representiert eine Instanz des Bots. Pro Instanz des Bots wird ein Container dieses Images existieren.ts3ekkomanageImage für die Managementinstanz des Bots. Nur ein Container dieses Images wird pro TeamSpeak3 Server benötigt.Vermutlich verwendete, bedeutende Bibliothekents3query/ts3 für teilweise Interaktion (non-audio/non-settings) mit dem TS3 Client über das ClientQuery interfacedocker-py für die Interaktion von ts3ekkomanage mit dem Docker Daemonyoutube-dl/vlc (o.Ä.) für das streamen der Medien zu den lokalen AudiodevicesREADME-de.rst