Обработчик сообщений
Есть код
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, время: 03:43. |