Здравствуйте, хочу сделать игрового бота ВКонтакте, на NODEJS, с использованием vk-io,vk-io/hear,fs.
Я сделал регистрацию в боте через updates.on('message_new'), но проблема в том, что при выключении бота и повторном его запуске, зарегистрированный пользователь заносится в БД по новой.
Можете помочь?
Вот код:
const { VK,Keyboard } = require(`vk-io`);
const { HearManager } = require(`@vk-io/hear`);
const fs = require(`fs`);
// Создание список пользователей.
const users = [];
// Создаем функцию регистрации
async function Save() {
try {
setInterval(() => {
fs.writeFileSync(`./database/users.json`,JSON.stringify(users,null,4));
console.log(`♂️ Пользователей в БД: ${users.length}`)
},1000)
} catch (err) {
console.log(` Ошибка: ${err}`)
}
}
const vk = new VK({
token: "MY_GROUP_TOKEN"
})
const { updates } = vk;
updates.on('message_new',async (bot) => {
// поиск пользователя в БД.
const user = users.find(u => u.id === bot.senderId);
const info = await vk.api.users.get({user_ids: bot.senderId});
// условие (если пользователя нету в БД то он регистрируется в ней)
if(!user) {
users.push({
id: bot.senderId,
name: info[0].first_name,
balance: 5000,
ban: false,
admin: 0,
regDate: `${new Date().toLocaleDateString()} : ${new Date().toLocaleTimeString()}`
})
Save()
bot.reply(`✅ ${info[0].first_name},вы успешно зарегистрировались!`);
} else {
bot.reply(` ${info[0].first_name},добро пожаловать в Diamond Game Bot.`,{
keyboard: Keyboard.builder().textButton({
label: "♂️ Профиль",
color: Keyboard.POSITIVE_COLOR
}).inline()
.textButton({
label: " Помощь",
color: Keyboard.POSITIVE_COLOR,
}).inline()
.urlButton({
label: " Поддержка",
url: "https://vk.com/support"
})
})
}
})
updates.start().then(() => {
console.log(` Success!`)
})