Skip to content
MrMe0wsPublic

About

ИИ бот для общения с игроками в Майнкрафте

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

PsichBot - AI бот для Minecraft

Плагин для Minecraft серверов на основе Purpur/Paper/Spigot, который добавляет AI бота "Псич" для общения с игроками в чате.

🎯 Возможности

  • 🤖 AI общение - Бот отвечает на сообщения игроков с использованием AI (Gemini, Groq, DeepSeek, Gemma или любой OpenAI-совместимый API)
  • 💬 Прямое обращение - Игроки могут обращаться к боту: "Псич, [сообщение]"
  • 🎲 Спонтанные ответы - Бот может сам отвечать на сообщения (настраиваемый шанс)
  • 🎮 Реакция на события - Бот реагирует на смерть игроков, достижения, подключение/отключение (с настраиваемым шансом)
  • ⏱️ Задержка ответа - Настраиваемая задержка перед отправкой сообщений для более естественного поведения
  • 🧠 Память и контекст - Бот запоминает историю разговоров и профили игроков
  • 📊 Система репутации - Бот анализирует отношения с игроками и адаптирует стиль общения
  • 🎨 Настройка цвета - Настраиваемый цвет ника бота в чате
  • 🧩 Выбор моделей - модель каждого провайдера указывается в конфиге, можно подключить свой API (OpenAI, OpenRouter, Mistral, Ollama и др.)
  • 🔧 Прокси поддержка - Поддержка HTTP прокси для работы на российских серверах
  • ⚙️ Команды управления - Административные команды для настройки бота
  • 🐛 Режим отладки - Подробное логирование для отслеживания работы и поиска багов
  • 💬 Discord интеграция - Автоматическая отправка сообщений бота в Discord через Webhook

📋 Требования

  • Minecraft сервер на Purpur/Paper/Spigot 1.21.10 – 26.3 (протестировано на 26.3)
  • Java 21+
  • API ключи от одного или нескольких провайдеров:
    • Google Gemini API
    • Groq API
    • DeepSeek API (опционально, платный)
    • Любой OpenAI-совместимый API (опционально)

📦 Установка

  1. Скачайте файл psich-bot.jar из папки target после сборки
  2. Поместите файл в папку plugins вашего сервера
  3. Запустите сервер один раз, чтобы создать конфигурационные файлы
  4. Откройте plugins/PsichBot/config.yml и настройте API ключи
  5. Перезапустите сервер или используйте /psich reload

⚙️ Настройка

config.yml

AI провайдеры

ai:
  # Gemini API ключи (можно указать несколько для ротации)
  gemini-keys:
    - "YOUR_GEMINI_KEY_HERE"
    - "YOUR_SECOND_GEMINI_KEY_HERE" # Опционально

  # Groq API ключи (можно указать несколько для ротации)
  groq-keys:
    - "YOUR_GROQ_KEY_HERE"

  # DeepSeek API ключи (платный, используется только в крайнем случае)
  deepseek-keys:
    - "YOUR_DEEPSEEK_KEY_HERE"

Выбор моделей

Модели больше не зашиты в плагин - их можно поменять в конфиге. Если провайдер вернул ошибку «модель не найдена» (Google периодически отключает старые модели), впишите актуальную модель и выполните /psich reload.

ai:
  models:
    gemini: "gemini-flash-latest" # всегда последняя Flash модель Google
    gemma: "gemma-4-26b-a4b-it"
    groq: "llama-3.3-70b-versatile"
    groq-simple: "llama-3.1-8b-instant"
    deepseek: "deepseek-flash"
    # Уровень "размышлений" моделей Google: minimal, low, medium, high ("" - не отправлять)
    google-thinking-level: "minimal"

Актуальные списки моделей: Gemini/Gemma, Groq, DeepSeek.

Если вы обновились со старой версии, секции models, custom, priority не появятся в вашем config.yml автоматически - плагин использует значения по умолчанию. Скопируйте нужные секции из этого README, чтобы их изменить.

Свой провайдер (OpenAI-совместимый API)

Можно подключить любую модель, у которой есть API в формате OpenAI (/chat/completions): OpenAI, OpenRouter, Mistral, xAI, локальные Ollama / LM Studio и т.д.

ai:
  custom:
    enabled: true
    api-url: "https://openrouter.ai/api/v1/chat/completions"
    model: "openai/gpt-5-mini"
    keys:
      - "sk-..."
    # true, если API поддерживает response_format: json_object
    json-mode: false

Для локальных моделей (http://localhost:11434/v1/chat/completions у Ollama) ключ можно не указывать.

Порядок провайдеров

ai:
  # Для ответов в чате: первый доступный - основной, остальные - запасные
  priority: ["Custom", "Groq", "Gemini", "Gemma", "Groq-Simple", "DeepSeek"]
  # Для простых задач (решить, стоит ли отвечать) - лучше начинать с дешевых моделей
  simple-priority: ["Gemma", "Groq-Simple", "Custom", "Groq", "Gemini", "DeepSeek"]

Провайдеры без ключей пропускаются автоматически. Чтобы бот работал только через свою модель, включите custom и не указывайте ключи остальных провайдеров.

Настройки общения

chat:
  # Триггер для прямого обращения к боту
  trigger: "псич"

  # Шансы спонтанного ответа (0.05 = 5%)
  # Шанс спонтанного ответа на обычные сообщения в чате
  spontaneous-chance-message: 0.05
  # Шанс спонтанного ответа на вход/выход/первый заход игроков
  spontaneous-chance-join-quit: 0.1
  # Шанс спонтанного ответа на получение ачивок игроками
  spontaneous-chance-advancement: 0.1
  # Шанс спонтанного ответа на смерти игроков
  spontaneous-chance-death: 0.1

  # Количество последних сообщений для анализа
  context-size: 15

  # Минимальная длина сообщения для спонтанного ответа
  min-message-length: 10

  # Цвет ника Псича в чате
  name-color: "green" # Можно использовать: yellow, red, blue, green и т.д.

  # Задержка перед отправкой сообщения бота (в секундах, для более естественного поведения)
  # Рекомендуется: 1.0 - 2.0 секунды
  response-delay: 1.5

Прокси (для российских серверов)

proxy:
  # Включить использование прокси
  enabled: true

  # Адрес прокси сервера
  host: "ip"

  # Порт прокси сервера
  port: 3128

  # Имя пользователя для прокси (оставьте пустым если не требуется)
  user: ""

  # Пароль для прокси (оставьте пустым если не требуется)
  password: ""

Системный промпт

В секции prompt.system можно редактировать личность и поведение бота.

Режим отладки

debug: false # Установите true для подробного логирования

Интеграция с Discord (через Webhook)

discord:
  # Включить отправку сообщений бота в Discord
  enabled: true

  # URL вебхука Discord (полный URL)
  webhook-url: "https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN"

  # Имя отправителя в Discord (опционально)
  username: "Псич"

  # URL аватарки для вебхука (опционально, прямая ссылка на изображение PNG/JPG/GIF)
  avatar-url: "https://example.com/avatar.png"

Как создать Discord Webhook:

  1. Откройте настройки канала Discord, куда хотите отправлять сообщения
  2. Перейдите в раздел "Интеграции" → "Вебхуки"
  3. Нажмите "Создать вебхук" или "Новый вебхук"
  4. Скопируйте URL вебхука (формат: https://discord.com/api/webhooks/ID/TOKEN)
  5. Вставьте URL в discord.webhook-url в конфиге PsichBot
  6. Включите discord.enabled: true

Сообщения бота будут автоматически отправляться в указанный Discord канал через вебхук. Цветовые коды Minecraft и префикс <Псич> будут автоматически удалены из сообщений для Discord (имя уже указано в username).

Примечание: Для аватарки можно использовать прямую ссылку на изображение (PNG, JPG, GIF). Изображение должно быть доступно публично по указанному URL.

Реакция на игровые события

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

  • Смерть игроков - бот видит когда игрок умирает и может прокомментировать это
  • Достижения - бот видит когда игрок получает достижения (рецепты игнорируются) и может поздравить или прокомментировать
  • Подключение к серверу - бот видит когда игрок присоединяется к серверу и может поприветствовать
  • Первое подключение - бот различает первое подключение игрока и может поприветствовать новичка по-особенному
  • Отключение от сервера - бот видит когда игрок отключается и может попрощаться

Реакция на события происходит с настраиваемым шансом для каждого типа события:

  • Сообщения в чате: chat.spontaneous-chance-message (по умолчанию 0.05 = 5%)
  • Вход/выход/первый заход: chat.spontaneous-chance-join-quit (по умолчанию 0.1 = 10%)
  • Ачивки: chat.spontaneous-chance-advancement (по умолчанию 0.1 = 10%)
  • Смерти: chat.spontaneous-chance-death (по умолчанию 0.1 = 10%)

Сначала проверяется шанс, затем AI решает, стоит ли отвечать на событие.

Важно:

  • Бот автоматически обрабатывает Discord rate limiting с повторными попытками
  • Бот ограничен максимум 2 сообщениями подряд (510 символов) для предотвращения спама

Получение API ключей

🎮 Команды

  • /psich help - Показать справку (доступна всем)
  • /psich mute - Включить/выключить режим тишины (только для админов)
  • /psich reload - Перезагрузить конфигурацию (только для админов)
  • /psich reset - Сбросить историю чата (только для админов)

💬 Использование

Прямое обращение к боту

Просто напишите в чат:

Псич, как дела?

или

Псич, что такое майнкрафт?

Спонтанные ответы

Бот автоматически анализирует последние сообщения в чате и может сам ответить, если это уместно.

🔧 Логика работы AI провайдеров

Плагин использует несколько AI провайдеров с автоматическим переключением. Порядок задается в ai.priority, модели - в ai.models.

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

  1. Custom (ваш OpenAI-совместимый API) - если включен
  2. Groq (llama-3.3-70b-versatile) - основной провайдер
  3. Gemini (gemini-flash-latest) - резерв, также используется для поиска в интернете
  4. Gemma (gemma-4-26b-a4b-it) - простой fallback
  5. Groq-Simple (llama-3.1-8b-instant) - простой fallback
  6. DeepSeek (deepseek-flash) - только если все остальные исчерпали лимиты (платный)

При исчерпании лимитов или ошибке одного провайдера автоматически происходит переключение на следующий.

📁 Структура данных

Плагин сохраняет данные в папке plugins/PsichBot/data/:

  • db.json - История чатов и настройки
  • profiles.json - Профили игроков с репутацией и фактами

🐛 Режим отладки

Включите debug: true в конфиге для получения подробных логов:

  • Обработка сообщений
  • Выбор AI провайдеров
  • Переключение между провайдерами
  • Генерация ответов
  • Анализ репутации

🔒 Безопасность

  • API ключи хранятся в config.yml (не коммитьте их в Git!)
  • Используйте .gitignore для исключения конфигов с ключами
  • Прокси поддерживает авторизацию для безопасности

📝 Особенности

  • Бот адаптирует стиль общения под каждого игрока
  • Запоминает контекст разговоров
  • Анализирует отношения с игроками (репутация 0-100)
  • Поддерживает несколько AI провайдеров с автоматическим переключением
  • Все AI запросы выполняются асинхронно, не блокируя сервер
  • Сообщения автоматически разбиваются на части по 256 символов (лимит Minecraft)

🛠️ Сборка из исходников

  1. Убедитесь, что у вас установлен Maven
  2. Выполните команду:
mvn clean package
  1. Готовый JAR файл будет в папке target/

📄 Лицензия

ISC

👤 Автор

PsiKeiKen / Meows

🙏 Благодарности

Основано на логике Telegram бота для общения с пользователями.

About

ИИ бот для общения с игроками в Майнкрафте

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages