S
S
Sergey2019-11-09 19:42:49
JavaScript
Sergey, 2019-11-09 19:42:49

How can a bot divide two variables?

Good evening!
I need the bot to perform the division of two variables, the values ​​of which I enter from the keyboard. I am using the BotAct library. Here is my entire code:

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)

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

Gives an error: TypeError: Cannot read property 'fwd_messages' of undefined
Tell me what my mistake is or write another version of the code that would calculate the division of my variables
Many thanks in advance

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Somewhere Intech, 2019-11-09
@john36allTa

I'll try to point my finger at the sky .. Crooked, not beautiful, without checks and possibly with syntax errors .. In general, I made it in one breath and can't test it

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") );

True, _MR there somehow needs to be stored for the user session - I didn’t find it right away, maybe you can just write it in ctx?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question