Обработчик сообщений
Есть код
client.on("message", request => {
const REQUIRED_PREFIX = '?';
const message = request.content.toString().trim();
if (message.substr(0, 1) !== REQUIRED_PREFIX)
return false
sql.get('SELECT * FROM вопросы WHERE вопрос LIKE ?', [message]).then(string => {
if(string){
sql.get('SELECT * FROM вопросы WHERE вопрос LIKE ?', [message]).then(string => {
if(string){
sql.get(`SELECT * FROM вопросы WHERE вопрос = '${message}' AND trueorfalse LIKE ?`, ['unfined']).then(string => {
if(string){
request.reply("Я этого ещё пока не знаю, но это не надолго")
}
if(!string){
sql.get(`SELECT * FROM вопросы WHERE вопрос = '${message}' AND trueorfalse LIKE ?`, ['true']).then(string => {
if(string){
request.reply("Да")
}
if(!string)(
request.reply("Нет")
)
.catch(error => request.reply(error) )
})
}
})
}
})
}
if(!string){
sql.run('INSERT INTO вопросы (вопрос) VALUES (?)',[message])
}
})})
Он работает прекрасно, но он воспринимает все сообщения и их обрабатывает. Нужно, чтобы происходила обработка сообщений типа слово - описание. Сделать это сложно, по этому нужно, чтобы обработчик срабатывал если в сообщении есть - и слова русского алфавита. |
Цитата:
В вашем коде 4 раза из базы данных извлекаются одни и те же данные. Можно получить результат единожды, дальше вместо сношения БД работать с полученной коллекцией данных (ниже пример кода). Судя по всему, метод sql.get возвращает Promise, следовательно даже с таким обильным кол-вом запросов код можно было написать с значительно меньшим кол-вом уровней вложенности. Цитата:
client.on("message", request => {
const REQUIRED_PREFIX = '?';
const message = request.content.toString().trim();
if (message.substr(0, 1) !== REQUIRED_PREFIX)
return;
sql.get('SELECT * FROM вопросы WHERE вопрос LIKE ?', [message]).then(results => {
if (!results)
return void sql.run('INSERT INTO вопросы (вопрос) VALUES (?)', [message]);
let response = 'Нет',
hasUndefined = false,
hasTrue = false;
//хз что-такое results, поэтому
[].forEach.call(results, row => {
if (row.trueorfalse === 'unfined')
hasUndefined = true;
else if (row.trueorfalse === 'true')
hasTrue = true;
});
if (hasUndefined)
response = 'Я этого ещё пока не знаю, но это не надолго';
else if (hasTrue)
response = 'Да';
request.reply(response);
});
});
|
Цитата:
|
| Часовой пояс GMT +3, время: 00:40. |