Функционал

Предыстория


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

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

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


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

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


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


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

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

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

Комментарии (9)


  1. cjmaxik
    19.12.2019 11:38
    +1

    А зачем постоянно смотреть в API за изменениями, если можно настроить вебхуки из сообщества?


    1. MrZillaGold Автор
      19.12.2019 15:20

      Если вы захотите получить посты из чужой группы вебхуки сообщества вам не помогут.


      1. cjmaxik
        19.12.2019 15:21

        Это частный случай.


        1. MrZillaGold Автор
          19.12.2019 15:22

          Хорошее замечание, учту в следующих версиях.


  1. pewpew
    19.12.2019 11:51

    Я являюсь создателем, среднего по количеству участников, Discord сервера ~2000 участников.
    Хм… а разве можно свой сервер discord создать? Я не очень в курсе.


    1. LoadRunner
      19.12.2019 11:53

      И не один. Всегда можно было. И бесплатно. Дискорд зарабатывает на платных свистоперделках, которые идут навесом к серверу.


    1. gudvinr
      19.12.2019 12:04

      Вероятно, вы имеете в виду "новый инстанс на своих мощностях", когда как на самом деле это "мета-комната с кучей каналов", которая создаётся путем нажатия кнопки "создать сервер".


      1. korobkov-k
        19.12.2019 17:03

        Забавно, был очень слабо в теме, недавно узнал от знакомых молодых ребят, что они общаются в основном в дискорде и создают сервера. Я сразу представил себе что-то типа поднятие своего IRC сервачка как было 10-15 лет назад. Уж было подумал что школьники теперь криптопанки, не признающие централизованные чаты. А они просто кнопку жмякают.


      1. pewpew
        19.12.2019 21:45

        То есть это простая подмена понятий, и слово «сервер» тут скорее означает свой канал по типу бота телеграма?