[DISCORD.JS + MYSQL] Problema ao registrar data no Banco de Dados

2 respostas
nodejsjavascriptmysql
V

Olá, estou criando um sistema de resgate diário, onde o usuário ganha moedas e XP em um BOT para Discord, quando utilizo o comando ele pega a data porém ao registrar no banco de dados ele registra como 0000-00-00, confira o código do sistema abaixo!

if(cmd === ${Prefixo}resgatar){
if (message.channel.id !== ${CanalCMD} && ${CanalCMD} !== nenhum) return message.channel.send(Hey ${message.author.username} você só pode executar este comando no canal <#${CanalCMD}>)

var sqlrgt = `SELECT Resgates, ResgatarTimer, Moedas, XP FROM Usuarios WHERE UserID = ${message.author.id}`;
        con.query(sqlrgt, function (err, result, fields) {
            if (err) throw err;
            var Resgates = result[0].Resgates;
            var ResgatarTimer = result[0].ResgatarTimer;
            var Moedas = result[0].Moedas;
            var XP = result[0].XP;
            console.log(`Usuário localizado com sucesso!`);

            const Horario = ResgatarTimer;
            const NewHorario = moment.utc(Date.now()).tz('America/Sao_Paulo').format('YYYY-MM-DD');
            var NewResgate = Resgates + 1;
            var NewMoedas = Moedas + 10;
            var NewXP = XP + 5;
            console.log(NewHorario)

            if(Horario != NewHorario){
                var sqlrgt1 = `UPDATE Usuarios SET Moedas = ${NewMoedas}, XP = ${NewXP}, ResgatarTimer = ${NewHorario}, Resgates = ${NewResgate} WHERE UserID = ${message.author.id}`;
                con.query(sqlrgt1, function (err, result, fields) {
                    if (err) throw err;
                    console.log(`Usuário atualizado com sucesso!`);

                message.channel.send(`Hey ${message.author} você resgatou seu prêmio diário com sucesso!`)
                message.delete().catch();
                })
            }
            if(Horario === NewHorario){
                message.channel.send(`Hey ${message.author} você  resgatou seu prêmio diário, espere até amanhã!`)
                message.delete().catch();
            }
        })}

Ele pega a data de quando executou o comando no const NewHorario = moment.utc(Date.now()).tz('America/Sao_Paulo').format('YYYY-MM-DD'); e salva no banco de dados no:
if(Horario != NewHorario){

var sqlrgt1 = `UPDATE Usuarios SET Moedas = ${NewMoedas}, XP = ${NewXP}, ResgatarTimer = ${NewHorario}, Resgates = ${NewResgate} WHERE UserID = ${message.author.id}`;

                    con.query(sqlrgt1, function (err, result, fields) {

                        if (err) throw err;

                        console.log(`Usuário atualizado com sucesso!`);

                    message.channel.send(`Hey ${message.author} você resgatou seu prêmio diário com sucesso!`)

                    message.delete().catch();

                    })

                }

Eu dei um console.log no NewHorario e a data está certa, como é possível ver na imagem abaixo!
image

Porém no banco de dados é registrado “0000-00-00” como na imagem abaixo.
image

A coluna “ResgatarTimer” foi criado do tipo “DATE”!

Alguém poderia me ajudar, pois tenho outro bot que faz a mesma coisa e salva no Firebase, porém funciona certinho, ou seja, o código está certo, porém não sei porque não salva a data certa no banco de dados…

2 Respostas

I

No caso você quer atualizar (UPDATE) e não adicionar (INSERT) um registro certo? O UserID indicado existe?

V

Quando o usuário entra no servidor é adicionado automaticamente, neste caso já tem o registro, por isso estou utilizando o UPDATE, ou seja, sim o UserID indicado é existente!

Criado 17 de dezembro de 2019
Ultima resposta 17 de dez. de 2019
Respostas 2
Participantes 2