@noname.team/vk-chat-bot

Chat bot for Vk

Usage no npm install needed!

<script type="module">
  import nonameTeamVkChatBot from 'https://cdn.skypack.dev/@noname.team/vk-chat-bot';
</script>

README

Vk Chat Bot

Schema structure

It's an object of steps, where keys are step name, and values are step schema

{
  initial: {
    message: 'Initial step',
    commands: [
      [
        {
          name: 'start',
          label: 'Start',
          color: 'primary',
          handler: async ({ resetData, goToStep }) => {
            await resetData()

            return goToStep('another_step')
          }
        }
      ]
    ]
  },
  another_step: {
    message: 'Another step',
    commands: [
      [
        {
          name: 'command',
          label: 'Custom command',
          color: 'positive',
          handler: async ({ setData, data, goToStep }) => {
            // get something from data object
            await setData({ param: 'value' })

            return goToStep('one_more_step')
          }
        },
        'system_stepback'
      ]
    ]
  },
  one_more_step: {
    message: 'One more step',
    commands: [
      [
        'system_startover'
      ]
    ]
  }
}

So, here initial, another_step, one_more_step are step names. Let's get closer to

step schema

It's an object with message and commands props. message is for text that appears on chat bot response. commands is an array of message commands, which are looking like buttons, also they are acceptable as text commands.

commands

name, type, label, color params are from https://vk.com/dev/bots_docs_3?f=4.%2BКлавиатуры%2Bдля%2Bботов handler is a function that is calling by chat bot on incoming message event from user

({
  data, // is an object with a whole chat bot data related to current user
  setData, // is an async function to update the data
  goToStep, // is an async function that shows another step to user
  resetData // is an async function that makes the data empty
}) => {
  // do something
  return goToStep('next_step')
}