[Из песочницы] Автоматическая публикация записей из сообщества ВКонтакте в Discord

Функционал


Предыстория


Я являюсь создателем, среднего по количеству участников, Discord сервера ~2000 участников.
В один день мне понадобилось публиковать записи из группы ВКонтакте с последними новостями игры, ВКонтакте не умеет работать с WebHooks, поэтому пришлось идти в Google и искать подходящие решения.

Было найдено несколько решений, но либо они работали не так, как хотелось, либо не работали вовсе. Тогда у меня были некоторые знания JavaScript, поэтому было принято решение писать самому.

Так появился VK2DISCORD


Мною был написана первая версия скрипта, которая только могла получать текст и одну картинку из поста и отправлять это все сообщением в Discord канал с использованием WebHook. Скрипт был опубликован на просторы Github. После некоторого времени я понял что нужны кардинальные улучшения и полностью переписал скрипт добавив получение всех вложений в посте, обработку репостов и выборку постов по ключевым словам и #хештегам.

Пример работы скрипта
k6wy4tljrzls1v7lmmkgmrz9qvq.png


Настройка скрипта


1. Скачиваем и устанавливаем Node.js с официального сайта.

2. Скачиваем скрипт из репозитория и распаковываем его в удобное место.

3. Настраиваем в папке, куда вы распаковали скрипт, файл config.json. Он имеет такую структуру:

{
  "token": "Токен", // Токен от любой страницы ВКонтакте, получить можно тут: https://vk.cc/9bJ69C или сервисный токен.
  "group_id": -1, // ID группы ВКонтакте из которой брать новости.
  "webhook_url": "https://discordapp.com/api/webhooks/", // Ваш WebHook URL.
  "bot_name": "VK2Discord", // Имя вашего WebHook, выcвечиваетеся в качестве имени бота.
  "color": "#aabbcc", // Цвет рамки сообщения Discord в формате HEX.
  "keywords": ["#новости@VK2DISCORD", "Привет", "яБлоКо"], // Ключевые слова, через запятую, для публикации записи. Оставьте массив пустым, если не хотите использовать данную функцию.
  "filter": true, // Публиковать посты только от именни группы, посты от обычных пользователей пропускаются. 
  "interval": 10000 // Интервал получения новых постов из ВКонтакте в миллисекундах.
}


4. Открываем командную строку и запускаем скрипт командами:

  • cd путь до папки со скриптом
  • npm i
  • node index.js


Настройка завершена, первый пост будет получен после заданного интервала.

Ссылка на репозиторий, можете внести свой вклад или предложить улучшения.

© Habrahabr.ru