Discord-боты Makoto

Проект Makoto · makotomc.ru · сервер Discord «Makoto 🌸» (16 700+ участников, discord.gg/tzT4G2P)

Боты работают на сервере нашего Minecraft-проекта: связывают игровые аккаунты с Discord, выдают роли, ведут статистику чата, помогают модерации и отвечают на сообщения как ИИ-собеседник «Фукунака». Ниже — что делает каждый бот и скриншоты его настоящих сообщений.

1. Привязка игрового аккаунта к Discord и роль «Игрок»

Игрок заходит на Minecraft-сервер, получает короткий код, сервер его отключает. Игрок отправляет код в канал #отправь-код-сюда — бот сопоставляет игровой ник с Discord-аккаунтом и выдаёт роль. В лог-канал приходит запись о выдаче роли и о том, что игрок перезашёл уже с доступом.

Лог: бот выдал роль после перезахода игрока
Реальный скриншот: бот сообщает о перезаходе игрока и о том, что роль выдана.

2. Роли: активность, города, подписка Plus

Бот выдаёт и снимает роли по правилам проекта: активным участникам чата («Чатер», «Опытный чатер» — порог по числу сообщений), главам и журналистам городов, подписчикам Plus. Для этого ему нужен доступ к списку участников и их ролям — Server Members Intent. Роли меняются в реальном времени, поэтому интент нужен постоянно, а не разово.

3. Статистика чата и награды

Каждые 12 часов бот собирает сообщения канала #чат, публикует отчёт с топ-3 участников и краткой сводкой о чём говорили, а самому активному начисляет награду. Для этого читается содержимое сообщений — Message Content Intent.

Ежедневный отчёт бота: сводка и топ-3 участников
Реальный скриншот: отчёт «Статистика! (Mon_am)» — сводка, топ-3 по числу сообщений и начисление очка.

4. Модерация: отчёт о подозрительных сообщениях

Бот находит в сообщениях попытки обхода фильтра (латинские/кириллические подмены, разбитые слова) и публикует сообщение в закрытый канал #logs-chat — с указанием автора и слова, на которое сработал фильтр. Автоматических наказаний по тексту нет: решение принимает модератор, о чём и говорят реакции под сообщением.

Отчёты бота о возможных нарушениях правил
Реальный скриншот: два отчёта «Возможное нарушение правил!» с указанием автора и сработавшего слова.

5. ИИ-собеседник «Фукунака»

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

Ответ ИИ-бота на вопрос игрока
Реальный скриншот: игрок просит «фукунака сделай полный анализ…», бот отвечает реплаем и указывает использованную модель.

6. Безопасность входа: карточки и возможные твинки

Бот публикует карточку входа игрока на игровой сервер (IP, пинг, локация, клиент) и предупреждает модерацию, если с этого же IP или подсети уже заходил другой ник — это помогает ловить обход блокировок и твинков. IP-адреса в примере скрыты.

Предупреждение о возможном твинке
Реальный скриншот: «Возможный твинк» — совпадения по IP и по подсети /24.

7. Тикеты и поддержка

Бот открывает и закрывает тикеты в #actions, напоминает о неактивных обращениях и уведомляет модерацию.

Зачем нужны привилегированные интенты

Message Content Intent

Без него бот видит только факт сообщения, но не текст — а текст нужен статистике чата (§3), отчёту о нарушениях (§4) и ответам ИИ (§5). Сообщения читаются только в каналах, где присутствует бот.

Server Members Intent

Без него бот не получает список участников и их роли в реальном времени, поэтому не может выдавать и снимать роли (§1–2) и определять, кому положена награда.

Presence Intent (онлайн-статусы) мы не запрашиваем — он не нужен ни одной функции.

Политика конфиденциальности: makotomc.ru/bots/privacy.html