#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 = {}, ключи и значения могут быть добавлены, как показано в примере выше.
Тип данных словаря в программировании подобен реальному словарю, он оптимизирован для быстрого поиска значения по ключу.