Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как сделать восстановление энергии каждые 5 минут в игровом чат-боте? (Данные об игроках хранятся в .json файле)

Отрывок из кода:
1: const user_data = require("./user_data.json");
2: const fs = require("fs");
3: let uid = message.author.id;
4: let u =
fs.writeFile('./user_data.json', JSON.stringify(user_data), (err)=>{
if(err) console.log(err);
5: if(!user_data[uid]) {
user_data[uid] {
HP: 100,
maxHP: 100,
energy: 100,
maxEnergy: 100
}
}

В действиях тратится энергия и в боях жизни, но они восстанавливаются после каждого сообщения.
Как сделать восстановление энергии и жизней не после каждого сообщения, а каждые 5 минут для всех uid, которые есть в .json файле?

JavascriptРабота с файлами+2
Святослав Дудин
  ·   · 674
Профессиональная разработка телеграм ботов для...  · 9 июл 2020  · tg-dev.ru
Отвечает
Сергей

Для задач которые должны выполнятся каждые {n} минут/часов/дней используется планировщик задач. В linux системах это cron.

  • Разработать скрипт, который будет редактировать нужные данные
  • В крон указать выполнение скрипта с периодичностью в 5 минут.

Пример для php (возможно у вас node или python например) скрипта:

<?php
    /**
     * /var/www/html/my_game/reset_energy.php
     */

    // читаем информацию из json
    $filename = {ваш файл игрока};
    $user_json = json_encode(file_get_content($filename));

    // тут берем ваше поле с энергией, и записываем новое значение
    $user_json->energy = 100;

    // сохраняем пользователя с новыми данными
    file_put_content($filename, $user_json);

И настроить планировщик (для примера linux системы)

Для начала вызовите команду для редактирования задач планировщика:

crontab -e 

Добавьте новую задачу в конец файла указав путь до файла reset_energy.php

*/5 * * * php /var/www/html/my_game/reset_energy.php

Подробнее про планировщик можете прочитать тут к примеру https://losst.ru/nastrojka-cron.

Я написал простые методы, вы же используйте это под себя. Соответственно в своем коде заранее закомментируйте или удалите строку "energy: 100" с функционалом восстановления при отправки сообщения. Ваш код увидел после написания ответа.

Закомментируйте все строки где встречается "energy: 100", кроме строки когда создается новый пользователь (иначе подозреваю, что могут быть ошибки). Для восстановления энергии игрока, используйте скрипт который будет срабатывать по планировщику. Если игроков не много, можете в цикле пройтись по всем игрокам, и у кого energy == 0 обновить данные. Тут уже зависит от бизнес логики вашей игры.

Профессиональная разработка телеграм ботов для бизнесаПерейти на tg-dev.ru
Комментарий был удалён за нарушение правил