Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 17:17
    rogermb commented #342
  • 17:17
    rogermb labeled #342
  • 11:52
    DanielAlves123 opened #342
  • Oct 09 11:39
    mnjg123 closed #305
  • Sep 14 21:26
    rogermb commented #339
  • Sep 14 21:24
    sgebauer commented #339
  • Sep 14 20:11
    rogermb commented #339
  • Sep 14 20:07
    sgebauer commented #339
  • Aug 31 12:36
    rogermb commented #341
  • Aug 31 12:35
    NewJavaDeveloper closed #341
  • Aug 31 12:35
    NewJavaDeveloper commented #341
  • Aug 31 12:05
    rogermb commented #341
  • Aug 31 12:03
    rogermb commented #341
  • Aug 31 11:45
    NewJavaDeveloper edited #341
  • Aug 31 11:44
    NewJavaDeveloper opened #341
  • Aug 16 15:31
    akaJonas opened #340
  • Aug 16 04:04
    essemX commented #294
  • Aug 02 14:28
    Rindula edited #339
  • Aug 02 14:27
    Rindula opened #339
  • Aug 02 01:10
    rogermb commented #338
JenkePlays
@JenkePlays_twitter
Thank You its work.
JenkePlays
@JenkePlays_twitter
I become a Error: Exception in thread "[TeamSpeak-3-Java-API] SocketWriter" java.lang.NullPointerException
at com.github.theholywaffle.teamspeak3.commands.CommandEncoding.encode(CommandEncoding.java:34)
at com.github.theholywaffle.teamspeak3.commands.parameter.KeyValueParam.build(KeyValueParam.java:55)
at com.github.theholywaffle.teamspeak3.commands.parameter.Parameter.toString(Parameter.java:35)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.github.theholywaffle.teamspeak3.commands.Command.toString(Command.java:120)
at com.github.theholywaffle.teamspeak3.SocketWriter.run(SocketWriter.java:58)
Does anyone know why this is ?
Roger Baumgartner
@rogermb
One of your arguments to an API call was null
JenkePlays
@JenkePlays_twitter
                        api.editChannel(36, Collections.singletonMap(ChannelProperty.CHANNEL_PASSWORD, null));
Is this the Error ?
Roger Baumgartner
@rogermb
Yeah
Why would you do this??
JenkePlays
@JenkePlays_twitter
I will set the Password off.
How can i set the password off =
Roger Baumgartner
@rogermb
""
If the empty string doesn't work, you most likely can't change the password from a server query anyways
JenkePlays
@JenkePlays_twitter
ohhh, iam stupid :D
JenkePlays
@JenkePlays_twitter
How can i get the idle time of a player ?
OVer the Clientinfo ?
Roger Baumgartner
@rogermb
Dude, you're really starting to stretch it. I'm not your personal "google" - use your own brain.
If you're using an IDE, type "idle" and look for any suggestions. If you don't have an IDE, open the file ClientInfo.java and use a search function to look for "idle"
JenkePlays
@JenkePlays_twitter
Thx
Henny022
@Henny022
if you want to work with command args, this is a very nice solution
´´´String args[] = message.split(" ");´´´
String args[] = message.split(" ");
kreidlerflorett
@kreidlerflorett

@rogermb

This wouldn't happen if the API just set overwrite=1 instead of 0. However, I was (probably being overly cautious) afraid of a CRC32 hash collision happening. Basically, I wanted to exclude the possibility of people uploading an icon to the TS3 server which didn't already exist on there and it removing / changing an existing icon to that uploaded icon. At least this way you know that a "collision" has happened and can take the appropriate steps to resolve it

Hmmm, I have sometime problems with the CRC32. How do you mean that with overwrite=1?

How could I do that?
Roger Baumgartner
@rogermb
If you get a collision, you're most likely trying to upload the same icon twice.
Overwriting is in almost every situation the wrong response
JoKer96 | 😴
@JoKer96__twitter

Hey there, i have another Problem.
I try to create a Subchannel, move a client, from the channel above in the subchannel, change the channel to a temporary one and give the client a specific channel group.
But it won't work, the channel is created, and modified to a temporary one, but noething more...
Here is my Code:

// ---- Channel Creation ----
System.out.println("Create Channel");
// Let's customize our channel
final HashMap<ChannelProperty, String> properties = new HashMap<ChannelProperty, String>();
// Make it a permanent channel
properties.put(ChannelProperty.CHANNEL_FLAG_PERMANENT, "1");
// Make it a subchannel of the channel, the user joint.
int mainChannel = headChannelId;
properties.put(ChannelProperty.CPID, String.valueOf(mainChannel));

// Create the (sub-)channel
String name = "";
try {
    name = Core.asyncApi.getChannelInfo(headChannelId).get().getName() + " Ch1";
} catch (InterruptedException ex) {
    ex.printStackTrace();
}

Core.asyncApi.createChannel(name, properties);

// ---- Move user to the created (sub-)channel ----
System.out.println("Move User");
int newChannelId = -1;
try {
newChannelId = Core.asyncApi.getChannelByNameExact(name, false).get().getId();
} catch (InterruptedException ex) {
ex.printStackTrace();
}

if (newChannelId != -1) {
    Core.asyncApi.moveClient(clientId, newChannelId);
}

// ---- Make the channel temporary ----
System.out.println("Make Channel temporary");
HashMap<ChannelProperty, String> newProperties = new HashMap<ChannelProperty, String>();

newProperties.put(ChannelProperty.CHANNEL_FLAG_PERMANENT, "0");
newProperties.put(ChannelProperty.CHANNEL_FLAG_TEMPORARY, "1");

Core.asyncApi.editChannel(newChannelId, newProperties);

// ---- Set the channel-group for the user ----
System.out.println("Set the Channelgroup");
int channelGroupId = 28;
int channelId = newChannelId;
int clientDBId = clientId;

Core.asyncApi.setClientChannelGroup(channelGroupId, channelId, clientDBId);

// ---- Done ----

Maybe you can help me out?

The code again, this time on hastebin... https://hastebin.com/ekapusibik.cs
Roger Baumgartner
@rogermb
Dude, why are you using the asynchronous API like this??
Core.asyncApi.createChannel(name, properties);
is not done when you call
newChannelId = Core.asyncApi.getChannelByNameExact(name, false).get().getId();
And createChannel already returns the ID of the new channel, so that second API call is unnecessary
The whole channel properties map also isn't needed. New channels are temporary by default.
Seriously, just use the normal synchronous API in your code and your problems will magically solve temselves :stuck_out_tongue:
Henny022
@Henny022
is there something like a syncronize() method in the async API?
Roger Baumgartner
@rogermb
What do you need to do exactly?
@Henny022
Henny022
@Henny022
if i got that right, the async api does not wait for an anwser bevor continuing with the code, so i can send multiple commands at the same time
so is there a method, that waits, untill i got al the anwsers from the server, bevor continuing with the code
Roger Baumgartner
@rogermb
Call .get() or .getUninterruptibly() on the last command you've sent
Both of these will wait until the answer to the command has arrived and return that answer. One of them throws an InterruptedException if an interrupt occurs, the other doesn't
Oh, and both of these also have a method that accepts a timeout value, so your code doesn't just hang forever if no answer from the server arrives
Henny022
@Henny022
ok thanks
Cpt. Corner
@Cpt_Corner_twitter
Is there a way to give the query like a "body", so it is displayed on the TS3 Server like a normal user? I need that to make sure every user can send Private Messages to the Bot.
Henny022
@Henny022
not by default, because it is a querry, not a client.
Cpt. Corner
@Cpt_Corner_twitter
Yea I know, but is there maybe a workaround for this problem?
Henny022
@Henny022
there is an option in the ts3 client, to show querrys, but everyone has to enable that themself
you could do someting like write to every client when they join, so they have a chat tab open
you could make a normal client with a plugin or something else, to function as an interface for the querry
Cpt. Corner
@Cpt_Corner_twitter
Mhm okay. I will propably go for the "write to everyone"-option. Thanks. :)
Henny022
@Henny022
no problem
JoKer96 | 😴
@JoKer96__twitter
Hey there, is there is a simpler way to check if a channel is empty than this: api.getChannelByNameExact(api.getChannelInfo(id).getName(), false).isEmpty()
Roger Baumgartner
@rogermb
There's a small problem with the channelinfo command - it doesn't actually tell us how many clients are in this channel. Only the data sent back with the channellist command contains this info