Боты для сервера: модерация, музыка и как сделать своего бота
Многое, ради чего на сервер обычно ставят ботов, в 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. и не является её продуктом; название упомянуто, чтобы объяснить, на что похож сервис.