@Scred23

Как боту выполнить деление двух переменных?

Добрый вечер!
Мне необходимо, чтобы бот выполнял деление двух переменных, значения которых я ввожу с клавиатуры. Использую библиотеку BotAct. Вот весь мой код:
const express = require('express')
const bodyParser = require('body-parser')
const { Botact } = require ('botact')

const server = express()
const bot = new Botact({
   token: 'My token',
   confirmation: 'My code' 
})

bot.on(function (ctx) {
    console.log(ctx.body)

    ctx.reply('Неправильное сообщение')
})
bot.command('Старт', function (ctx) {
    ctx.reply('Привет! Я бот, который поможет тебе разобраться с экономическими формулами. Вот их список: 1) Срок окупаемости;  2) Коэффициент маржинального дохода;  3) Точка безубыточности.  Напиши, какую формулу хочешь узнать)')
})

bot.command('Какое сейчас время?', function(ctx) {
    const date = new Date()
    const h = date.getHours()
    const m = date.getMinutes()
    const s = date.getSeconds()

    const time = 'Сейчас ' + h + ':' + m + ':' + s
    ctx.reply(time)
})

bot.command('Срок окупаемости', function(ctx) {
ctx.reply('Срок окупаемости = Первоначальные инвестиции / Ежегодные денежные доходы')
    })

    bot.command('Коэффициент маржинального дохода', function(ctx) {
        ctx.reply('КMR=MR/TR, где MR—маржинальный доход, TR—выручка')
            })

            bot.command('Рассчитать коэффициент маржинального дохода', function (ctx) {
                var       
                    a = parseInt(prompt('Введите MR= ')),
                    b = parseInt(prompt('Введите TR= ')),
                    c = (a / b);
                ctx.reply ('КMR= '+c)
            })
                
        

            bot.command('Точка безубыточности', function(ctx) {
                ctx.reply('BEP = FC / KMR, где FC—постоянные затраты, KMR—коэффициент маржинального дохода')
                    })

    bot.hears(/(Спасибо|Благодарю)/, ({ reply }) => {
        reply('Рад был тебе помочь!')
      })

server.use(bodyParser.json())

server.post('/', bot.listen)

server.listen(80)


Этот кусок кода не работает
bot.command('Рассчитать коэффициент маржинального дохода', function (ctx) {
                var       
                    a = parseInt(prompt('Введите MR= ')),
                    b = parseInt(prompt('Введите TR= ')),
                    c = (a / b);
                ctx.reply ('КMR= '+c)
            })

Выдаёт ошибку: TypeError: Cannot read property 'fwd_messages' of undefined
Подскажите в чём моя ошибка либо напишите другой вариант кода, который бы вычислял деление моих переменных
Заранее огромное спасибо
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 1
john36allTa
@john36allTa
That`s calling Walker
Попробую тыкнуть пальцем в небо.. Криво, не красиво, без проверок и возможно с ошибками синтаксиса.. Вобщем наваял на одном дыхании и протестить никак
var _MR=0;
bot.addScene('sample',
	({ reply, scene: { next } }) => {
		next()
		reply('Введите MR(целое число)');
	},
  ({ reply, body, scene: { next } }) => {
    _MR=parseInt(body);
    next()
    reply('Введите TR(целое число)')
   },
  ({ reply, body, scene: { leave } }) => {
    leave()
    let kmr = _MR / parseInt(body)
    reply(`KMR = ${kmr}`)
  }
);
bot.command('Рассчитать коэффициент маржинального дохода', ({ scene: { join } }) => join("sample") );

Правда _MR там как то нужно к юзерской сессии хранить - сходу не нашел как, может просто в ctx записать можно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы