Frage von Assassins89, 45

The Holy Waffle TS3 Java API Events?

Hallöchen alle zusammen.

Ich hab folgendes Problem.

Ich bastel gerade einen Bot für TS. Der soll bei einem bestimmten Befehl dem User eine festgelegte Servergruppe verpassen.

Das ganze versuch ich mit den Events die die API bietet.

Das wäre dann das

ClientJoinEvent

und das

TextMessageEvent

Im Client Join Event hab ich die Möglichgeit mit getClientDatabaseId die Datenbank ID des Clienten ab zu rufen, der die Nachricht an den Bot geschickt hat. Diese brauch ich auch um dem Clienten die Servergruppe zu zu ordnen.

Jetzt hab ich das Problem, dass es diese Möglichkeit im TextMessageEvent nicht gibt.

Kennt einer eine Möglichkeit, wie ich jetzt auf das getClientDatabaseId aus dem ClientJoinEvent in dem TextMessageEvent zugreifen kann?

Hier mal noch der Code, der einzelnen Events:

TextMessageEvent:

            @Override
            public void onTextMessage(TextMessageEvent e) {
                
                for(Client c : api.getClients())
                
                if(e.getMessage().equalsIgnoreCase("!de")) {
                        api.addClientToServerGroup(20, );
                        api.sendPrivateMessage(c.getId(), "Deine Sprache wurde auf Deutsch gesetzt.");
                        
                        
                } else if (e.getMessage().equalsIgnoreCase("!en")) {
                        api.addClientToServerGroup(21, api.whoAmI().getDatabaseId());
                        api.sendPrivateMessage(api.whoAmI().getDatabaseId(), "Your language was set to english.");
                        
                }
                
            }

ClientJoinEvent

                        @Override
            public void onClientJoin(ClientJoinEvent e) {
                    
                    if(e.getClientServerGroups().equals("7")){
                        api.sendPrivateMessage(e.getClientId(), "Bitte wähle deine Sprache. Antworte mit '!de' für deutsch.");
                        api.sendPrivateMessage(e.getClientId(), "Please choose your favorite language. Answer with '!en' for english.");
                        
                        
                        
                    } else if(e.getClientServerGroups().equals("7")){
                        api.sendPrivateMessage(e.getClientId(), "test");
                        
                    } else if (e.getClientServerGroups().equals("21")){
                        api.sendPrivateMessage(e.getClientId(), "test");
                        
                    }
                
                    
            }
Antwort
von rmnstr, 38

Du kannst ja die Servergroups vom Client direkt abrufen.

http://theholywaffle.github.io/TeamSpeak-3-Java-API/1.0.13/

client.getServerGroups();
Kommentar von Assassins89 ,

Ich brauch ja nicht die Servergruppen sondern die Datenbank ID des Clienten.

Antwort
von Malemeister, 35

Hallo,

Jetzt hab ich das Problem, dass es diese Möglichkeit im TextMessageEvent nicht gibt.

Ich weis zwar gerade nicht genau von welchem Framework du sprichst, aber hier solltest du auch die kompletten Daten des Clienten zurück bekommen (meistens als HashMap).

Vielleicht nochmal genau die Doku lesen?

Grüße

Kommentar von Assassins89 ,

Steht in der Überschrift: http://theholywaffle.github.io/TeamSpeak-3-Java-API/1.0.13/

Muss ich erstmal schauen, wie das geht mit der HashMap.

Kommentar von Malemeister ,

Also wenn du in Java programmierst, dann solltest du wissen was eine HashMap ist.

Hier steht doch alles: http://theholywaffle.github.io/TeamSpeak-3-Java-API/1.0.13/

Was davon verstehst du nicht?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten