Game Hunt Бот 🎮

Безсерверний бот, який автоматично відстежує безкоштовні роздачі ігор на популярних платформах, таких як **Epic Games**, **Steam** та **PlayStation Plus**. Він розроблений для запуску за розкладом, перевірки нових пропозицій та надсилання своєчасних, гарно відформатованих сповіщень у Telegram-канал, щоб ви ніколи не пропустили роздачу.
Репозиторій

Можливості

✔Моніторинг кількох платформ: Відстежує безкоштовні ігри на Epic Games, Steam та PlayStation Plus (місячні ігри та ігри з каталогу).
✔Сповіщення в Telegram: Надсилає зрозумілі, відформатовані повідомлення у вказаний Telegram-канал про анонси нових ігор.
✔Ручний запуск: Можливість миттєво запустити перевірку за допомогою команди `/check` в Telegram (тільки для адміністратора).
✔Постійне сховище: Використовує Upstash (Redis) для зберігання даних у продакшені та локальний JSON-файл для розробки, що запобігає повторним сповіщенням.
✔Безсерверне розгортання: Створено для роботи як економічно ефективна безсерверна функція на таких платформах, як Vercel.
✔Перевірки за розкладом: Використовує cron-завдання (налаштовані у `vercel.json`) для автоматизації періодичних перевірок нових роздач.
✔Гнучке налаштування: Легко вмикайте або вимикайте модулі платформ та налаштовуйте поведінку бота через центральний файл налаштувань.

Використані технології

JavaScript
Node.js
Vercel
Upstash
Axios

Структура проєкту

game-hunt/
├── 📁 api/                   # Вхідна точка для безсерверної функції Vercel
│   ├── 📄 check-games.js     # Головний обробник (для cron-завдань)
│   └── 📄 webhook.js         # Обробник команд від Telegram (напр., /check)
├── 📁 config/                 # Файли конфігурації
│   └── 📄 settings.js        # Перемикачі модулів та налаштування бота
├── 📁 data/                  # Локальне сховище даних для розробки
│   └── 📄 games.json         # Зберігає поточні та попередні списки ігор
├── 📁 lib/                   # Основні модулі з логікою
│   ├── 📄 epic-games.js      # Логіка для отримання даних з Epic Games
│   ├── 📄 steam.js           # Логіка для отримання даних зі Steam
│   ├── 📄 ps-plus.js         # Логіка для отримання даних з PlayStation Plus
│   ├── 📄 storage.js        # Обробляє читання/запис у KV або локальний JSON
│   ├── 📄 kv.js              # Конфігурація клієнта Upstash Redis
│   └── 📄 telegram.js       # Обробляє надсилання повідомлень у Telegram
├── 📄 test-all.js            # Комплексний скрипт для локального тестування
├── 📄 .env.example           # Приклад змінних середовища
├── 📄 vercel.json            # Конфігурація розгортання та cron-завдань Vercel
└── 📄 package.json           # Залежності та скрипти проєкту