Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.08.2018, 06:48
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

Номерация алфавита и перевод фразы в код. Сравнение с другими сообщениями в таблице
Код
client.on("message",  request => {
    var NULL = "YOURBRAINS";
    const REQUIRED_PREFIX='?';
    const message=request.content.toString().trim();

    if(message.substr(0,1)!==REQUIRED_PREFIX)
    return false
       request.reply('Bad request');
    
    sql.run('INSERT INTO вопросы (вопрос) VALUES (?)',[message]);
});
Нужно чтобы сообщение переделывалось в код 00,00,00 подобно этому. А сами цифры будут обозначать буквы в алфавите
var а = 01. Так переходили сообщения и сравнивались с другими в таблице до всех совпадений.
Ответить с цитированием
  #2 (permalink)  
Старый 09.08.2018, 09:56
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,363

SorryHanzoMain, если нужно проверить уникальность сообщения, то можно перед вставкой данных осуществить поиск этого вставляемого вопроса в таблице https://www.w3schools.com/sql/sql_where.asp.
Еще можно добавить полю "вопрос" уникальный ключ и модифицировать сам insert-запрос https://dev.mysql.com/doc/refman/5.5/en/insert.html

Последний раз редактировалось Nexus, 09.08.2018 в 10:00.
Ответить с цитированием
  #3 (permalink)  
Старый 09.08.2018, 13:12
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

Nexus
Да, всё почти получилось. Правда есть одно но. Как обозначить выполнение действие и не выполненное?
sql.get(`SELECT * FROM вопросы WHERE вопрос ='${message}'`).then(() => {
        if (2) {
            sql.run('INSERT INTO вопросы (вопрос) VALUES (?)', [message]).then(() => {
                request.reply("Извини, я этого пока не знаю, но это не надолго")
            })
            if() {
                sql.get(`SELECT * FROM вопросы WHERE trueorfalse ='${да}'`).then(да => {
                        if (да) {
                            request.reply("Да")
                        } else {
                            sql.get(`SELECT * FROM вопросы WHERE trueorfalse ='${нет}'`).then(нет => {
                                if (нет) {
                                    request.reply("Нет")
                                };
                            })

                        }
                    }




                )
            }
        }
    })
})

