🔗 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 сервер с правами на создание вебхуков
git clone https://github.com/evgnbch/GSDiscord.git
cd GSDiscordnpm installnpm run setupСкрипт установки поможет вам:
- Создать файл
config/.envс необходимыми переменными - Создать пример файла учетных данных Google
- Настроить базовую конфигурацию
- Перейдите в Google Cloud Console
- Создайте новый проект или выберите существующий
- Включите Google Sheets API
- Создайте Service Account и скачайте JSON файл с ключами
- Поместите файл в
config/credentials/google-credentials.json
- Откройте настройки канала в Discord
- Перейдите в раздел Интеграции → Вебхуки
- Создайте новый вебхук и скопируйте URL
- Добавьте URL в файл
config/.env
npm run securitynpm run validatenpm startДля разработки с автоматической перезагрузкой:
npm run dev# 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=infoGSDiscord/
├── 📁 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 # Этот файл
Проект настроен для максимальной защиты ваших личных данных:
- 🔒 Автоматическая проверка секретов -
npm run security - 🛡️ Расширенный .gitignore - защищает от случайных коммитов
- 📁 Изолированное хранение учетных данных в
config/credentials/ - 🔑 Переменные окружения вместо захардкоженных значений
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 # Запуск тестов (в разработке)- Мониторинг: Бот периодически (каждые 10 секунд) проверяет Google Sheets на наличие изменений
- Обнаружение: При обнаружении новых данных бот получает последнюю добавленную строку
- Форматирование: Данные форматируются в красивое embed сообщение
- Отправка: Сообщение отправляется в указанный Discord канал через webhook
- Логирование: Все действия записываются в лог файлы для отладки
В файле src/config/config.js:
app: {
checkInterval: 10000, // в миллисекундах (10 секунд)
}google: {
range: 'Sheet1!C2:F' // Измените диапазон по необходимости
}В файле src/services/DiscordService.js можно изменить:
- Цвет embed сообщений
- Формат отображения данных
- Дополнительные поля
# Просмотр логов текущего дня
cat logs/$(date +%Y-%m-%d).log
# Отслеживание логов в реальном времени
tail -f logs/$(date +%Y-%m-%d).log-
"Ошибка аутентификации Google"
- Проверьте правильность файла учетных данных
- Убедитесь, что Google Sheets API включен
-
"Ошибка Discord webhook"
- Проверьте корректность URL webhook
- Убедитесь, что бот имеет права на отправку сообщений
-
"Sheet ID не найден"
- Проверьте правильность ID таблицы в конфигурации
- Убедитесь, что сервисный аккаунт имеет доступ к таблице
Любые вклады очень ценятся! Создайте issue или pull request с описанием изменений.
- Fork проект
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Если проект вам помог, поставьте ⭐ звездочку на GitHub!
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
- evgnbch - Основной разработчик - GitHub
Полный список участников проекта.
- Google за предоставление API для работы с Sheets
- Discord за удобный API для интеграций
- Node.js сообществу за отличные библиотеки
- Всем участникам проекта
⭐ Если проект был полезен, поставьте звездочку! ⭐
🚀 Начать использовать • 📖 Документация • 🐛 Сообщить об ошибке • 💡 Предложить функцию