Задать вопрос
@timofey2007

Как сделать регистрацию без слета через fs?

Здравствуйте, хочу сделать игрового бота ВКонтакте, на 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!`)
})
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
yarkov
@yarkov
Помог ответ? Отметь решением.
Используй БД и не изобретай велосипед
Ответ написан
Комментировать
@maksam07
зарегистрированный пользователь заносится в БД по новой

Немного сложно это назвать прям хорошей "БД", но кто-то и с такого начинает.
Я сделал регистрацию в боте

Если ее сделали действительно вы, то вы явно видите, что у вас идет ТОЛЬКО сохранение в "бд", но ни разу не получение данных. Один из вариантов, при старте бота, заполнять users данными из "БД"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы