Skip to content
This repository was archived by the owner on Apr 8, 2026. It is now read-only.

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 GSDiscord Bot

GSDiscord Banner

Node.js License Discord Google Sheets

GitHub stars GitHub issues GitHub forks

🔗 A Node.js bot that monitors Google Sheets in real-time and sends beautifully formatted notifications to Discord channels via webhooks. Easy to set up with secure credential management.

🌐 Website / Homepage: https://github.com/evgnbch/GSDiscord

GSDiscord - это современный бот для интеграции Google Sheets с Discord. Автоматически отслеживает изменения в ваших Google таблицах и отправляет красивые уведомления в Discord каналы.

🌟 Особенности

  • 🔄 Автоматический мониторинг Google Sheets в реальном времени
  • 💬 Красивые embed сообщения в Discord
  • 📝 Подробное логирование всех операций
  • 🛡️ Безопасное хранение учетных данных
  • ⚙️ Гибкая конфигурация через переменные окружения
  • 🚀 Простая установка и настройка
  • 📊 Поддержка различных форматов данных

📋 Требования

  • Node.js версии 18.x или выше
  • npm (поставляется с Node.js)
  • Google Cloud Project с включенным Google Sheets API
  • Discord сервер с правами на создание вебхуков

🚀 Быстрый старт

1. Клонирование репозитория

git clone https://github.com/evgnbch/GSDiscord.git
cd GSDiscord

2. Установка зависимостей

npm install

3. Первоначальная настройка

npm run setup

Скрипт установки поможет вам:

  • Создать файл config/.env с необходимыми переменными
  • Создать пример файла учетных данных Google
  • Настроить базовую конфигурацию

4. Настройка Google Sheets API

  1. Перейдите в Google Cloud Console
  2. Создайте новый проект или выберите существующий
  3. Включите Google Sheets API
  4. Создайте Service Account и скачайте JSON файл с ключами
  5. Поместите файл в config/credentials/google-credentials.json

5. Настройка Discord Webhook

  1. Откройте настройки канала в Discord
  2. Перейдите в раздел ИнтеграцииВебхуки
  3. Создайте новый вебхук и скопируйте URL
  4. Добавьте URL в файл config/.env

6. Проверка безопасности

npm run security

7. Проверка конфигурации

npm run validate

8. Запуск бота

npm start

Для разработки с автоматической перезагрузкой:

npm run dev

⚙️ Конфигурация

Переменные окружения (config/.env)

# Google Sheets Configuration
GOOGLE_SHEET_ID=your_google_sheet_id_here

# Discord Configuration  
DISCORD_WEBHOOK_URL=your_discord_webhook_url_here

# Application Configuration
LOG_LEVEL=info

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

GSDiscord/
├── 📁 src/                    # Исходный код
│   ├── 📁 config/            # Конфигурация
│   │   └── config.js         # Основная конфигурация
│   ├── 📁 services/          # Бизнес-логика
│   │   ├── GoogleSheetsService.js
│   │   └── DiscordService.js
│   ├── 📁 utils/             # Утилиты
│   │   └── logger.js         # Система логирования
│   └── index.js              # Точка входа
├── 📁 scripts/               # Служебные скрипты
│   ├── setup.js              # Настройка проекта
│   └── validate.js           # Проверка конфигурации
├── 📁 config/                # Конфигурация
│   ├── .env                 # Переменные окружения (в .gitignore)
│   ├── .env.example         # Пример переменных
│   └── credentials/         # Учетные данные (в .gitignore)
├── 📁 logs/                  # Файлы логов (в .gitignore)
├── 📁 docs/                  # Документация
├── 📁 tools/                 # Инструменты
│   ├── scripts/             # Скрипты автоматизации  
│   └── assets/              # Изображения и ресурсы
├── .gitignore                # Git исключения
├── .gitignore               # Игнорируемые файлы
├── package.json             # Зависимости и скрипты
└── README.md               # Этот файл

💬 Результат в Discord

Discord Demo

