Hallo liebe Community,
ich habe mich mal wieder etwas mit der Bot Programmierung beschäftigt und dieses coole Projekt gefunden: https://github.com/Murgeye/teamspeak3-python-bot
Dieses Projekt wollte ich euch einfach mal vorstellen, denn das verdient einfach Aufmerksamkeit. Es ist schon etwas älter, aber es funktioniert noch heute problemlos.
Ich habe das Projekt geforkt, ein paar Dinge umgebaut, optimiert und den Funktionsumfang ausgebaut. Außerdem habe ich ein paar Versionen released, damit ihr eine bestimmte Version nutzen und testen könnt: https://github.com/Sebi94nbg/teamspeak3-python-bot
Was macht den Bot besonders?
- Funktioniert mit TeamSpeak 3 und 5 Servern (letzteres ist Stand heute noch immer in der Beta Phase, aber die aktuellen Funktionalitäten sollten weiterhin funktionieren)
- Der Quellcode basiert auf Python
- Der Bot unterstützt Threading
- Dadurch läuft der Bot insgesamt schneller, vor allem desto mehr CPUs der Server hat
- Die einzelnen Plugins können dadurch parallel laufen und blockieren sich nicht gegenseitig
- Effiziente Nutzung der Hardware Ressourcen (z.B. CPU und RAM)
- Der Bot unterstützt die (Text/Channel/Server) Events vom TeamSpeak Server
- Plugins können dadurch z.B. sofort auf TeamSpeak Server Events reagieren und müssen nicht auf einen Schleifendurchlauf warten, der beispielweise "nur" jede Sekunde oder alle paar Sekunden ausgeführt wird.
- Man kann z.B. sofort einen Channel erstellen, wenn ein Client einen bestimmten Channel betritt. Man erspart sich dadurch die Schleife (while true), welche alle X Sekunden prüft, ob jemand in einem Raum ist. Dadurch hat man keinen bzw. deutlich weniger Verzögerung in der Funktionalität des Bots.
Ich habe das ganze zu Test-Zwecken lokal in einem Docker Container installiert, konfiguriert und getestet.
Der Docker Container hat folgende Specs:
$ cat /etc/debian_version
11.5
$ lscpu | grep -E "^(Model name|CPU\(s\)|CPU MHz)"
CPU(s): 16
Model name: Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz
CPU MHz: 3600.010
$ lsmem
RANGE SIZE STATE REMOVABLE BLOCK
0x0000000000000000-0x00000000f7ffffff 3.9G online yes 0-30
0x0000000100000000-0x0000000407ffffff 12.1G online yes 32-128
Memory block size: 128M
Total online memory: 16G
Total offline memory: 0B
$ python3 --version
Python 3.11.0
Während der Tests hatte der verbundene TeamSpeak Server folgende Eckdaten:
- Server Version 3.13.7 (auf Linux)
- Verbundene Clients: 9
- Anzahl vorhandener Channels: 48
Folgende Plugins waren für den Bot aktiviert und konfiguriert:
[Plugins]
UtilCommand: utils
AfkMover: afk_mover.main
IdleMover: idle_mover.main
KickInactiveClients: kick_inactive_clients.main
BadNickname: bad_nickname.main
TwitchLive: twitch_live.main
PrivateChannelManager: private_channel_manager.main
Der Bot nutzte während der Tests folgende Hardware Ressourcen:
$ docker stats thirsty_pare
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
8e0e600e883e thirsty_pare 0.83% 95.97MiB / 15.59GiB 0.60% 197MB / 28.3MB 0B / 0B 11
Pi-mal-Daumen sollte man also mit ca. 20 MB pro geladenes Plugin für den Arbeitsspeicher rechnen.
Mich persönlich würde interessieren, wie die Statistiken / Werte aussehen, wenn man den Bot auf einem größeren TeamSpeak Server mit z.B. +50 Clients und 100 Channels verwendet. Falls ihr also ein paar Werte hierzu habt: Gerne her damit. Teilt eure Erfahrungen.
Der Bot selbst läuft an sich super. Konnte keine Probleme feststellen. Und da die Funktionalitäten auf Plugins aufbauen, ist er auch jederzeit einfach und recht schnell erweiterbar, wenn man etwas Python versteht.
Falls ihr Interesse habt, könnt ihr euch den Bot gerne selbst einmal installieren, einrichten/konfigurieren und testen:
Falls ihr Bugs oder Feature Requests habt, würde ich euch bitten, diese im entsprechend Github Projekt als Issue zu melden.
Allgemeine Fragen hierzu beantworte ich euch gerne hier im Forum, soweit ich das kann.