Боты для сервера: модерация, музыка и как сделать своего бота

Многое, ради чего на сервер обычно ставят ботов, в Relay уже встроено: автомодерация, розыгрыши, уровни, реакции-роли и автоответы. Для остального есть открытый API: на нём пишут своих ботов со слэш-командами, кнопками, формами и голосом, например радио или музыку в голосовом канале.

Открыть Relay в браузере · Скачать приложение для Windows и Android

Сначала проверьте, что уже есть без ботов

Каждый бот на сервере требует прав, внимания и поддержки. Поэтому прежде чем искать бота, посмотрите на встроенные функции сервера Relay. Они настраиваются в интерфейсе и работают без стороннего кода.

Встроенные функции работают на стороне самого Relay, поэтому их не нужно отдельно запускать, обновлять и перезапускать на своём сервере. Бот имеет смысл, когда вам нужно то, чего в этом списке нет.

  • Автомодерация сообщений по правилам и защита от рейдов с порогом вступлений.
  • Предупреждения, тайм-ауты и журнал аудита модераторов.
  • Уровни за активность с ролями-наградами.
  • Реакции-роли: участник сам получает роль, нажав реакцию.
  • Розыгрыши с кнопкой участия и автоматическим выбором победителей.
  • Автоответы на частые вопросы и «липкое» сообщение внизу канала с правилами.
  • Витрина лучших сообщений, приветственный экран и анкета для новичков.

Бот для модерации: встроенное или свой

Для большинства серверов хватает встроенной автомодерации, условий входа и иерархии ролей. Модератор видит в журнале аудита, кто кого выгнал или заглушил, а тайм-аут и предупреждения выдаются из меню участника.

Свой бот для модерации нужен, когда правила особенные: например, проверять ссылки по собственному списку или вести учёт нарушений в своей базе. Такой бот может выгонять, банить, давать тайм-аут, удалять сообщения и выдавать роли, но только в пределах прав, которые ему выдали при установке.

Хорошая практика: сначала настроить встроенные средства, а бота добавлять точечно, под одну задачу. Боту, который только удаляет сообщения со ссылками, не нужно право банить, и выдавать его не стоит.

Музыкальный и радио-бот в голосовом канале

API поддерживает голосовых ботов. Бот заходит в голосовой канал и публикует туда звук: радиопоток, плейлист или озвучку. Если человек вызвал команду, находясь в голосовом канале, бот знает, в какой именно канал ему прийти.

Попасть в приватный голосовой канал, который ему не видно, голосовой бот не может, а подключаться к голосу он вправе, только если это право ему выдали.

Готового встроенного музыкального бота в Relay нет: голосового бота пишут по документации или подключают написанного кем-то другим.

Типичный сценарий выглядит так: участник сидит в голосовом канале, набирает в текстовом канале слэш-команду, и бот подключается к нему в голосовой канал. Громкость бота каждый слушатель регулирует у себя, как громкость любого участника.

Что умеют боты в Relay

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

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

  • Получать события через WebSocket-шлюз: новые сообщения, правки, удаления, вход и выход участников, реакции.
  • Заявлять intents, то есть классы событий, которые боту нужны. Лишнего бот не получает.
  • Регистрировать слэш-команды с аргументами.
  • Отправлять сообщения с эмбедами: карточками с заголовком, описанием, цветом и картинкой.
  • Добавлять к сообщениям кнопки и выпадающие меню, открывать модальные формы с текстовыми полями.
  • Прикреплять к сообщениям файлы.
  • Заходить в голосовые каналы и транслировать звук.

Как сделать бота для чата: общий порядок

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

Писать бота можно на любом языке программирования, который умеет работать с WebSocket и отправлять HTTP-запросы. Для тестов удобно завести отдельный сервер, где никто не пострадает от ошибок в первой версии.

  • Прочитайте документацию и решите, какие события и права нужны вашему боту.
  • Создайте бота, как описано в документации, и напишите программу, которая подключается к WebSocket-шлюзу и заявляет нужные intents.
  • Опишите слэш-команды: название, описание, аргументы.
  • Обрабатывайте вызовы команд и нажатия кнопок, отвечайте сообщением, эмбедом или формой.
  • Установите бота на свой тестовый сервер, выдав только нужные права, и проверьте его работу.
  • Когда бот готов, его может установить на свой сервер любой человек с соответствующими правами.

Безопасность: бот не может больше, чем ему дали

Бот не может сам попасть на сервер. Его устанавливает только человек с правами, и при установке он выбирает, что боту разрешено. Выдать боту право, которого нет у тебя самого, нельзя.

Бот подчиняется тем же правилам, что и люди. Он не может тронуть участника, чья роль выше его, или выдать роль своего уровня и выше. Приватные каналы, которые боту не видны, он не слышит. Текст сообщений бот получает, только если ему явно разрешили это при установке, а личные переписки ему не доступны вовсе.

Это значит, что установка бота не требует слепого доверия. Вы видите, какие права выдаёте, и можете дать ровно столько, сколько нужно для его задачи.

Идеи для первого бота

Начните с простой команды, которая отвечает текстом. Когда подключение к шлюзу и обработка команд заработают, добавить кнопки, формы и голос будет проще.

  • Команда /rules, которая отвечает эмбедом с правилами сервера.
  • Анкета для заявки в клан: форма с несколькими полями, ответы уходят офицерам.
  • Голосование с кнопками, которое по окончании показывает итог.
  • Выпадающее меню для выбора роли по игре или региону.
  • Радио-бот, который по команде заходит в голосовой канал и включает поток.

Если вы переносите ботов из Discord

API Relay устроен по знакомой модели Discord: шлюз с событиями, intents, слэш-команды, кнопки, меню, формы и эмбеды. Логику бота обычно можно перенести, заменив слой подключения. Автоматического переноса ботов нет, как и серверов в целом. О переезде сообщества рассказано в статье как перенести сервер из Discord, а о настройке самого сервера в статье про сервер для сообщества.

Проверьте, какие права и intents реально нужны вашему боту после переноса. Переезд хороший повод убрать лишнее: бот, который раньше получал всё подряд, в Relay может обойтись гораздо меньшим набором прав.

Частые вопросы

Есть ли в Relay музыкальный бот?

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

Может ли бот зайти на сервер сам?

Нет. Бота устанавливает только человек с правами, и он сам решает, какие права выдать.

Читает ли бот все сообщения на сервере?

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

Где взять документацию по API ботов?

На странице для разработчиков relaychat.ink/developers.

Нужен ли бот для реакций-ролей, уровней и розыгрышей?

Нет, всё это встроено в сервер и настраивается в интерфейсе.

Похож ли API на Discord?

Да, модель знакомая: шлюз с событиями и intents, слэш-команды, кнопки, меню, формы и эмбеды.

Начать общаться в Relay — регистрация занимает минуту, базовые возможности бесплатны.

Relay не связан с Discord Inc. и не является её продуктом; название упомянуто, чтобы объяснить, на что похож сервис.