Настройка интеграции с Discord

У нас есть много разных интеграций с Discord, которые вы можете использовать в своём сообществе. Это руководство по настройке всего этого.

Наши интеграции сейчас делятся на три категории. Пожалуйста, прочитайте каждый раздел, чтобы узнать, какие функции доступны.

  • Вебхуки игрового сервера
  • Встроенный бот игрового сервера
  • Автономный бот

Предварительные требования

В этом руководстве часто будет упоминаться «ID» каналов Discord, серверов и т. д. Чтобы их получить, включите «Режим разработчика» в настройках Discord, после чего вы сможете щёлкнуть правой кнопкой по объектам, чтобы получить их номер ID.

Вебхуки игрового сервера

Самая простая форма интеграции обеспечивается вебхуками Discord. Она позволяет игровому серверу напрямую отправлять сообщения в определённые каналы Discord при минимальной настройке.

Сейчас это используется для следующих функций:

  • Автоматические уведомления о статусе раунда (конец, начало).
    • Включает пинг роли, когда раунд закончился.
  • Пересылка внутриигровых сообщений adminhelp.

Конфигурация предельно проста. Сгенерируйте вебхук для нужных каналов Discord (см. ссылку выше), затем введите их в файл конфигурации вашего сервера:

[discord]
# Вебхук для отправки сообщений adminhelp.
ahelp_webhook = "<Webhook for ahelps>"

# Вебхук для отправки сообщений о статусе раунда.
round_update_webhook = "<Webhook for round ping>"

# Опционально: ID роли для пинга, когда раунд закончился.
round_end_role = "<Role ID to ping>"

Встроенный бот игрового сервера

Здесь игровой сервер размещает собственного внутреннего бота Discord, что позволяет получить более продвинутые функции, чем могут дать простые вебхуки, хотя, опять же, при относительно небольшой работе по настройке.

Сейчас это используется для следующих функций:

  • Двусторонний мост чата OOC/админов
  • Продолжение следует!

Обзор

Игровой сервер способен размещать собственного бота Discord напрямую через Discord.Net. Это означает, что вам не нужно запускать отдельную программу на своём сервере для получения этой функциональности; вам нужно лишь создать бота на сайте разработчиков Discord и соответствующим образом настроить свой сервер.

Базовая настройка

Создание бота

Failure

У каждого игрового сервера должно быть своё независимое приложение/бот Discord. Не используйте повторно токены ботов Discord, так как это может вызвать кучу весёлых багов!

  1. Перейдите на сайт разработчиков Discord, чтобы зарегистрировать новое приложение.
  2. Дайте боту подобающее имя, аватар и всё такое прочее.
  3. Скорее всего, вы захотите сделать бота приватным, чтобы только вы могли добавлять его в сообщества Discord. Для этого:
    1. Перейдите в «Installation» и установите «Install Link» в «None».
    2. Перейдите в «Bot» и отключите «Public Bot»
  4. В разделе «Bot» включите «Server Members Intent» и «Message Content Intent».
  5. Перейдите в «OAuth» и сгенерируйте URL установки, отметив следующие флажки и нажав копировать: Discord’s OAuth2 URL generator, with “bot” scopes and “Send Messages” bot permissions checked
  6. Вставьте сгенерированный URL в свой браузер, чтобы установить бота.
  7. Перейдите в «Bot», нажмите «Reset Token» и скопируйте токен, который он вам выдаст.

Конфигурация сервера

Добавьте следующее в файл конфигурации вашего сервера, чтобы настроить бота Discord:

[discord]
# Токен бота, скопированный ранее.
token = "fill me"
# ID вашего сервера Discord. Щёлкните правой кнопкой по серверу, чтобы скопировать ID.
guild_id = fill me
# Префикс, который должен добавляться ко всем командам, интерпретируемым ботом.
# Он должен быть уникальным среди игровых серверов (и любых других ботов, которые могут быть у вас в Discord).
# Учтите, что команды сейчас не используются, но они, вероятно, будут добавлены в будущем.
prefix = "!"

Если вы всё сделали правильно, ваш сервер подключится к Discord при следующем перезапуске. Вы можете подтвердить это, проверив логи сервера и посмотрев, получает ли ваш бот статус «в сети».

Пересылка чата (OOC/чат админов)

Бот Discord может автоматически пересылать сообщения между Discord и внутриигровыми каналами. Это поддерживается как для OOC, так и для чата админов.

Чтобы настроить это, создайте каналы на стороне Discord и убедитесь, что у бота есть разрешения как на чтение сообщений, так и на отправку сообщений в них. Затем добавьте следующую конфигурацию на свой сервер:

[ooc]
# ID канала в Discord. Скопируйте его, щёлкнув правой кнопкой по каналу.
discord_channel_id = fill me

[admin]
# ID канала в Discord. Скопируйте его, щёлкнув правой кнопкой по каналу.
chat_discord_channel_id = fill me

Вы, конечно, можете опустить один, если хотите пересылать только один из двух каналов.

Автономный бот

Здесь размещается автономный Discord, работающий независимо от игровых серверов. Это функциональность, работающая в боте Overseer на официальном Discord, охватывающая:

  • Проверка статуса игрового сервера и автоматическое обновление канала.
  • Команды для перезапуска/остановки игровых серверов.
  • Автоматические ответы на сообщения.

Скриншот профиля Overseer в Discord

Бот использует Red Discord Bot в качестве модульной основы, а наши собственные cog’и находятся здесь. Это означает, что вы можете добавить в него гораздо больше функциональности от других разработчиков cog’ов, если позже захотите.

Note

Мы предоставляем поддержку только по официальным wizard-cogs. Поддержку самого Red или других cog’ов мы не предоставляем; пожалуйста, обращайтесь за поддержкой в официальный Discord RedBot или к соответствующему разработчику cog’ов.

Warning

Большинство наших cog’ов требуют как минимум python 3.11; пожалуйста, убедитесь, что у вас есть эта версия, прежде чем просить поддержки.

Настройка

  1. Следуйте документации Red о том, как установить и запустить базового бота Red. Учтите, что, как и сервер SS14. Вам нужен компьютер, который будет оставаться включённым, чтобы ваш бот работал.
  2. Если ещё не читали, прочитайте страницу «Начало работы» у Red.
  3. После того как вы настроите бота и пригласите его на свой сервер, вы можете установить репозиторий wizard-cogs в своего бота. [p] в этом случае — префикс вашего бота, выбранный вами при настройке redbot.
Включите встроенный cog downloader
[p]load downloader

Добавьте репозиторий wizard-cogs
[p]repo add wizard-cogs https://github.com/space-wizards/wizard-cogs

Установите нужный cog, посмотрите ссылку на GitHub, чтобы увидеть варианты
[p]cog install wizard-cogs <cog_name>

Загрузите cog
[p]load <cog_name>

Подсказки

Ищете другие интересные cog’и? Посмотрите индекс cog’ов Redbot. Как сказано выше, мы не предоставляем поддержку по этим cog’ам.

Не англоязычный сервер? У некоторых cog’ов есть переводы. Вы можете изменить это с помощью [p]set locale <language_code>. Наши cog’и сейчас не поддерживают языки, кроме английского.

Статус игрового сервера

Статус SS14

Настройка
  1. Установите [p]cog install wizard-cogs gameserverstatus
  2. Добавьте свой сервер [p]statuscfg addserver ss14 <server-name> <address to your server>
  3. Готово! Посмотрите результат с помощью [p]status <server-name> (Конечно, ваш сервер должен быть онлайн)
Настройка автоматического отслеживания

Отслеживания статуса SS14

Если вы хотите иметь канал, где сообщение о статусе автоматически обновляется. Тогда watch — это нужная вам функция.

  1. После добавления сервера используйте следующую команду [p]statuscfg addwatch <server> <#channel>
  2. При условии, что у бота есть разрешения на публикацию в этом канале. Вы увидите, как статус сервера автоматически обновляется в сообщении примерно каждые 2 секунды.

Действия питания SS14.Watchdog

Действия питания

Позволяет вам связываться с SS14.Watchdog для выполнения определённых действий.

  1. Установите [p]cog install wizard-cogs poweractions
  2. Настройте свой сервер, выполнив [p]poweractionscfg add и нажав зелёную кнопку добавления. Только администраторы могут выполнять эту команду. В противном случае бот не ответит. Вы получите форму, которую вас попросят заполнить (Примечание: Ни мы, ни разработчики RedBot не получим эту информацию. Эта информация будет храниться только ботом и не будет показываться публично.)

Поле ввода

  • Name: Имя сервера; вы будете указывать его боту при перезапуске сервера.
  • URL: URL экземпляра watchdog; убедитесь, что указываете URL, доступный боту. Пример: если вы открываете API watchdog по адресу ‘https://example.com/watchdog’, то именно это вы и хотите ввести. Вероятно, можно использовать и ‘localhost’, если бот размещён на той же машине, что и watchdog. Порт watchdog по умолчанию — 5000
  • Server ID: Имя вашего сервера в appsettings.yml вашего watchdog, в котором хранится конфигурация вашего сервера. Не конфигурация «Name».
  • API token: ApiToken в конфигурации вашего watchdog.
  1. После нажатия «отправить», если бот сообщил об успехе, вы закончили! Повторите для своего другого сервера.
Доступные команды

Перезапустить сервер прямо сейчас:

[p]restartserver <name>

Перезапустить все серверы, настроенные у бота:

[p]restartnetwork

Перед выполнением он запросит подтверждение

Дать серверу команду на выключение после окончания текущего раунда:

[p]stopserver <name>

Дать watchdog команду подготовиться к обновлению сервера:

[p]updateserver <name>

Интеграция с GitHub

Ещё не перенесено в redbot. Тем временем вы можете использовать вебхук github.

Автоответчик (WYCI, Nanotrasen Block Game, Based)

почему

[p]cog install wizard-cogs autoresponder

Зачем… (Отвечает пользователям, говорящим «Something when», фразой «When you code it», на «Tetris» — «Nanotrasen Block Game», а на «Based» — «Based on what». Это внутренняя шутка в сообществах Space Station 14)

Subpages