| exports.name = '/sim'; | |
| exports.index = async (req, res, next) => { | |
| const fs = require('fs'); | |
| const dataSim = require('./data/data.json'); | |
| const stringSimilarity = require('string-similarity'); | |
| if(!req.query.type) return res.json({ error: 'thiếu dữ liệu để khởi chạy '}) | |
| if(req.query.type == 'ask') { | |
| var ask = encodeURI(req.query.ask) | |
| if (!ask) return res.jsonp({ error: 'thiếu dữ liệu để khởi chạy chương trình' }); | |
| var msg = []; | |
| for (let id of dataSim) { | |
| const data = id.ask | |
| msg.push(data) | |
| } | |
| var checker = stringSimilarity.findBestMatch(decodeURI(ask), msg) | |
| if (checker.bestMatch.rating >= 0.5) { | |
| var search = checker.bestMatch.target; | |
| } | |
| if(search == undefined) return res.jsonp({ | |
| answer: 'Em hong hiểu gì hết!!!' | |
| }) | |
| function recoverKey() { | |
| var data = dataSim.filter(i => i.ask.toLowerCase() == search.toLowerCase()) | |
| return data | |
| } | |
| var find = recoverKey() | |
| var f2 = find[Math.floor(Math.random() * find.length)]; | |
| var a = f2.ans[Math.floor(Math.random() * f2.ans.length)]; | |
| return res.jsonp({ | |
| answer: a | |
| }) | |
| } | |
| if(req.query.type == 'teach') { | |
| const path = require('path').join(__dirname, 'data', 'data.json'); | |
| var id = dataSim.length | |
| var ask = req.query.ask | |
| var ans = req.query.ans | |
| if(!ask || !ans) return res.json({ error: 'thiếu dữ liệu để thực thi lệnh' }); | |
| var f = dataSim.find(i => i.ask == ask); | |
| console.log(f) | |
| if(f != undefined) { | |
| if(f.ans.includes(ans)) return res.json({ error: 'Câu trả lời đã tồn tại!'}) | |
| f.ans.push(ans); | |
| } | |
| else { | |
| dataSim.push({ | |
| id, | |
| ask, | |
| ans: [ | |
| ans | |
| ] | |
| }) | |
| } | |
| fs.writeFileSync(path, JSON.stringify(dataSim, null, 2), 'utf-8'); | |
| return res.json({ | |
| msg: 'Dạy sim thành công', | |
| data: { | |
| ask: ask, | |
| ans: ans | |
| } | |
| }) | |
| } | |
| } |