我正在爲Sinusbot(一個Bot for TeamSpeak)編寫腳本,並且想編寫一個腳本來檢查用戶是否已加入該頻道。JavaScript setTimeout Sinusbot
問題在這裏:我希望腳本在用戶之後執行某些操作是在該通道中10秒鐘!
我試過setTimeout
但它沒有奏效。
我做錯了什麼?
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
編輯:
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:
我懂了:
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);
}
你的代碼看起來不錯,setTimeout應該工作。看看javascript控制檯的錯誤。使用javascript調試器查看程序中是否達到了setTimeout。 –
沒有「錯誤」。我只是需要一些思考來檢查用戶是否仍然在該頻道中10秒後。 – ZarneXxX
你確定你的程序正在進入if塊嗎? 'ev.newChannel == channel_10m'是真的嗎? – josemigallas