Есть сервер который берет из БД данные(поля) пользователя и отправляет GET запросом, а фронтенд принимает эти данные и показывает пользователю. Сейчас если открыть бота и перейти на сайт (фронтенд) показываются данные только первого кто открыл бота, пример: в БД есть Петя у которого 5 яблок и Саня у которого 10 яблок, Петя и Саня открывают сайт(через бота) Петя видит 5 яблок, а Саня почему то видит тоже 5 яблок. Задача: Хоть 1000 пользователей откроют сайт через бота что бы каждый видел свое значение полученное из сервера(а сервер в свое время из БД).
Backend
const express = require('express')
const TelegramApi = require('node-telegram-bot-api')
const mysql = require('mysql2')
const PORT = process.env.PORT || 3002
const {useState, useEffect} = require('react')
const bodyParser =require('body-parser')
const cors = require('cors')
const app = express()
app.use(bodyParser())
app.listen(PORT, () =>{
console.log(`Сервер запущен на ${PORT} порту`)
})
const WebApps = "https://backend-drc.ru"
const token = ""
const connection = mysql.createConnection({
host: "",
user: "",
database: "",
password: ""
})
connection.connect(function(err){
if(err) {
return console.error(`Ошибка подключения! Код: `+ err)
}else{
console.log(`Покдлючение к БД успешно установлено!`)
}
})
const bot = new TelegramApi(token, {polling: true})
bot.on('message', async msg =>{
const text = msg.text;
const uggs = msg.chat.username;
const chatids = msg.chat.id;
let Users = Boolean
let UserActive = null
if(text === '/start'){
await connection.execute("SELECT * FROM `users` WHERE `users`.`chatids` = "+chatids, (err, results) =>{
if(err){
console.log(err)
return;
}
if(results.length <= 0){
console.log(results)
Users = false
}
else{
Users = true
UserActive = results[0].chatids
console.log(results)
}
console.log(UserActive)
})
await bot.sendPhoto(chatids, "Logo.png")
await bot.sendMessage(chatids,"Dragon Village is build",{
reply_markup: {
inline_keyboard:[
[{text:'Go to Dragon village', web_app:{url: WebApps}}]
]
}
})
}
app.get('/back', (req, res) => {
connection.execute("SELECT `Dragons` FROM `users` WHERE `users`.`chatids` ="+chatids, (err, results) => {
if (err) {
console.log(err)
return;
}
res.json({
dragons: results[0].Dragons
});
console.log(results)
});
});
app.get('/back5',(req, res) =>{
connection.execute("SELECT `DRGcoin` FROM `users` WHERE `users`.`chatids` ="+chatids, (err, results) => {
if (err) {
console.log(err)
return;
}
res.json({
drg: results[0].DRGcoin
});
});
})
app.get('/back6',(req, res) =>{
connection.execute("SELECT `DRCcoin` FROM `users` WHERE `users`.`chatids` ="+chatids, (err, results) => {
if (err) {
console.log(err)
return;
}
res.json({
drc: results[0].DRCcoin
})
//console.log()
});
})
app.post('/chatback', (req, res) => {
let data = [req.body.Hunters]
const zapros = "UPDATE `users` SET `Dragons`=? WHERE `users`.`usnames` =?"
const params = [data, uggs]
// const fff = itog
connection.execute(zapros,params,(err, results) =>{
!err ? res.json(results) : res.json(err)
})
console.log(JSON.stringify(data))
})
/*const ins = "INSERT INTO `users` (`idteleg`,`chatids`, `usnames`, `Dragons`, `Hunters`, `Defends`, `DRCcoin`, `DRGcoin`) VALUES (NULL,?,?,10,0,0,10,100)"
const into = [chatids, uggs]
await connection.execute(ins, into,(err, results) =>{
})
console.log('Пользователь создан!')*/
app.get('/back1',(req, res) =>{
connection.execute("SELECT `totBank` FROM `stage`",(err, results) => {
if (err) {
console.log(err)
return;
}
res.json({
banks: results[0].totBank
});
});
})
app.get('/back2',(req, res) =>{
connection.execute("SELECT `Seasons` FROM `stage`", (err, results) => {
if (err) {
console.log(err)
return;
}
res.json({
seasons: results
});
});
})
app.get('/back3',(req, res) =>{
connection.execute("SELECT `toStage` FROM `stage`", (err, results) => {
if (err) {
console.log(err)
return;
}
res.json({
stages: results[0].toStage
});
});
})
app.get('/back4',(req, res) =>{
connection.execute("SELECT `tOnline` FROM `stage`", (err, results) => {
if (err) {
console.log(err)
return;
}
res.json({
online: results[0].tOnline
});
});
})
function ValidUser() {
const sasa = "SELECT * FROM `users` WHERE `users`.`usnames` = ?"
const ssss = [uggs]
connection.execute(sasa,ssss, (err, results) =>{
if(err){
console.log(err)
return;
}
const param = results[0].chatids
console.log(results)
return param
})
}
})
app.use(cors())
Пример что принимает и отображает фронт:
import './LogoBar.scss'
import React, {useState, useEffect} from 'react'
export const LogoBar =()=>{
//---------------------------------- DRG ------------------------------------
const [data1, setData1] = useState(null)
useEffect(() => {
fetch('back5')
.then(res => res.json())
.then(res => setData1(res.drg))
}, [])
//---------------------------------- DRG ------------------------------------
const [data2, setData2] = useState(null)
useEffect(() => {
fetch('back6')
.then(res => res.json())
.then(res => setData2(res.drc))
}, [])
//---------------------------------- Показ ----------------------------------
return(
<div className="LogoBar">
<div className="LogoBar_label"> Online:{</div>
<div className="MenuButton" onClick={ClickedMenu}></div>
<div className="MenuLogo"></div>
<div className="LogoBar_info">
<div className="LogoBar_balance1"> DRG: {data1}</div>
<div className="LogoBar_balance2"> DRC: {data2}</div>
</div>
</div>
)
}