0.0.1 • Published 3 years ago

async-bot v0.0.1

Weekly downloads
3
License
Unlicense
Repository
github
Last release
3 years ago

async-bot

Get rid of hardcoding states when you are developing a conversation bot.

An example

Imagine you are writing a bot that ask user her information and calculater her bmi:

Classic, bad, long, manual way:

let state = 'init';
let name, height, weight;
bot.on('message', (message) => {
  if (state === 'get_name') {
    name = message;
    state = 'get_height';
    sendMsg('What is your height in meters?');
  } else if (state === 'get_height') {
    height = Number(message);
    state = 'get_weight';
    sendMsg('What is your weight in kilograms?');  
  } else if (state === 'get_weight') {
    weight = Number(message);
    state = 'init';
    sendMsg(`hey ${name}, your bmi is ${weight/(height*height)}`);
  } else if (state === 'init) {
    state = 'get_name';
    sendMsg('Hello. What is your name?');
  }
});

in async bot:

const bot = async (ctx) => {
  while (true) {
    const name = await ask(ctx, 'Hello. What is your name?');
    const height = Number(await ask(ctx, 'What is your height in meters?'));
    const weight = Number(await ask(ctx, 'What is your weight in kilograms?'));
    await sendMsg(ctx, `hey ${name}, your bmi is ${weight/(height*height)}`);
  }
};