В общем, есть бот, который при команде Играть запускает функцию игры. Игра - простые примеры, на ответ дается 10 секунд. Если пользователь правильно ввел ответ, ему прибавляется одно очко. При нажатии на кнопку закончить - вопросы прекращаются. Пишу на telegraf
import { game, prom } from './game.js'
bot.hears('Играть', ctx => {
ctx.reply('Через 10 секунд начнутся вопросы. Приготовтесь!', stopGame())
function send(msg){
ctx.reply(msg)
}
prom(send)
})
bot.hears('Прекратить играть', ctx => {
ctx.reply('Игра окончена', getMainMenu())
})
game.js:
export function game(call) {
let operators = ['+', '-']
let operation = ''
let result = 0
function operatorRandom() {
let operator = operators[Math.floor(Math.random() * operators.length)]
return operator
}
function getRandomInt() {
return Math.floor(Math.random() * (1000 - 1)) + 1;
}
function getOperation() {
let firstOperand = getRandomInt()
let secondOperand = getRandomInt()
if (operatorRandom() === '+') {
operation = `${firstOperand} + ${secondOperand}`
result = firstOperand + secondOperand
} else if (operatorRandom() === '-') {
operation = `${firstOperand} - ${secondOperand}`
result = firstOperand - secondOperand
} else if (operatorRandom() === '/') {
operation = `${firstOperand} / ${secondOperand}`
result = firstOperand / secondOperand
} else if (operatorRandom() === '*') {
operation = `${firstOperand} * ${secondOperand}`
result = firstOperand * secondOperand
}
}
getOperation()
return [operation, result]
}
export function prom(call){
return new Promise(function(resolve, reject){
setInterval(() => {
call(game()[0])
}, 10000)
})
}
Примеры вроде бы отправляются, но в какой-то момент возникает ошибка:
Uncaught TelegramError Error: 400: Bad Request: message text is empty
Process exited with code 1
Что исправить и как правильно реализовать прекращение игры?