RMRP API Google
Приватный HTTP-сервис проекта RMRP (rmrp.ru), через который автоматизация Google Таблиц выполняет действия в Discord: публикует и правит служебные сообщения, выдаёт и снимает роли, меняет никнеймы и получает список участников сервера. Это не публичное Discord-приложение, с которым взаимодействуют пользователи, а внутренний API для скриптов проекта.
🔒 Без публичного доступа
Единственный маршрут сервиса защищён ключом API: запрос без корректного заголовка
x-api-key получает ответ 401 Unauthorized. По умолчанию сервис слушает
только локальный интерфейс 127.0.0.1:3000 и наружу не публикуется.
🔗 Между Google и Discord
Запросы формирует Google Apps Script проектных таблиц. Сервис принимает их и выполняет действия строго через официальный Discord REST API, после чего возвращает результат вызывающей стороне.
🗄️ Без собственной базы данных
Сервис ничего не накапливает: текст, эмбеды и вложения записываются в Discord, а список участников возвращается скрипту. Постоянного хранилища профилей или истории у сервиса нет.
Назначение
Служебные документы проекта RMRP ведутся в Google Таблицах. Чтобы не дублировать работу вручную, таблица через Apps Script отправляет запрос в RMRP API Google, а сервис выполняет соответствующее действие в Discord от имени служебного бота: отправляет подготовленное сообщение с эмбедами и вложениями, редактирует ранее отправленное сообщение, выдаёт или снимает роли, меняет никнейм участника либо отдаёт список участников сервера для сверки с таблицей.
Как это работает
- Google Таблица. Сотрудник проекта заполняет служебную форму или таблицу.
- Google Apps Script. Скрипт формирует JSON-запрос нужного типа и отправляет его
методом
POST /botsс ключом API в заголовкеx-api-key. - RMRP API Google. Проверяет ключ и выполняет действие через официальный Discord REST API.
- Ответ. Сервис возвращает идентификаторы созданных объектов или результат операции (например, какие роли выданы, а какие не удалось выдать).
Поддерживаемые действия
| Тип действия | Что делает |
|---|---|
send-message |
Отправляет сообщение в указанный канал: текст, эмбеды (заголовок, описание, цвет, автор, картинка, подвал, временная метка, поля) и вложения. |
edit-message |
Редактирует ранее отправленное сообщение по его идентификатору: обновляет текст и эмбеды. |
assign-roles |
Выдаёт участнику одну или несколько ролей и сообщает, какие роли выданы, а какие — нет. |
remove-roles |
Снимает с участника одну или несколько ролей с отчётом о результате. |
change-nickname |
Меняет никнейм участника на указанном сервере. |
get-users |
Возвращает список участников сервера: идентификатор, имя пользователя, никнейм, роли и дату присоединения. |
Безопасность и доступ
- Ключ API. Выполнение любого действия требует корректного ключа в заголовке
x-api-key; запросы без него отклоняются с кодом401. - Приватный адрес. По умолчанию сервис слушает только
127.0.0.1:3000, то есть доступен исключительно с локального сервера проекта. - Ограничение размера запроса. Тело запроса ограничено 32 МБ — этого достаточно для сообщений с вложениями и защищает сервис от перегрузки.
- Минимум событий Discord. Бот подключается к Discord без запроса интентов содержимого сообщений и списка участников и выполняет только те REST-действия, которые явно запросил скрипт с корректным ключом.
- Без чтения переписки. Сервис не читает личные сообщения, не подписывается на события серверов и не собирает профили пользователей.
Используемые права Discord
Сервис использует только разрешения, необходимые для перечисленных действий:
Send Messages Embed Links Attach Files Manage Messages (правка своих сообщений) Manage Roles Manage Nicknames
Какие данные обрабатываются и зачем
| Данные | Зачем | Где находятся |
|---|---|---|
| Текст, эмбеды и вложения служебных сообщений | Публикация и обновление подготовленных сотрудниками проекта сообщений в Discord | Записываются в Discord; в сервисе не хранятся |
| Идентификаторы Discord (сервер, канал, сообщение, пользователь, роль) | Адресация действия: куда опубликовать, кому выдать роль, чей никнейм изменить | Передаются в Discord внутри запроса; не хранятся |
Список участников сервера при запросе get-users |
Сверка состава участников с таблицей проекта | Возвращается вызывающему скрипту Google Таблиц; в сервисе не хранится |
| Технические журналы работы сервиса | Диагностика ошибок и контроль работоспособности | На сервере проекта |
Сервис не обрабатывает: личные сообщения, платёжные и биометрические данные, сведения о здоровье, геолокацию, а также данные серверов, не относящихся к проекту RMRP.
Сроки хранения
- служебные сообщения, роли и никнеймы — в Discord, пока это необходимо для задач проекта;
- собственного хранилища данных у сервиса нет — накопление сообщений и профилей не производится;
- технические журналы — до 90 дней;
- по обоснованному запросу данные удаляются в срок не более 30 дней (см. Политику конфиденциальности).
Правовые документы
- Политика конфиденциальности — раздел «RMRP API Google» · Privacy Policy (EN)
- Условия использования — раздел «RMRP API Google» · Terms of Use (EN)
Связь
Официальный Discord проекта: discord.gg/6Az63EPEAA
Поддержка игроков: forum.rmrp.ru — помощь
E-mail поддержки проекта: donate@rmrp.ru
Сайт проекта: rmrp.ru