Ich schreibe für Sinusbot (ein Bot für TeamSpeak) und möchte ein Skript schreiben, das prüft, ob ein Benutzer dem Kanal beigetreten ist.JavaScript setTimeout Sinusbot
Problem hier: Ich möchte, dass das Skript etwas tun, nachdem der Benutzer 10 Sekunden in diesem Kanal ist!
Ich versuchte es mit setTimeout
, aber es hat nicht funktioniert.
Was habe ich falsch gemacht?
if (ev.newChannel == channel_10m){
//if someone joins channel_10m
//wait 10 seconds
setTimeout(function(){
if (ev.newChannel == channel_10m){
//check if user is in channel_10m
//do somethink
}
}, 10000);
}
Sinusbot API: https://www.sinusbot.com/scripts/scripting3.html
Edit:
var timeout;
sinusbot.on('clientMove', function(ev) {
if (ev.newChannel == channel_10m) {
timeout = setTimeout(() => {
sinusbot.chatPrivate(ev.clientId, msg1);
}, 10000);
}
}
sinusbot.on('clientMove', function(ev) {
if (timeout) {
clearTimeout(timeout);
sinusbot.chatPrivate(ev.clientId, msg2);
}
}
EDIT2:
ich es bekommen habe:
if (ev.newChannel == achannel_entrance){
setTimeout(function(){
if ((sinusbot.getChannel(1267)['clients'][0]['id'] && ev.newChannel) == (sinusbot.getChannel(1267)['clients'][0]['id'] && achannel_entrance)){
sinusbot.chatPrivate(ev.clientId, msg0);
sinusbot.move(ev.clientId, bchannel_support);
}
}, 300000);
}
Ihr Code sieht gut aus, sollte die setTimeout funktionieren. Schau in der JavaScript-Konsole nach Fehlern. Verwenden Sie den Javascript-Debugger, um festzustellen, ob setTimeout in Ihrem Programm erreicht ist. –
Es gibt keinen "Fehler". Ich brauche nur etwas, das überprüft, ob der Benutzer nach 10 Sekunden immer noch in diesem Kanal ist. – ZarneXxX
Sind Sie sicher, dass Ihr Programm den if-Block eingibt? Ist 'ev.newChannel == channel_10m 'wahr? – josemigallas