Конкретно здесь
if (2) {
            sql.run('INSERT INTO вопросы (вопрос) VALUES (?)', [message])
Выполнено ли действие
sql.get(`SELECT * FROM вопросы WHERE вопрос ='${message}'`)

И
if() {
                sql.get(`SELECT * FROM вопросы WHERE trueorfalse ='${да}'`)
Действие не выполнено.
Ответить с цитированием
  #4 (permalink)  
Старый 09.08.2018, 13:55
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,363

SorryHanzoMain, не понимаю.
Что у вас происходит с кодом?
Часть запросов создается с использованием т.н. placeholder'ов, часть без.
Если driver бд умеет работать с плейсхолдерами, то используйте их.

Что у вас происходит с полями таблиц базы данных?
Почему часть полей имеет название содержащее кириллицу, часть латиницу?
Лучше именовать поля латиницей, если очень хочется кириллицу, то пусть так, но не стоит их смешивать.

Что с условиями в строках 2 и 6?
Условие в строке 2 всегда будет выполнено, в строке 6 синтаксическая ошибка.

Переменные кириллицей...
stackoverflow.com

Если в таблице нужно хранить значение "да" или "нет", то стоит создать поле с типом "tinyint".
https://dev.mysql.com/doc/refman/8.0...ger-types.html
Значением для поля должно быть строго 0 или 1, где 1 это "да", а 0 - "нет".

Что вы пытаетесь сделать начиная с шестой строки для меня загадка.
Ответить с цитированием
  #5 (permalink)  
Старый 09.08.2018, 14:33
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

Сообщение от Nexus Посмотреть сообщение
SorryHanzoMain, не понимаю.
Что с условиями в строках 2 и 6?
Во второй строке должно быть выражение, что это действие будет выполнено если совпадения не найдены.
В 6 строке должно быть это действие будет выполнено если совпадение найдено. После шестой строки идёт поиск сообщений да(после заменю на 1 и 0) и нет. Если да, то в чат да, если нет, то и в чат нет.
Ответить с цитированием
  #6 (permalink)  
Старый 09.08.2018, 14:56
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,363

SorryHanzoMain,
sql.get('SELECT * FROM questions WHERE question LIKE ?',[message]).then(res=>{
    console.log(sql.constructor.name,...arguments);
});

Что в консоли отобразится?
Ответить с цитированием
  #7 (permalink)  
Старый 09.08.2018, 15:15
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

Сообщение от Nexus Посмотреть сообщение
SorryHanzoMain,
sql.get('SELECT * FROM questions WHERE question LIKE ?',[message]).then(res=>{
    console.log(sql.constructor.name,...arguments);
});

Что в консоли отобразится?
Database {} function require(path) {
try {
exports.requireDepth += 1;
return mod.require(path);
} finally {
exports.requireDepth -= 1;
}
} Module {
id: '.',
exports: {},
parent: null,
filename: 'C:\\Games\\Bot\\index.js',
loaded: true,
children:
[ Module {
id: 'C:\\Games\\Bot\\node_modules\\discord.js\\src\\in dex.js',
exports: [Object],
parent: [Circular],
filename: 'C:\\Games\\Bot\\node_modules\\discord.js\\src\\in dex.js',
loaded: true,
children: [Array],
paths: [Array] },
Module {
id: 'C:\\Games\\Bot\\config.json',
exports: [Object],
parent: [Circular],
filename: 'C:\\Games\\Bot\\config.json',
loaded: true,
children: [],
paths: [Array] },
Module {
id: 'C:\\Games\\Bot\\config_quest.json',
exports: [Object],
parent: [Circular],
filename: 'C:\\Games\\Bot\\config_quest.json',
loaded: true,
children: [],
paths: [Array] },
Module {
id: 'C:\\Games\\Bot\\node_modules\\sqlite\\main.js',
exports: [Object],
parent: [Circular],
filename: 'C:\\Games\\Bot\\node_modules\\sqlite\\main.js',
loaded: true,
children: [Array],
paths: [Array] },
Module {
id: 'C:\\Games\\Bot\\node_modules\\overwatch-js\\index.js',
exports: [Object],
parent: [Circular],
filename: 'C:\\Games\\Bot\\node_modules\\overwatch-js\\index.js',
loaded: true,
children: [Array],
paths: [Array] },
Module {
id: 'C:\\Games\\Bot\\node_modules\\discord-anti-spam\\anti_spam.js',
exports: [Function],
parent: [Circular],
filename: 'C:\\Games\\Bot\\node_modules\\discord-anti-spam\\anti_spam.js',
loaded: true,
children: [],
paths: [Array] } ],
paths:
[ 'C:\\Games\\Bot\\node_modules',
'C:\\Games\\node_modules',
'C:\\node_modules' ] } C:\Games\Bot\index.js C:\Games\Bot
Ответить с цитированием
  #8 (permalink)  
Старый 09.08.2018, 15:30
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,363

SorryHanzoMain, бесполезная информация)
Какой драйвер бд используете?
Ответить с цитированием
  #9 (permalink)  
Старый 09.08.2018, 15:32
Аспирант
Отправить личное сообщение для SorryHanzoMain Посмотреть профиль Найти все сообщения от SorryHanzoMain
 
Регистрация: 01.08.2018
Сообщений: 34

Что значит драйвер? Я использую таблицу SQLite
Ответить с цитированием
  #10 (permalink)  
Старый 09.08.2018, 15:39
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,363

SorryHanzoMain, как переменную "sql" получили?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL js перевод входящего текста в Unicode и сравнение его с данными в таблице SorryHanzoMain Node.JS 0 07.08.2018 20:22