Discord-бот для управления задачами разработчиков с интеграцией Google Таблиц. Предназначен для организации процесса разработки в команде.
- Просмотр своих задач — команда
/my_tasksпоказывает все активные задачи - Завершение задач — удобный dropdown для выбора задачи + отправка файла/ссылки
- Уведомления в ЛС — бот отправляет сообщения о принятии или отклонении задачи
- Проверка идей — кнопки "Принять" и "Отклонить" для новых идей
- Настройка задач — выбор роли, приоритета, дедлайна при принятии идеи
- Проверка выполнения — кнопки для принятия или отклонения завершённой задачи
- Все данные в Google Таблице — ничего не теряется при перезагрузке
- Автоматические заголовки — бот сам создаёт нужные колонки в таблице
- Уведомления разработчикам — ЛС с результатом проверки
- Каналы — автоматическая публикация в нужных каналах
- Python 3.8+
- Raspberry Pi Zero 2W (или любой другой сервер)
- Discord Bot Token
- Google Sheets API credentials
- Google Таблица
git clone <repository-url>
cd MSKGDevoloperManagerpython -m venv .venv
source .venv/bin/activate # Linux/Mac
# или
.venv\Scripts\activate # Windowspip install -r requirements.txtСоздайте файл .env в корне проекта:
DISCORD_TOKEN=your_discord_bot_token_here
SHEET_ID=your_google_sheet_id_here
GUILD_ID=your_guild_id_here # опционально, для тестов- Создайте новую Google Таблицу
- Скопируйте её ID из URL (между
/d/и/edit) - Вставьте ID в
.envкакSHEET_ID - Скачайте credentials.json из Google Cloud Console:
- Создайте проект в Google Cloud Console
- Включите Google Sheets API и Google Drive API
- Создайте Service Account
- Скачайте JSON-ключ и сохраните как
credentials.jsonв корне проекта
- Откройте доступ таблице для Service Account:
- Откройте таблицу → Поделиться
- Добавьте email из credentials.json (поле
client_email) - Дайте права редактора
В файле config.py укажите ID каналов:
IDEAS_CHANNEL_ID = 123456789012345678 # Для предложений идей
APPROVAL_CHANNEL_ID = 123456789012345679 # Для проверки идей руководством
TASKS_CHANNEL_ID = 123456789012345680 # Для опубликованных задачКак получить ID канала:
- В Discord включите режим разработчика (Настройки → Дополнительно → Режим разработчика)
- ПКМ по каналу → Копировать ID
| Команда | Описание |
|---|---|
/my_tasks |
Показать ваши активные задачи и завершить их |
- Любой пользователь пишет в канале идей
- Появляется кнопка "Отправить идею для разработки"
- Заполняется модальное окно (название + описание)
- Идея публикуется в канале проверки
- В канале проверки появляются кнопки "Принять" / "Отклонить"
- При принятии:
- Открывается окно настройки (роль, приоритет, дедлайн, заметки)
- Задача публикуется в канале задач
- При отклонении:
- Вводится причина отклонения
- Отправляется уведомление автору
- Разработчик видит задачу в канале задач
- Нажимает "Взять задачу"
- Задача закрепляется за разработчиком
- Команда
/my_tasks→ выбор задачи из dropdown - Появляется сообщение с кнопками
- Варианты отправки:
- Прикрепить файл → ответить на сообщение бота
- Добавить ссылку → кнопка "Добавить ссылку"
- Кнопка "Отправить на проверку"
- В канале проверки появляются кнопки "Принять" / "Отклонить"
- При принятии:
- Статус:
completed - Разработчику в ЛС: "✅ Задача принята"
- Статус:
- При отклонении:
- Статус:
in_progress - Вводится причина
- Разработчику в ЛС: "❌ Задача отклонена" + причина
- Статус:
Бот автоматически создаёт следующие колонки:
| Колонка | Описание |
|---|---|
ID |
Уникальный ID задачи |
Name |
Название задачи |
Description |
Описание |
Status |
Статус (pending_approval, approved, in_progress, review, completed, rejected) |
Priority |
Приоритет (Низкий, Средний, Высокий) |
Deadline |
Дедлайн (YYYY-MM-DD) |
Assignee |
ID разработчика |
SubmittedBy |
ID автора идеи |
Role |
Требуемая роль (Скриптер, Билдер, Аниматор, Моделер) |
RejectionReason |
Причина отклонения |
CompletionLink |
Ссылка на результат |
CompletionFile |
Имя файла |
CompletedAt |
Дата завершения |
Reviewer |
ID проверяющего |
- Не коммитьте
.envиcredentials.json— добавьте их в.gitignore - Храните токены в секрете — не передавайте никому
- Используйте переменные окружения — для всех чувствительных данных
ValueError: DISCORD_TOKEN не задан
→ Проверьте .env файл и убедитесь, что токен указан правильно
FileNotFoundError: credentials.json не найден
→ Скачайте credentials.json из Google Cloud Console
→ Проверьте ID каналов в config.py и убедитесь, что бот имеет доступ к этим каналам
→ Перезапустите бота и подождите несколько секунд
MSKGDevoloperManager/
├── bot.py # Основной код бота
├── config.py # Конфигурация
├── credentials.json # Google API ключи (не коммить!)
├── requirements.txt # Python зависимости
├── .env # Переменные окружения (не коммить!)
├── .gitignore # Игнорируемые файлы
└── README.md # Этот файл
python bot.pyБот выводит логи в консоль:
- Инициализация Google Sheets
- Отправка сообщений
- Ошибки взаимодействия
См. файл LICENSE
По вопросам обращайтесь к разработчику или создайте issue в репозитории.