странная ошибка читайте основную часть
var templates = [
{
"q": ["привет", "hello", "приветик", "ку", "hallo", "бонжур", "bonjour", "кукусики", "приветули", "здравствуй", "здравствуйте"],
"a": ["Привет, привет!", "Hello!", "Приветик!"]
},
{
"q": ["как дела", "как жизнь", "как делишки", "привет как дела"],
"a": ["Спасибо, хорошо, а у Вас?", "Обстановка по кайфу... А как у вас?"]
},
];
function chatting(templates){
this.templates = templates;
this.input = $("#input").val().toLowerCase();
this.tempLen = this.templates.length;
this.inLen = this.input.length;
printClient();
this.notUnderstand = true;
this.input = ignorePunct(this.input);
for(var i = 0; i < tempLen; i++){
let len = this.templates[i].q.length;
for(var x = 0; x < len; x++){
if(this.input == this.templates[i].q[x]){
let aLen = this.templates[i].a.length - 1;
let rand = random(aLen)
printVanja(this.templates[i].a[rand]);
this.notUnderstand = false;
}
}
}
if(this.notUnderstand){
printVanja("НЕ ПОНЕЛ");
}
return false;
}
ошибка в том, что при передаче некоторых слов например: приветик, бот пишет НЕ ПОНЕЛ, хотя это слово есть в шаблоне, но при этом П,р.!иВе;т!!! он читает и выводит рандомное сообщение, но возможно что такая же ошибка распрастроняется и на ответы.
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
Повторил код, выкинул все лишнее и он работал с "приветик". Тогда оставил всё, что только можно оставить -
Скорее всего у вас ошибка тут:
let aLen = this.templates[i].a.length - 1;
let rand = random(aLen)
printVanja(this.templates[i].a[rand]);
если random - это Math.random, то она выдает не целое число чаще всего и тогда переход куда-то в массив будет невозможно и надо делать так:
let rand = Math.ceil(Math.random(aLen))