Бот на Javascript разные триггеры для ответов

#javascript #bots

#javascript #боты

Вопрос:

Я создал простого javascript-бота и пытаюсь найти способ добавить другой триггер для определенного ответа без создания нового массива. Приведенный ниже код выглядит следующим образом: перед запятой («привет»,) находится триггер, а после запятой (, «привет») — то, на что бот запрограммирован отвечать. Я пытался придумать способ добавить больше триггеров, чтобы бот по-прежнему отвечал «привет», если пользователь наберет «привет» вместо «hi». Кажется, я не могу понять, как это сделать. Помощь была бы очень признательна!

 var convpatterns = new Array(
  new Array("Hi", "Hello."),
  new Array("How are you?", "Good. How are you?"),  

Комментарии:

1. Похоже, вам нужна древовидная структура вместо массива

Ответ №1:

Вы должны использовать два словаря JavaScript, обернутые в объект, вот так.

 function Chatter() {
  var self = this;
  self.responses = {
    0: 'hello',
    1: 'Good, how are you?',
    4096: 'Say what!?'
  };
  self.triggers = {
    'hi': self.responses[0],
    'hey': self.responses[0],
    'How are you?': self.responses[1]
  }
  self.converse = function(input) {
      if(input in self.triggers) {
          return self.triggers[input];
      }
      return self.responses[4096];
  }
}

chatter = new Chatter();
console.log(chatter.converse('hi'));
console.log(chatter.converse('asd'));
console.log(chatter.converse('hey'));  

Словари могут быть созданы с фигурными скобками в javascript var myDictVar = {}, ключи и значения могут быть добавлены, как показано в примере выше.

Тип данных словаря в программировании подобен реальному словарю, он оптимизирован для быстрого поиска значения по ключу.