Hey!
Ich arbeite gerade ein bisschen mit der TS3API von TheHolyWaffle.
Wenn ein Spieler joint, soll der Query Bot ihm eine kleine Nachicht schreiben.
Das Problem bei der Sache ist, dass das "Fenster" für Private Nachichten aus irgendeinem Grund für alle gilt.
Das heißt:
Der Bot schreibt mich an. Wenn mich ein anderer User anschreibt, ist es normalerweise bei TS so, dass sich ein neues Nachichten Fenster öffnet. Hier ist es aber so, dass ich diese Nachicht beim Bot Nachichten Fenster bekomme. Wenn ich Nachichten in das Bot Nachichten Fenster schreibe, bekommt diese Nachicht der, dem ich zuletzt geschrieben habe.
Ist das ein Bug in der API oder könnte das an meinem Code liegen?
Ich arbeite gerade ein bisschen mit der TS3API von TheHolyWaffle.
Wenn ein Spieler joint, soll der Query Bot ihm eine kleine Nachicht schreiben.
Das Problem bei der Sache ist, dass das "Fenster" für Private Nachichten aus irgendeinem Grund für alle gilt.
Das heißt:
Der Bot schreibt mich an. Wenn mich ein anderer User anschreibt, ist es normalerweise bei TS so, dass sich ein neues Nachichten Fenster öffnet. Hier ist es aber so, dass ich diese Nachicht beim Bot Nachichten Fenster bekomme. Wenn ich Nachichten in das Bot Nachichten Fenster schreibe, bekommt diese Nachicht der, dem ich zuletzt geschrieben habe.
Ist das ein Bug in der API oder könnte das an meinem Code liegen?

Java:
public class QueryBot {
private TS3Config config = new TS3Config();
private TS3Query query;
private TS3Api api;
public QueryBot() {
config.setHost("Mein host");
config.setEnableCommunicationsLogging(true);
query = new TS3Query(config);
query.connect();
api = query.getApi();
api.login("queryadmin", "sQr9Rue4");
api.selectVirtualServerById(1);
api.setNickname("•● Support × Bot");
int clientId = api.whoAmI().getId();
int dbId = api.whoAmI().getDatabaseId();
api.registerAllEvents();
api.addTS3Listeners(new TS3EventAdapter() {
@Override
public void onTextMessage(TextMessageEvent e) {
if (e.getTargetMode() == TextMessageTargetMode.CLIENT) {
if (e.getMessage().startsWith("!link ")) {
String code = e.getMessage().replace("!link ", "");
if (TeamspeakVerify.isCodeExisting(code)) {
String username = TeamspeakVerify.verify(e.getInvokerUniqueId(), code);
api.sendPrivateMessage(e.getInvokerId(), "Du bist nun als [b]" + username + "[/b] verifiziert!");
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
api.editClient(e.getInvokerId(), Collections.singletonMap(ClientProperty.CLIENT_DESCRIPTION, "Minecraft-Name: " + TeamspeakVerify.getUsername(e.getInvokerUniqueId())));
}
}, 2000);
} else {
api.sendPrivateMessage(e.getInvokerId(), "Es existiert kein User mit diesem Code!");
}
}
}
}
@Override
public void onClientJoin(ClientJoinEvent e) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if (e.getClientId() != clientId) {
api.sendPrivateMessage(e.getClientId(), "Willkommen " + e.getClientNickname() + ", auf dem Teamspeak³!");
}
if (TeamspeakVerify.isVerified(e.getUniqueClientIdentifier())) {
api.editClient(e.getClientId(), Collections.singletonMap(ClientProperty.CLIENT_DESCRIPTION, "Minecraft-Name: " + TeamspeakVerify.getUsername(e.getUniqueClientIdentifier())));
} else {
api.editClient(e.getClientId(), Collections.singletonMap(ClientProperty.CLIENT_DESCRIPTION, ""));
}
}
}, 2000);
}
@Override
public void onClientLeave(ClientLeaveEvent e) {
}
@Override
public void onServerEdit(ServerEditedEvent e) {
super.onServerEdit(e);
}
@Override
public void onChannelEdit(ChannelEditedEvent e) {
super.onChannelEdit(e);
}
@Override
public void onChannelDescriptionChanged(ChannelDescriptionEditedEvent e) {
super.onChannelDescriptionChanged(e);
}
@Override
public void onClientMoved(ClientMovedEvent e) {
if (e.getTargetChannelId() == 37) {
for (Client client : api.getClients()) {
if (client.getId() != clientId) {
if (isTeamRank(client.getNickname()) && !isSilent(client.getNickname())) {
api.pokeClient(client.getId(), "Jemand wartet auf Support!");
}
}
}
}
}
@Override
public void onChannelCreate(ChannelCreateEvent e) {
super.onChannelCreate(e);
}
@Override
public void onChannelDeleted(ChannelDeletedEvent e) {
super.onChannelDeleted(e);
}
@Override
public void onChannelMoved(ChannelMovedEvent e) {
}
@Override
public void onChannelPasswordChanged(ChannelPasswordChangedEvent e) {
super.onChannelPasswordChanged(e);
}
@Override
public void onPrivilegeKeyUsed(PrivilegeKeyUsedEvent e) {
super.onPrivilegeKeyUsed(e);
}
});
}
private boolean isTeamRank(String clientNameExact) {
List<ServerGroup> groups = api.getServerGroupsByClient(api.getClientByNameExact(clientNameExact, false));
for (ServerGroup group : groups) {
if (group.getId() == 6 || group.getId() == 13 || group.getId() == 14 || group.getId() == 11 || group.getId() == 12) {
return true;
}
}
return false;
}
public boolean isSilent(String clientNameExact) {
List<ServerGroup> groups = api.getServerGroupsByClient(api.getClientByNameExact(clientNameExact, false));
for (ServerGroup group : groups) {
if (group.getId() == 23) {
return true;
}
}
return false;
}
}
Zuletzt bearbeitet: