DiscordIO
Вайтлист через Discord, бан через Discord. Уведомления о запуске/остановке сервера. Сообщения Minecraft в Discord. Fabric/Velocity
FabricVelocity
- Загрузчики
- FabricVelocity
- Скачиваний на Modrinth
- 1,2 тыс.
- Подписчиков на Modrinth
- 9
- версий
- 46
- Обновлён
- 6 июня 20266 июн.
- Опубликован
- в 2026
Коротко о моде
Работает на Fabric и Velocity
Для Minecraft 1.21–26.3
Ставится только на сервер; игрокам ставить не нужно
Последняя версия — 0.9.0 от 6 июня 2026
Лицензия MIT — бесплатно
Где нуженВерсии игры1.21–26.3
В игрене нуженНа сервереобязателен
Ставится только на сервер; игрокам ставить не нужно
Описание переведено автоматическиПоказать оригинал (EN)
| ⚠️ Внимание ⚠️ |
|---|
| Проект всё ещё в разработке. Возможны баги/краши! (пожалуйста, сообщайте о них на github.com) Если вы обновляетесь до более новой версии, вам нужно самостоятельно обновить language.yml и config.yml (data.yml обновляется автоматически). |
Возможности
- Работает как на прокси Velocity, так и на серверах Fabric
- Функция вайтлиста позволяет людям отправлять заявки на вайтлист через Discord
- Функция (раз)бана для наказания тех, кто надоедает (кикнуть несколько раз, забанить навсегда/на определённый срок)
- Гибкая настройка (см. config.yaml и language.yml — там всё, что можно настроить)
- Режим техобслуживания: запрещает всем заходить на сервер, кроме указанных в конфиге, и отключает все уведомления о событиях
- Свои сообщения в Discord при запуске и остановке сервера
- Свои сообщения в Discord при подключении и отключении игроков
- Своё сообщение в Discord, когда игроки пишут в Minecraft
- Свои сообщения в Minecraft, когда пользователи пишут в Discord
Конфиги:
config.yml версия 0.8.0
Актуальную версию смотрите на github.com
# !Этот файл нужно настроить перед использованием плагина!
# После включения функции её отключение может привести к непредсказуемому поведению
# Если вы действительно хотите отключить функцию, но это ломает ваш вайтлист/установку, удалите файл data.yml
# Как получить токен, см. https://modrinth.com/plugin/discordio
botToken: "Вставьте сюда ваш токен, как получить токен см. https://modrinth.com/plugin/discordio"
# Guild ID нужен для добавления команд
guildId: "Вставьте сюда ваш guild id (ID вашего Discord-сервера)"
# Сообщения в Discord для игровых событий
events:
# Сообщение при запуске сервера
onStart:
enabled: false
channel: "id..."
# Сообщение при остановке сервера
onStop:
enabled: false
channel: "id..."
# Сообщение при входе игрока
onJoin:
enabled: false
channel: "id..."
# Сообщение при выходе игрока
onLeave:
enabled: false
channel: "id..."
# Пересылка сообщений между Discord и Minecraft
onMessage:
enabled: false
minecraftToDiscord: true
discordToMinecraft: true
# Раскомментируйте подходящий вариант для вашего типа сервера:
# Для fabric:
# channels:
# fabric: "id..."
# Для velocity
# (Названия серверов — те, что указаны в настроенном вами файле velocity.toml)
# Не используйте общие каналы Discord, если у вас включён discordToMinecraft
# channels:
# server1: "id..."
# server2: "id..."
# Если включено, будет использоваться UUID, зарегистрированный в Mojang, для верификации
# !Сервер должен быть в online mode, чтобы это работало!
# Вы не сможете изменить эту настройку после того, как кого-то добавите в вайтлист, так что выбирайте осторожно
# Если вы действительно хотите это изменить, удалите файл data.yml (это удалит всех игроков из вайтлиста, их придётся добавлять заново)
useUUID: true
# Если включено, на одного пользователя Discord разрешён только один аккаунт Minecraft
# Вы не сможете изменить эту настройку после того, как кого-то добавите в вайтлист, так что выбирайте осторожно
# Если вы действительно хотите это изменить, удалите файл data.yml (это удалит всех игроков из вайтлиста, их придётся добавлять заново)
connectAccounts: true
# Если false, плагин удалит все интерактивные сообщения при выключении, чтобы отправить их заново при запуске
# Если true, плагин отключит все интерактивные сообщения при выключении, чтобы снова включить их при запуске (так не будет раздражающего пинга при старте сервера)
disableOnShutdown: true
# Объединить сообщения-заявки на вайтлист, бан и разбан в одно сообщение
squashedRequest:
enabled: false
channel: "id..."
# Вайтлист через Discord
whitelist:
enabled: false
# Должен ли плагин выдавать особую роль тем, кто в вайтлисте
giveRoleOnWhitelist: false
# Роль, выдаваемая игроку при добавлении в вайтлист (только если giveRoleOnWhitelist=true)
# Включите режим разработчика, чтобы легко получить ID роли из настроек Discord-сервера:
whitelistedRoleID: ""
onAccept:
enabled: true
channel: "id..."
onDeny:
enabled: true
channel: "id..."
request:
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
voting:
# Если отключено, заявка сразу подразумевает добавление в вайтлист
enabled: true
channel: "id.."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
# Бан через Discord
banning:
enabled: false
# Должен ли плагин выдавать особую роль тем, кто забанен
giveRoleOnBan: false
# Роль, выдаваемая игроку при бане (только если giveRoleOnBan=true)
# Включите режим разработчика, чтобы легко получить ID роли из настроек Discord-сервера:
bannedRoleID: ""
onAccept:
enabled: true
channel: "id..."
onDeny:
enabled: true
channel: "id..."
request:
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
# Выберите один из способов, которым пользователь может указать, кого хочет забанить:
# - "discord" выбрать имя пользователя Discord для бана (нельзя использовать, если connectAccounts=false)
# - "minecraft" выбрать имя игрока Minecraft для бана
identifier: "discord"
punishment:
# Если отключено, заявка перейдёт сразу к выбору причины для перманентного бана
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
punishments:
# Если вы не оставите наказание "None", админы не смогут отклонить заявку на бан
"None":
type: None
"Permanent ban":
type: PermBan
"5m ban":
type: Ban
duration: 300
"1h ban":
type: Ban
duration: 3600
"2h ban":
type: Ban
duration: 7200
"1d ban":
type: Ban
duration: 86400
"kick 1x":
type: Kick
duration: 1
"kick 3x":
type: Kick
duration: 3
"No unban 2h":
type: NoUnban
duration: 7200
reason:
# Если отключено, заявка сохранит причину из заявки
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
# Разбан через Discord
unban:
enabled: false
onAccept:
enabled: true
channel: "id..."
onDeny:
enabled: true
channel: "id..."
request:
enabled: true
channel: "id..."
checkRoles: false
allowedRoles: []
voting:
# Если отключено, заявка сразу подразумевает разбан
enabled: true
channel: "id.."
checkRoles: false
allowedRoles: []
acceptVotes: "50%"
denyVotes: "1"
maintenance:
# Отключает события и отклоняет всех, кого нет в списке персонала
enabled: false
# Включить режим техобслуживания из конфига:
inMaintenance: false
# Игроки, которым разрешено заходить во время техобслуживания
# Используйте UUID, если useUUID=true, иначе используйте имена игроков
# Это не отменяет вайтлист и бан, для входа всё равно нужно быть в вайтлисте
# UUID должен быть без дефисов, то есть: 123456789abcdefghijklmni12345678
crew: ["player1", "player2"]
# Команда для включения режима техобслуживания через Discord
command:
enabled: false
checkChannel: false
allowedChannels: ["id..."]
checkRoles: false
allowedRoles: []
# Сообщения при запуске
onStart:
enabled: false
channel: "id..."
# Сообщение при завершении
onStop:
enabled: false
channel: "id..."
# Команда Discord, чтобы проверить, в вайтлисте ли кто-то (и есть ли у него наказания)
infoCommand:
enabled: false
checkChannel: false
allowedChannels: ["id..."]
checkRoles: false
allowedRoles: []
<details>
<summary>language.yml версия 0.8.0</summary>
Актуальную версию смотри на [github.com](https://github.com/hidde2727/VelocityDiscord/blob/main/core/src/main/resources/language.yml)
```yaml
embeds:
#
# *************************************************************************
# События *
# *************************************************************************
#
events:
embeds:
onStart:
title: "-------------[Онлайн]-------------"
description: ":green_circle: **Прокси** в сети!"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
onStop:
title: "-------------[Оффлайн]-------------"
description: ":no_entry: **Прокси** не в сети!"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
onJoin:
title: "-------------[Подключился]-------------"
description: "**${PLAYER_NAME}** зашёл на сервер!"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/240.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
onLeave:
title: "-------------[Отключился]-------------"
description: "**${PLAYER_NAME}** покинул сервер!"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/240.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
onMessage:
description: "[${PLAYER_NAME}] ${MESSAGE}"
#
# *************************************************************************
# Общий запрос *
# *************************************************************************
#
squashedRequest:
embeds:
request:
title: "Хочешь что-то запросить?"
description: "Нажми на кнопки ниже, чтобы получить **вайтлист**, запросить **бан** или запросить **разбан**"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
whitelist:
label: "Запросить вайтлист"
emoji: "U+2705"
ban:
label: "Запросить бан"
emoji: "U+2705"
unban:
label: "Запросить разбан"
emoji: "U+2705"
color: "blue"
#
# *************************************************************************
# Вайтлист *
# *************************************************************************
#
whitelist:
embeds:
alreadyWhitelisted:
title: "Извини, ты уже отправлял запрос на вайтлист."
description: "Ты либо уже в вайтлисте, либо твой предыдущий запрос сейчас рассматривается. Пожалуйста, подожди"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
request:
title: "Запросить доступ"
description: "Тоже хочешь попасть в вайтлист?\nНажми на кнопку ниже, чтобы запросить доступ к майнкрафт-серверу!"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
button:
label: "Запросить вайтлист"
emoji: "U+2705"
color: "BLUE"
notAllowed:
title: "Ты не можешь запросить вайтлист (у тебя нет нужной роли в Discord)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
requestConfirm:
title: "Это ты?"
description: "Проверь, что скин ниже принадлежит твоему аккаунту **${PLAYER_NAME}**"
imageUrl: "https://minotar.net/body/${PLAYER_NAME}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
confirm:
label: "Это я"
emoji: "U+2705"
cancel:
label: "Отмена"
emoji: "U+26D4"
color: "BLUE"
notFound:
title: "Твой игрок не найден"
description: "Твой игрок не найден на серверах Mojang"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestCanceled:
title: "Запрос отменён"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestConfirmed:
title: "Твой запрос будет рассмотрен админами"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
voting:
title: "Запрос на вайтлист"
description: "Пользователь Discord <@${DISCORD_UUID}> хочет, чтобы его майнкрафт-аккаунт **${PLAYER_NAME}** был добавлен в вайтлист.\n**${ACCEPT_VOTES}** голосов за, **${DENY_VOTES}** голосов против. (нужно ${MIN_ACCEPT_VOTES} голосов для принятия и ${MIN_DENY_VOTES} голосов для отклонения запроса)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
accept:
label: "Принять"
emoji: "U+2705"
deny:
label: "Отклонить"
emoji: "U+26D4"
color: "GREEN"
votingDenied:
title: "Запрос на вайтлист - Отклонён"
description: "Запрос от пользователя <@${DISCORD_UUID}> на добавление **${PLAYER_NAME}** в вайтлист был отклонён"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
votingAccepted:
title: "Запрос на вайтлист - Принят"
description: "Запрос от пользователя <@${DISCORD_UUID}> на добавление **${PLAYER_NAME}** в вайтлист был принят"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
votingNotAllowed:
title: "Ты не можешь голосовать (у тебя нет нужной роли в Discord)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
publicDenied:
title: "Вайтлист отклонён"
description: "**${PLAYER_NAME}** не получил вайтлист\n(Запросил <@${DISCORD_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
publicAccepted:
title: "Вайтлист принят"
description: "**${PLAYER_NAME}** получил вайтлист\n(Запросил <@${DISCORD_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
#
# *************************************************************************
# Баны *
# *************************************************************************
#
banning:
embeds:
request:
title: "Запросить наказание"
description: "Кто-то достаёт?\nНажми на кнопку ниже, чтобы запросить бан"
actions:
button:
label: "Запросить бан"
emoji: "U+2705"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
alreadyRequested:
title: "Извини, ты уже отправлял запрос на бан."
description: "Твой предыдущий запрос на бан сейчас рассматривается. Пожалуйста, подожди"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
playerNotFound:
title: "Этот пользователь Discord не зарегистрирован"
description: "У этого пользователя Discord не привязан майнкрафт-аккаунт. Запрос проигнорирован"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
requestNotAllowed:
title: "Ты не можешь запросить бан (у тебя нет нужной роли в Discord)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
requestConfirm:
title: "Хочешь забанить этого пользователя?"
description: "1. Хочешь запросить бан **${PLAYER_NAME}** по следующей причине: '*${REASON}*'.\n2. Проверь, что скин ниже принадлежит аккаунту **${PLAYER_NAME}**"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
actions:
confirm:
label: "Это он"
emoji: "U+2705"
cancel:
label: "Отмена"
emoji: "U+26D4"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
requestNotFound:
title: "Пользователь не найден"
description: "Не найдено ни одного аккаунта, связанного с этим пользователем Discord"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestCanceled:
title: "Запрос отменён"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestConfirmed:
title: "Твой запрос будет рассмотрен админами"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
punishmentPicker:
title: "Запрос на бан - Наказание"
description: "Пользователь Discord <@${REQUESTER_UUID}> хочет, чтобы майнкрафт-аккаунт **${PLAYER_NAME}** был забанен по причине:\n\"${REASON}\""
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
punishment:
label: "Наказание"
color: "ORANGE"
punishmentVoting:
title: "Запрос на бан - Наказание"
description: "Пользователь Discord <@${REQUESTER_UUID}> хочет, чтобы майнкрафт-аккаунт **${PLAYER_NAME}** был забанен по причине:\n\"${REASON}\".\n <@${ADMIN_UUID}> предлагает **${PUNISHMENT}** \n**${ACCEPT_VOTES}** голосов за, **${DENY_VOTES}** голосов против. (нужно ${MIN_ACCEPT_VOTES} голосов для принятия и ${MIN_DENY_VOTES} голосов для отклонения запроса)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
accept:
label: "Принять"
emoji: "U+2705"
deny:
label: "Отклонить"
emoji: "U+26D4"
color: "ORANGE"
punishmentDecided:
title: "Запрос на бан - Наказание"
description: "**${PLAYER_NAME}** получит следующее наказание: **${PUNISHMENT}**"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
punishmentVotingNotAllowed:
title: "Ты не можешь голосовать (у тебя нет нужной роли в Discord)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
reasonPicker:
title: "Запрос на бан - Причина"
description: "Пользователь Discord <@${REQUESTER_UUID}> хочет, чтобы майнкрафт-аккаунт **${PLAYER_NAME}** получил ${PUNISHMENT} по причине:\n\"${ORIGINAL_REASON}\". Эта причина была отклонена, какой должна быть причина?"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
change:
label: "Изменить причину"
color: "ORANGE"
reasonFirstVote:
title: "Запрос на бан - Причина"
description: "Пользователь Discord <@${REQUESTER_UUID}> хочет, чтобы майнкрафт-аккаунт **${PLAYER_NAME}** получил ${PUNISHMENT} по причине:\n\"${REASON}\".\n Это хорошая **причина**? \n**${ACCEPT_VOTES}** голосов за, **${DENY_VOTES}** голосов против. (нужно ${MIN_ACCEPT_VOTES} голосов для принятия и ${MIN_DENY_VOTES} голосов для отклонения запроса)"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
accept:
label: "Принять"
emoji: "U+2705"
deny:
label: "Отклонить"
emoji: "U+26D4"
color: "ORANGE"
reasonVoting:
title: "Запрос на бан - Изменение причины"
description: "Пользователь Discord <@${REQUESTER_UUID}> хочет, чтобы майнкрафт-аккаунт **${PLAYER_NAME}** получил ${PUNISHMENT} по причине:\n\"${ORIGINAL_REASON}\".\n\n <@${ADMIN_UUID}> предлагает изменить причину на \"${REASON}\" \n\n**${ACCEPT_VOTES}** голосов за, **${DENY_VOTES}** голосов против. (нужно ${MIN_ACCEPT_VOTES} голосов для принятия и ${MIN_DENY_VOTES} голосов для отклонения запроса"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
accept:
label: "Принять"
emoji: "U+2705"
deny:
label: "Отклонить"
emoji: "U+26D4"
color: "ORANGE"
reasonDecided:
title: "Запрос на бан - Принят"
description: "**${PLAYER_NAME}** получит следующее наказание: **${PUNISHMENT}**. По причине \"${REASON}\""
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
reasonVotingNotAllowed:
title: "Ты не можешь голосовать (у тебя нет нужной роли в Discord)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
publicDenied:
title: "Наказание отклонено"
description: "**${PLAYER_NAME}** не получил наказание\n(Запросил <@${REQUESTER_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
publicAccepted:
title: "Наказание принято"
description: "**${PLAYER_NAME}** получил *${PUNISHMENT}* по причине '*${REASON}*'\n(Запросил <@${REQUESTER_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
#
# *************************************************************************
# Разбаны *
# *************************************************************************
#
unban:
embeds:
alreadyRequested:
title: "Извини, ты уже отправлял запрос на разбан."
description: "Твой предыдущий запрос на бан сейчас рассматривается. Пожалуйста, подожди"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
notBanned:
title: "Ты не забанен."
description: "Ты не забанен, поэтому не можешь запросить разбан. (бедняга)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
playerNotFound:
title: "Ты ещё не зарегистрирован как майнкрафт-игрок"
description: "Сначала получи вайтлист, прежде чем пытаться разбаниться. Запрос проигнорирован"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "BLUE"
request:
title: "Запросить разбан"
description: "Хочешь разбаниться?\nНажми на кнопку ниже, чтобы запросить разбан!"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
button:
label: "Запросить разбан"
emoji: "U+2705"
color: "YELLOW"
notAllowed:
title: "Ты не можешь запросить разбан (у тебя нет нужной роли в Discord)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
noUnbanPunishment:
title: "Ты не можешь запросить разбан (у тебя есть наказание, запрещающее разбан)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
requestPlayerPicker:
title: "Выбери, за кого хочешь запросить разбан"
description: "Используй меню ниже, чтобы выбрать игрока:"
actions:
minecraftUser:
label: "Майнкрафт-аккаунт"
color: "BLUE"
requestConfirm:
title: "Хочешь разбанить следующего игрока?"
description: "1. Хочешь запросить снятие **${PUNISHMENT_NAME}** с **${PLAYER_NAME}** по следующей причине: '*${REASON}*'.\n2. Проверь, что скин ниже принадлежит аккаунту **${PLAYER_NAME}**"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
confirm:
label: "Это я"
emoji: "U+2705"
cancel:
label: "Отмена"
emoji: "U+26D4"
color: "BLUE"
requestCanceled:
title: "Запрос отменён"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
requestConfirmed:
title: "Твой запрос будет рассмотрен админами"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
voting:
title: "Запрос на разбан"
description: "Пользователь Discord <@${REQUESTER_UUID}> хочет, чтобы его наказание **${PUNISHMENT_NAME}** было снято с его майнкрафт-аккаунта **${PLAYER_NAME}**.\n Он указал следующую причину:\n *${REASON}* \n\n**${ACCEPT_VOTES}** голосов за, **${DENY_VOTES}** голосов против. \n(нужно ${MIN_ACCEPT_VOTES} голосов для принятия и ${MIN_DENY_VOTES} голосов для отклонения запроса)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
actions:
accept:
label: "Принять"
emoji: "U+2705"
deny:
label: "Отклонить"
emoji: "U+26D4"
color: "YELLOW"
votingDenied:
title: "Запрос на разбан - отклонён"
description: "Запрос от пользователя <@${REQUESTER_UUID}> на снятие наказания **${PUNISHMENT_NAME}** с **${PLAYER_NAME}** был отклонён"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
votingAccepted:
title: "Запрос на разбан - принят"
description: "Запрос от пользователя <@${REQUESTER_UUID}> на снятие наказания **${PUNISHMENT_NAME}** с **${PLAYER_NAME}** был принят"
imageUrl: "https://minotar.net/helm/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
votingNotAllowed:
title: "Ты не можешь голосовать (у тебя нет нужной роли в Discord)"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
publicDenied:
title: "Разбан отклонён"
description: "Наказание **${PLAYER_NAME}** *${PUNISHMENT_NAME}* не было снято. \n(Запросил <@${REQUESTER_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "RED"
publicAccepted:
title: "Разбан принят"
description: "Наказание **${PLAYER_NAME}** *${PUNISHMENT_NAME}* было снято.\n(Запросил <@${REQUESTER_UUID}>)"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
#
# *************************************************************************
# Техработы *
# *************************************************************************
#
maintenance:
embeds:
onStart:
title: "------------[Техработы]------------"
description: "Извини, сервер на техработах, сейчас ты не можешь зайти"
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "YELLOW"
onStop:
title: "------------[Техработы]------------"
description: "Сервер снова онлайн, техработы завершены."
footer:
message: "${CURRENT_DATE} ${CURRENT_TIME}"
color: "GREEN"
notAllowed:
title: "Извини, ты не можешь использовать эту команду"
wrongChannel:
title: "Извини, ты не можешь использовать эту команду в этом канале"
incomplete:
title: "Укажи, должен ли бот запустить или остановить режим техработ"
color: "RED"
command:
title: "Считай, что сделано, босс"
#
# *************************************************************************
# Команда info *
# *************************************************************************
#
infoCommand:
embeds:
notAllowed:
title: "Извини, ты не можешь использовать эту команду"
wrongChannel:
title: "Извини, ты не можешь использовать эту команду в этом канале"
incomplete:
title: "Укажи пользователя, аргументы команды неполные"
color: "RED"
notRegistered:
title: "Этот пользователь Discord не зарегистрирован на сервере"
description: "У <@${DISCORD_UUID}> нет майнкрафт-аккаунта в вайтлисте"
color: "BLUE"
command:
title: "*${PLAYER_NAME}*"
description: "${PLAYER_NAME}, зарегистрирован <@${DISCORD_UUID}>.\n У этого игрока следующие наказания:\n"
imageUrl: "https://minotar.net/body/${PLAYER_KEY}/100.png"
# Extra is used to add a line to the description for every punishment:
extra: "- *${PUNISHMENT_NAME}* до *${PUNISHMENT_UNTIL}*\n"
color: "BLUE"
#
# *************************************************************************
# Модальные окна *
# *************************************************************************
#
modals:
whitelist:
modals:
request:
title: "Запрос на вайтлист"
actions:
username:
label: "Никнейм"
placeholder: "Steve1234"
banning:
modals:
request:
title: "Запрос на бан"
actions:
discordUser:
label: "Пользователь Discord"
minecraftUser:
label: "Майнкрафт-аккаунт"
reason:
label: "Причина"
placeholder: "Укажи хорошую причину, почему ты хочешь забанить этого игрока"
reasonChange:
title: "Изменить причину"
actions:
reason:
label: "Причина"
placeholder: "${ORIGINAL_REASON}"
value: "${ORIGINAL_REASON}"
unban:
modals:
request:
title: "Запрос на разбан"
actions:
punishment:
label: "Наказание"
reason:
label: "Причина"
placeholder: "Укажи хорошую причину, почему ты хочешь разбаниться"
#
# *************************************************************************
# Команды *
# *************************************************************************
#
commands:
maintenance:
name: "maintenance"
description: "Команда для запуска или остановки режима техработ"
options:
startStop:
name: "start-stop"
description: "Запустить или остановить режим техработ"
options: ["start", "stop"]
info:
name: "player-info"
description: "Команда для отображения информации об игроке"
options:
subcommandMinecraft:
name: "minecraft"
description: "Получить информацию о майнкрафт-игроке"
subcommandDiscord:
name: "discord"
description: "Получить информацию о пользователе Discord"
minecraftUser:
name: "minecraft-user"
description: "Майнкрафт-игрок, о котором ты хочешь получить информацию"
discordUser:
name: "discord-user"
description: "Пользователь Discord, о котором ты хочешь получить информацию"
</details>
## Скачать
Перейдите на [modrinth.com](https://modrinth.com/plugin/discordio), чтобы скачать этот мод
## Установка
Дополнительную информацию смотрите на [discord.com/developers/docs/quick-start/getting-started](https://discord.com/developers/docs/quick-start/getting-started).
1. Запустите свой сервер (fabric или velocity) и остановите его снова
2. Сервер создаст папку mods или plugin, поместите jar-файл, соответствующий типу вашего сервера, в эту папку (перейдите на [modrinth.com](https://modrinth.com/plugin/discord-server), чтобы скачать)
3. Снова запустите сервер, этот мод создаст для вас файл config.yml, откройте его (следующие шаги проведут вас через его настройку)
4. Перейдите на портал разработчиков Discord [discord.com/developers/applications](https://discord.com/developers/applications)
5. Нажмите на "New application"

6. Выберите имя и примите пользовательское соглашение

7. Используйте боковую панель, чтобы перейти в раздел ботов

8. Нажмите на reset token и подтвердите

9. Скопируйте токен вашего бота и вставьте его в поле botToken вашего конфига

10. Снова в разделе ботов прокрутите вниз, чтобы включить gateway intent 'Message content intent'

11. Теперь используйте боковую панель, чтобы перейти к установке, и настройте следующее:

12. Скопируйте url, предоставленный Discord на предыдущем экране, и перейдите по нему, теперь вы можете пригласить его на сервер, куда бот должен отправлять сообщения
Теперь мы хотим настроить функции, вы можете использовать следующее руководство, чтобы получить ID канала:
[support.discord.com](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)
Затем вы можете скопировать ID ваших каналов в функции, которые хотите включить в конфиге (!отключите функцию, если не хотите её использовать!)
## Баги
Если вы найдёте баги или странное поведение, пожалуйста, откройте issue на github ([github.com](https://github.com/hidde2727/VelocityDiscord/issues)) или отправьте письмо на 93196280+hidde2727@users.noreply.github.comЧастые вопросы
Как установить DiscordIO?
Установите Fabric под свою версию Minecraft, скачайте DiscordIO под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть DiscordIO?
У DiscordIO есть сборки для Minecraft 1.21–26.3.
Нужен ли DiscordIO на сервере?
Ставится только на сервер; игрокам ставить не нужно
Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора