Предыстория
Я являюсь создателем, среднего по количеству участников, 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)
pewpew
19.12.2019 11:51Я являюсь создателем, среднего по количеству участников, Discord сервера ~2000 участников.
Хм… а разве можно свой сервер discord создать? Я не очень в курсе.LoadRunner
19.12.2019 11:53И не один. Всегда можно было. И бесплатно. Дискорд зарабатывает на платных свистоперделках, которые идут навесом к серверу.
gudvinr
19.12.2019 12:04Вероятно, вы имеете в виду "новый инстанс на своих мощностях", когда как на самом деле это "мета-комната с кучей каналов", которая создаётся путем нажатия кнопки "создать сервер".
korobkov-k
19.12.2019 17:03Забавно, был очень слабо в теме, недавно узнал от знакомых молодых ребят, что они общаются в основном в дискорде и создают сервера. Я сразу представил себе что-то типа поднятие своего IRC сервачка как было 10-15 лет назад. Уж было подумал что школьники теперь криптопанки, не признающие централизованные чаты. А они просто кнопку жмякают.
pewpew
19.12.2019 21:45То есть это простая подмена понятий, и слово «сервер» тут скорее означает свой канал по типу бота телеграма?
cjmaxik
А зачем постоянно смотреть в API за изменениями, если можно настроить вебхуки из сообщества?
MrZillaGold Автор
Если вы захотите получить посты из чужой группы вебхуки сообщества вам не помогут.
cjmaxik
Это частный случай.
MrZillaGold Автор
Хорошее замечание, учту в следующих версиях.