apinew / public /sim /sim.js
sjsjd's picture
hello
59485cb
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
}
})
}
}