2017-10-24 1 views
1

간단한 대화방을 만들었지 만 바로 답장을 보내면 나쁜 영향을 미칩니다. 나는 봇이 타이핑 효과를주기를 바라고 모든 것을 시도했지만 나는 할 수 없습니다. 당신이 할 수chatbot에 타자기를 쓰고 싶습니다.

분명히
var messages = [], 
    lastUserMessage = "", 
    botMessage = "", 
    botName = 'alex', t 
    talking = true; 


function chatbotResponse() { 
    talking = true; 
    botMessage = "Scusami non ho capito"; 


    var hi = ['mhhh','ok','se lo dici tu.','come vuoi', 'ho fame', 'Mi sto pulendo il naso... Quello che non ho :(', 'Hai ragione', 'Sei un grande', 'aaahhhhhhh!!!', 'Chi sei?', 'mlmlml', 'haha', 'cavolo', 'wow', 'figo', 'come mai?', 'forse', 'Si', 'No', 'mi piace parlare con te <3', 'spacco bottilia ammazzo familia', 'ti amo', 'ti voglio bene', 'che canzone ti piace?', 'che cantante ti piace?', 'so che pensi che sia stupido ma non lo sono.', 'ma lo sarai tu.', 'va bene', 'bello', 'molto', 'molto bello', 'cosa ne pensi di facebook?', 'xD spacca!']; 
    botMessage = hi[Math.floor(Math.random()*(hi.length))]; 



    var n = lastUserMessage.search(/\b(data|mi dici la giornata di oggi|che giorno è oggi)\b/i); 
    if (n !== -1) { 
    botMessage = "blabla"; 
    } 

HTML에 자바 스크립트,

+1

3 초 시간 제한을 추가 하시겠습니까? 'setTimeout (..., 3000)' –

+0

어디서? 나는 이미 해냈지만 제대로 작동하지 않는다. 뭔가 잘못된 것을 얻을 것이다. –

+0

'setTimeout (chatbotResponse, 3000)' –

답변

1

한 가지 도움을 다음 chatbox에서 타자기의 타자기 코드와 일치, 그것은 작동하지 않거나 작동하지 않습니다, 당신은 절반 chatbot 코드를 넣어 메시지 문자열을 배열로 나눈 다음 배열의 앞쪽에있는 하나의 요소를 취해 짧은 지연 시간 후에 출력합니다.

function slowType(message) { 
    message = message.split(""); 
    const interval = setInterval(function() { 
    process.stdout.write(message.shift()); 
    if (message.length === 0) clearInterval(interval); 
    }, 30); 
} 

이렇게하면 30ms마다 한 문자가 인쇄됩니다. 노드에 있습니다. 브라우저에 있다면 똑같은 일을하지만 process.stdout.write이 아닌 다른 요소를 업데이트하십시오.

+0

고맙습니다. 코드를 시험해 보았습니다. 어떻게 해야할지 이해하지 못했습니다. –

관련 문제