игра для расшифровки в discord.js проблемы с выбором случайной строки в текстовых файлах

#discord.js

#discord.js

Вопрос:

Я пытаюсь создать игру для расшифровки в discord.js! (вы можете получить представление об игре из сообщения, которое должно быть отправлено по каналу) Функция скремблирования работает нормально, но, похоже, у меня возникли проблемы с выбором случайной строки в файле. Я использую, у меня есть этот код:

 const rl = require('readline-specific')
var started = 'true'


let randomline = Math.floor(Math.random() * 1525)   1;
rl.oneline('./words.txt', randomline, function(err, res) {
    if (err) console.error(err)
    console.log(res)
    let correctword = res
    message.channel.send('The word to guess is: "'   res.shuffle()   '". use " guess <yourguess>" if you think you know what it is!');
})
  

но, похоже, это не работает. Она не выдает никакого журнала ошибок и не выполняет никаких действий в чате или при повторном входе в журнал. Что я делаю не так?

Редактировать: кажется, что моя другая строка if(started === 'false') { которая является переменной false, если игра не запущена, и true, когда она запущена. Я не понимаю, потому что я установил для нее значение false с помощью моей команды reset. Что происходит?

Комментарии:

1. Я только предполагаю, что rl.oneline это не выполняется. Поставьте console.log() перед вызовом просто для двойной проверки.

2. моя строка перед этим if(started === 'false') { не запускается, хотя у меня есть команда, которая устанавливает ее в это значение? почему это происходит?

3. используйте console.log(started) после того, как для нее установлено значение false, в любом месте, где для нее установлено значение true ~~ даже если эта строка не должна выполняться ~~ и перед инструкцией if.

4. привет… просто чтобы перепроверить … запускается переменная true или false или строка… вы проверяете строку started === 'false' , вы должны проверить логическое значение started === false

Ответ №1:

После тестирования предоставленного вами кода, я предполагаю, что вы назначаете started to "false" в области, невидимой для предоставленного кода if(started === 'false') . Мое решение состоит в том, чтобы объявить started в начале вашего скрипта, а затем присвоить ему значения, например:

 //Start of the script
var started = 'false';
...
// reset
started = 'false'
...
if(started === 'false'){
const rl = require('readline-specific')
var started = 'true'


let randomline = Math.floor(Math.random() * 1525)   1;
rl.oneline('./words.txt', randomline, function(err, res) {
    if (err) console.error(err)
    console.log(res)
    let correctword = res
    message.channel.send('The word to guess is: "'   res.shuffle()   '". use " guess <yourguess>" if you think you know what it is!');
})
}
  

Кроме того, что такое res.shuffle() ? Это String модификация конструктора?
Если нет, пожалуйста, проверьте, что вы не ошиблись String.shuffle() с shuffle() .