Регистрация Аутентификация и Авторизация tg web app
делал веб сайт к нему есть сервер. Встроил это все в бота telegram. При нажатии на кнопку открывает сайт. Проблема: надо показать каждому пользователю свои данные из БД. Не знаю как это реализовать, пытался по chatId передать каждому свое значение но у всех на фронте показывает данные только одного пользователя. Код возможно страшный не обращайте внимание я новичок. Задача: Вывести уникальному пользователю его данные из бд
Данные для подключения убрал так как Бд на облачном и с других IP не даст подключиться все равно
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())
Поля season stage и totbank online общие, а dragons DRCcoin DRGcoin индивидуальные
Взял из бд нужный chatId и делал проверку на сравнение тоже не работает. Frontend https://github.com/O4ko-Samp/StackOwer.git Буду ооочень рад намекам и помощи. PS: регистрации нет, при нажатии кнопки в боте надо сразу отображать его данные Надо в полях Dragons, DRGcoin, DRCcoin каждый пользователь видел свои значения из БД. А у меня получается что один активизировал бота и все его значение показывается всем.