Так что я пытался установить значение для переменной, когда пользователь вводит что-то в чате, который находится в списке linksDisallowed. Однако я не могу получить значение переменных вне оператора if. Кто-нибудь может помочь мне?Задайте значение переменной внутри оператора if. И использовать его вне сателлита потом
Код выглядит следующим образом:
client.on('chat', function(channel, user, message, self) {
\t for (var i = 0; i < 3; i++) {
\t \t
\t \t if(message.indexOf(linksDisallowed[i]) >= 0) {
\t \t \t var timeoutUser = 1;
\t \t \t //console.log("Link detected!");
\t \t \t //client.say("dunkstormen", "Ahem! " + user.username + " are you allowed to post links?!");
\t \t } else {
\t \t \t var timeoutUser = 0;
\t \t \t //console.log("No link detected!");
\t \t \t //client.say("dunkstormen", "Hello, " + user.username);
\t \t }
\t \t
\t }
\t
\t if(timeoutUser == 1) {
\t \t console.log("Timing out " + user.username);
\t } else {
\t \t timeoutUser == 0
\t \t console.log("Not timing out " + user.username);
\t }
});
Если вы определяете переменную 'var' она будет доступна внутри целая функция (функция scope). Поэтому у вас есть доступ к 'timeoutUser' после' if' и 'for'. Здесь должна быть какая-то другая ошибка. –
Вы устанавливаете значение переменной в цикле, поэтому после цикла он будет удерживать любое значение, установленное в последней итерации. Таким образом, вы действительно проверяете третье недопустимое значение ссылки. Возможно, вы хотите, чтобы оператор 'break' в вашем' if' вышел из цикла, как только вы получили совпадение? (Если это так, установите переменную в 0 перед циклом и удалите случай else.) – nnnnnn