НОВОЕ 📢 Ограниченное стартовое предложение: скидка до 70% на первый месяц для любой игры!Посмотреть тарифы

Как связать Discord с Telegram, Matrix или Slack через matterbridge

Хостинг Discord-ботовUpdated Oct 29, 20266 min read

matterbridge связывает канал Discord с комнатами в Telegram, Matrix, Slack, IRC, Mattermost и других сетях: то, что написано в одной комнате, появляется в остальных. Комнаты вы выбираете в matterbridge.toml в разделе Files, токен Discord-бота вставляете на вкладке Бот, а токен Telegram-бота, если он нужен, в разделе Окружение.

Установлена версия 1.26.0; с 2023 года проект не выпускал обновлений, поэтому мы предлагаем её как есть.

  1. В Discord Developer Portal создайте бота, скопируйте его токен и включите Server Members Intent и Message Content Intent.
  2. В панели сделайте так, чтобы сервер запускал matterbridge (Изменить, что запускается), вставьте токен Discord в карточку Настройка бота и пригласите бота.
  3. Для Telegram создайте бота у @BotFather и вставьте его токен в Бот, Окружение, Учётные данные, Telegram bot token.
  4. Откройте matterbridge.toml в Files, впишите ID своего сервера Discord и комнаты для связи, а строку с PNH_EXAMPLE_CONFIG удалите.
  5. Нажмите Запустить в Console.

Каждый шаг разобран ниже. Пример файла связывает один канал Discord с одной группой Telegram, это самый частый случай.

1. Сторона Discord

  1. Создайте бота и скопируйте его токен: Как создать Discord-бота и получить его токен. На странице Bot вашего приложения включите Server Members Intent и Message Content Intent и нажмите Save Changes.
  2. Откройте сервер в панели. На странице Обзор, в карточке Настройка бота, нажмите шаг Что запускается. Если там не написано «Этот бот запускает matterbridge.», нажмите Изменить, что запускается, выберите matterbridge, нажмите Дальше, поставьте галочку подтверждения и нажмите Сменить тип сервера.
  3. Шаг Подключение к Discord: вставьте токен в поле Вставьте токен бота, нажмите Подключить, затем Да, продолжить.
  4. Шаг Разрешения: оба интента должны показывать Вкл. в столбце В вашем портале. В разделе Ссылка-приглашение нажмите Добавить на сервер Discord. В ссылку входит Управление вебхуками: благодаря ему сообщения с другой стороны отображаются с именем и картинкой каждого отправителя.

2. Сторона Telegram

  1. В Telegram напишите @BotFather: отправьте /newbot, выберите имя и скопируйте выданный токен.
  2. Там же отправьте @BotFather команду /setprivacy, выберите своего бота и нажмите Disable. Иначе бот Telegram видит в группе только команды, а не обычные сообщения.
  3. Добавьте бота в свою группу Telegram. Чтобы узнать ID чата группы (отрицательное число), на минуту добавьте в группу @getidsbot.
  4. В панели откройте вкладку Бот и нажмите Окружение. На карточке Учётные данные нажмите Задать рядом с Telegram bot token, вставьте токен и нажмите Сохранить.

Вкладка «Бот», раздел «Окружение», карточка «Учётные данные» для matterbridge: Telegram bot token сохранён.

3. Заполните matterbridge.toml

  1. Откройте Files и нажмите matterbridge.toml.
  2. В [discord.mydiscord] замените YOUR_DISCORD_SERVER_ID на ID своего сервера: в Discord откройте Settings, Advanced, включите Developer Mode, затем щёлкните значок сервера правой кнопкой мыши и выберите Copy Server ID.
  3. В разделе [[gateway]] укажите для Discord в channel название своего канала без #, а для Telegram в channel ID чата группы.
  4. Удалите первую строку, содержащую PNH_EXAMPLE_CONFIG, и сохраните файл.

Заполненные части выглядят так:

[discord.mydiscord]
Server="123456789012345678"
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
AutoWebhooks=true
PreserveThreading=true

[telegram.mytelegram]
RemoteNickFormat="<{NICK}> "
MessageFormat="HTMLNick"

[[gateway]]
name="gateway1"
enable=true

    [[gateway.inout]]
    account="discord.mydiscord"
    channel="general"

    [[gateway.inout]]
    account="telegram.mytelegram"
    channel="-1001234567890"

Файл matterbridge.toml, открытый в редакторе файлов: заполнены ID сервера Discord и два канала шлюза.

Оставьте названия учётных записей discord.mydiscord и telegram.mytelegram: именно так два токена, сохранённые в панели, попадают в matterbridge, поэтому записывать их в файл не нужно.

4. Запустите бота

Откройте Console и нажмите Запустить. Когда файл готов, вы увидите строку с версией, а затем:

[PlayNHost] Starting your bot

Напишите сообщение в канале Discord: оно появится в группе Telegram с именем отправителя, и наоборот.

Matrix или Slack вместо Telegram

Поле учётных данных в панели есть только для Telegram. Для других сетей добавьте в matterbridge.toml раздел учётной записи с её логином прямо в файле, затем добавьте эту учётную запись в шлюз. Любой, у кого есть доступ к файлам вашего сервера, сможет это прочитать, а бэкапы это включают.

  • Matrix: заведите для моста отдельную учётную запись Matrix, а не используйте свою. Добавьте [matrix.mymatrix] с Server="https://matrix.org" (ваш homeserver), Login и Password, затем [[gateway.inout]] с account="matrix.mymatrix" и channel="#yourroom:matrix.org". Зашифрованные комнаты не поддерживаются.
  • Slack: matterbridge 1.26.0 подключается к Slack с токеном отдельного пользователя Slack. С момента этого выпуска правила токенов Slack изменились, поэтому для Slack следуйте собственной вики matterbridge и проверьте всё, прежде чем на это полагаться.

Все параметры каждой сети описаны в вики matterbridge (github.com/42wim/matterbridge/wiki). После каждого изменения файла перезапускайте бота.

Строки консоли, которые вы можете увидеть

[PlayNHost] matterbridge is not set up yet: matterbridge.toml is still the example.

В файле всё ещё есть строка PNH_EXAMPLE_CONFIG или YOUR_DISCORD_SERVER_ID. Завершите шаг 3, затем нажмите Перезапустить.

[PlayNHost] Created matterbridge.toml from the example.

Файла matterbridge.toml не было, поэтому записан новый пример. Заполните его, как в шаге 3.

[PlayNHost] matterbridge is not installed. Reinstall it on the Bot page, Code, then press Start.

Программа отсутствует. Нажмите Переустановить на карточке Переустановить в разделе Бот, Код и подтвердите. Ваш matterbridge.toml останется.

Полезно знать

  • Debug log в разделе Бот, Код, Настройки записывает в журнал каждое сообщение, которое пересылает matterbridge. Включайте его только на время поиска проблемы: введите 1, нажмите Сохранить и перезапустите бота; 0 выключает его.
  • matterbridge только подключается наружу к сетям чатов. Он не открывает порт и не требует домена.
  • Пишете собственного бота для Telegram, Slack или Matrix? Как запустить бота для Telegram, Twitch, Slack или Matrix.

Ваш бот уже у другого хостинга? Перенесите его к нам

ПОСЛЕДНИЕ БЛОГИ