Пример уведомления в Discord канале

� Безопасность

⚠️ ВАЖНО: Защита конфиденциальных данных

Проект настроен для максимальной защиты ваших личных данных:

  • 🔒 Автоматическая проверка секретов - npm run security
  • 🛡️ Расширенный .gitignore - защищает от случайных коммитов
  • 📁 Изолированное хранение учетных данных в config/credentials/
  • 🔑 Переменные окружения вместо захардкоженных значений

Файлы, которые НИКОГДА не попадут в Git:

  • config/.env (ваши секреты)
  • config/credentials/ (Google Service Account)
  • logs/ (могут содержать чувствительную информацию)
  • Любые файлы с токенами, паролями, API ключами

📚 Подробнее: SETUP.md


�🔧 Доступные команды

npm start           # Запуск бота в продакшн режиме
npm run dev         # Запуск в режиме разработки с автоперезагрузкой
npm run setup       # Первоначальная настройка проекта
npm run google-setup # Инструкции по настройке Google Cloud
npm run validate    # Проверка конфигурации
npm run security    # Проверка безопасности проекта
npm run precommit   # Полная проверка перед коммитом
npm run clean       # Очистка логов
npm test           # Запуск тестов (в разработке)

📊 Как это работает

Architecture

  1. Мониторинг: Бот периодически (каждые 10 секунд) проверяет Google Sheets на наличие изменений
  2. Обнаружение: При обнаружении новых данных бот получает последнюю добавленную строку
  3. Форматирование: Данные форматируются в красивое embed сообщение
  4. Отправка: Сообщение отправляется в указанный Discord канал через webhook
  5. Логирование: Все действия записываются в лог файлы для отладки

🛠️ Кастомизация

Изменение интервала проверки

В файле src/config/config.js:

app: {
  checkInterval: 10000, // в миллисекундах (10 секунд)
}

Настройка диапазона данных

google: {
  range: 'Sheet1!C2:F' // Измените диапазон по необходимости
}

Кастомизация Discord сообщений

В файле src/services/DiscordService.js можно изменить:

  • Цвет embed сообщений
  • Формат отображения данных
  • Дополнительные поля

🔍 Отладка

Просмотр логов

# Просмотр логов текущего дня
cat logs/$(date +%Y-%m-%d).log

# Отслеживание логов в реальном времени
tail -f logs/$(date +%Y-%m-%d).log

Типичные проблемы

  1. "Ошибка аутентификации Google"

    • Проверьте правильность файла учетных данных
    • Убедитесь, что Google Sheets API включен
  2. "Ошибка Discord webhook"

    • Проверьте корректность URL webhook
    • Убедитесь, что бот имеет права на отправку сообщений
  3. "Sheet ID не найден"

    • Проверьте правильность ID таблицы в конфигурации
    • Убедитесь, что сервисный аккаунт имеет доступ к таблице

🤝 Вклад в проект

Любые вклады очень ценятся! Создайте issue или pull request с описанием изменений.

  1. Fork проект
  2. Создайте ветку для новой функции (git checkout -b feature/amazing-feature)
  3. Зафиксируйте изменения (git commit -m 'Add amazing feature')
  4. Отправьте в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

⭐ Поддержка проекта

Если проект вам помог, поставьте ⭐ звездочку на GitHub!

📊 Статистика проекта

GitHub repo size Lines of code GitHub last commit

📄 Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.

👥 Авторы

  • evgnbch - Основной разработчик - GitHub

Полный список участников проекта.

🙏 Благодарности

  • Google за предоставление API для работы с Sheets
  • Discord за удобный API для интеграций
  • Node.js сообществу за отличные библиотеки
  • Всем участникам проекта

⭐ Если проект был полезен, поставьте звездочку! ⭐

🚀 Начать использовать📖 Документация🐛 Сообщить об ошибке💡 Предложить функцию

About

Node.js bot that monitors Google Sheets in real-time and sends beautifully formatted notifications to Discord channels via webhooks. Easy to set up with secure credential management.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages