Note
==========ТЕПЕРЬ ФАЙЛ В ОТКРЫТОМ РЕПОЗИТОРИЙ 09.01.2026==========
Discord AI Bot - полностью автономный искусственный интеллект для Discord, работающий без внешних API ключей. Бот использует локальную систему правил, память и контекст для (не)интеллектуального общения с пользователями.
✨ Особенности 🚀 Ключевые возможности ✅ Полностью локальный - не требует API ключей
✅ Слэш-команды - современный интерфейс Discord
✅ Активные чаты - бот отвечает на все сообщения в канале
✅ Интеллектуальные ответы - контекст, память, персонализация
✅ Автономная работа - сохранение данных между перезапусками
✅ Быстрая установка - готов к работе за 5 минут
Естественное общение - ответы на вопросы, поддержка диалога
Математические вычисления - решение выражений (2+2, 5*3, etc)
Запоминание информации - имена, факты, предпочтения пользователей
Контекст диалога - помнит последние 10 сообщений
Персонализация - обращается по имени, помнит предпочтения
Шутки и развлечения - встроенная база анекдотов
Node.js 16.9.0 или выше
Discord аккаунт с правами разработчика
Git (опционально)
bash git clone https://github.com/Mayato3km/Test-AI-without-keys cd Test-AI-without-keys
bash
npm install
Перейдите на Discord Developer Portal
Создайте новое приложение
Перейдите в раздел "Bot" и создайте бота
Скопируйте токен бота
Включите необходимые привилегии:
MESSAGE CONTENT INTENT
SERVER MEMBERS INTENT (опционально)
Создайте файл .env в корневой папке:
env
DISCORD_TOKEN=ваш_токен_бота_здесь
Start.bat просто запустите ее (если вы на винде)
npm run dev
npm start
В Discord Developer Portal перейдите в OAuth2 → URL Generator
Выберите scopes: bot, applications.commands
Выберите permissions:
Send Messages
Read Messages/View Channels
Send Messages in Threads
Embed Links
Read Message History
Используйте сгенерированную ссылку для приглашения
/chat start Теперь бот будет отвечать на все сообщения в этом канале!
Начните общение:
Привет! Меня зовут Алексей Сколько будет 25*4? Запомни, что я люблю программировать Что ты знаешь обо мне? 💬 Способы взаимодействия
- Активные чаты (Рекомендуется) text /chat start # Активировать AI в текущем канале /chat stop # Отключить AI в канале /chat status # Показать статус Режимы работы:
🤖 Умный - отвечает на все сообщения
👂 Упоминания - только при @упоминании
🔇 Тихий - редко отвечает (для фонового режима)
- Слэш-команды Команда Описание Пример /ask [вопрос] Задать вопрос AI /ask Как дела? /remember [инфо] Запомнить информацию /remember я люблю кофе /calculate [пример] Решить математику /calculate 15*3+2 /joke Рассказать шутку /joke /ai help Помощь по командам /ai help /ai stats Статистика бота /ai stats /ai ping Проверить задержку /ai ping /ai info Информация о боте /ai info
- Упоминания Просто упомяните бота в любом чате:
@бот Привет!
@бот Сколько будет 100/4?
- Личные сообщения Напишите боту в личные сообщения (DM) - он ответит на любое ваше сообщение.
Команда Описание Права /admin memory clear_all Очистить всю память AI Администратор /admin memory clear_user [id] Очистить память пользователя Администратор /admin memory stats Статистика памяти Администратор /admin setmode [режим] Установить режим работы Администратор 🏗️ Архитектура проекта
├── 📄 .env # Конфигурация (токен бота)
├── 📄 package.json # Зависимости и скрипты
├── 📄 index.js # Основной файл бота (Discord интерфейс)
├── 📁 ai/ # Логика искусственного интеллекта
│ ├── 📄 processor.js # Основной AI процессор
│ └── 📄 memory.js # Система памяти пользователей
├── 📁 data/ # Хранение данных
│ ├── 📄 memory.json # База знаний о пользователях
│ └── 📄 active_chats.json # Активные чаты
└── 📄 README.md # Эта документация
Обработка слэш-команд и сообщений
Управление активными чатами
Взаимодействие с Discord API
Анализ естественного языка
Поиск ответов по правилам
Обработка математических выражений
Управление контекстом диалога
Хранение информации о пользователях
Автосохранение в JSON файлы
Поиск и извлечение данных
memory.json - факты о пользователях
active_chats.json - активные каналы
Автоматическое резервное копирование
Пользователь → Discord → index.js → processor.js → memory.js
↑ ↓
Ответ ← Discord ← index.js ← processor.js ←───────┘
⚙️ Технические детали
🛠️ Технологии
Discord.js v14 - взаимодействие с Discord API
Node.js - серверная платформа
JSON файлы - хранение данных
ES6 Modules - современный JavaScript
Локальные JSON файлы - без внешних баз данных
Автоматическое сохранение - при каждом изменении
Человекочитаемый формат - легко редактировать
Нет API ключей - полностью автономная работа
Локальное хранение - данные остаются на вашем сервере
Минимальные права - только необходимые разрешения Discord
Отредактируйте ai/processor.js - добавьте новые правила в объект rules:
javascript
this.rules = {
// Существующие правила...
newCategory: {
patterns: ['ключевые слова'],
responses: ['Вариант ответа 1', 'Вариант ответа 2'],
weight: 1.0
}
};
Изменение ответов - редактируйте массивы responses в processor.js
Добавление команд - создайте новые слэш-команды в index.js
Изменение логики - модифицируйте методы класса LocalAI
Интеграция с внешними API - добавьте вызовы API в processor.js
Частые проблемы и решения Проблема Решение Бот не отвечает на команды Проверьте токен в .env файле Слэш-команды не отображаются Подождите 1-2 часа или перезапустите бота Бот не сохраняет память Проверьте права на запись в папку data/ Ошибки при запуске Убедитесь что Node.js версии 16.9.0+ Бот не видит сообщения Включите MESSAGE CONTENT INTENT Логирование ошибок Бот автоматически логирует все ошибки в консоль. Для детального логирования добавьте в index.js:
javascript client.on('debug', console.log); client.on('warn', console.log); 📈 Производительность Системные требования RAM: 100+ MB (зависит от количества пользователей)
CPU: Минимальные требования
Хранилище: 10+ MB на пользователя
Оптимизация Ленивая загрузка данных
Кэширование в памяти
Пакетное сохранение
Оптимизированные алгоритмы поиска
🤝 Вклад в проект Как помочь развитию проекта Форкните репозиторий
Создайте ветку для новой функции
Внесите изменения
Создайте Pull Request
Планы развития Веб-панель управления
Плагинная система
Мультиязычность
Машинное обучение
Голосовой интерфейс
┌─────────────────────────────────────────────────────────────────────────┐
│ Discord AI Bot - Архитектура │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Discord API │◄──►│ index.js │◄──►│ Пользователи │ │
│ │ (События) │ │ (Интерфейс) │ │ │ │
│ └─────────────────┘ └────────┬────────┘ └─────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ processor.js (AI Ядро) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Правила │ │ Контекст │ │ Логика │ │ │
│ │ │ (База) │ │ (Диалог) │ │ (Анализ) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └──────────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ memory.js (Память) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Память │ │ Загрузка/ │ │ Поиск/ │ │ │
│ │ │ (RAM) │ │ Сохранение │ │ Извлечение │ │ │
│ │ └─────────────┘ └──────────────┘ └──────────────┘ │ │
│ └──────────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ data/ (Постоянное хранилище) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ memory.json │ │ active_ │ │ │
│ │ │ (Факты) │ │ chats.json │ │ │
│ │ │ │ │ (Каналы) │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ Ключ: ───► Поток данных ┌─────┐ Класс/Модуль [────] Файл/Хранилище │
└─────────────────────────────────────────────────────────────────────────┘
- [Пользователь] → Отправляет сообщение
- [Discord API] → Передает событие
- [index.js] → Принимает и фильтрует
- [processor.js] → Анализирует, ищет ответ
- [memory.js] → Проверяет память, сохраняет новое
- [processor.js] → Формирует ответ
- [index.js] → Отправляет ответ
- [Discord API] → Доставляет пользователю
- [Пользователь] → Получает ответ
• Синий прямоугольник = Основной модуль • Зеленый прямоугольник = Подмодуль/класс • Фиолетовый прямоугольник = Хранилище данных • Сплошная стрелка = Основной поток • Пунктирная стрелка = Взаимодействие
Уникальные аспекты архитектуры: Модульность - каждый компонент независим
Расширяемость - легко добавлять новые функции
Производительность - оптимизировано для Discord
Надежность - автоматическое восстановление
Документированность - понятный код и комментарии
Преимущества перед другими ботами: 🆓 Бесплатный - не требует платных API
🔒 Приватный - данные остаются у вас
⚡ Быстрый - мгновенные ответы
🛠️ Гибкий - легко настраивается
📚 Открытый - полный доступ к коду
text
┌─────────────┐ WebSocket ┌─────────────┐ Многопоточная ┌─────────────┐
│ JavaScript │ ◄──────────────► │ C# Сервер │ ◄───────────────► │ Процессор │
│ Клиент │ JSON │ Контроллер │ Потоки/Ядра │ (Ядра) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
│ 1. Отправка запроса │ 2. Постановка в очередь │ 3. Распределение
│ │ │ по ядрам
│ │ 5. Возврат результата │ 4. Параллельная
│ ◄─────────────────────────────│ │ обработка
│ │ │
На стороне C# сервера:
MultiCoreRequestController - основной класс управления
Очередь запросов (BlockingCollection) для потокобезопасности
Рабочие потоки (по одному на ядро процессора)
HTTP/WebSocket сервер для приема соединений
Система мониторинга производительности ядер
WebSocket клиент для двусторонней связи
Интерфейс управления (кнопки для разных операций)
Система логирования и отображения результатов
Прием запроса: JavaScript отправляет JSON запрос через WebSocket
Постановка в очередь: Запрос попадает в общую очередь
Распределение: Свободный рабочий поток берет запрос из очереди
Обработка: Запрос выполняется на конкретном ядре CPU
Отправка результата: Результат возвращается через WebSocket
Привязка потоков к ядрам: Используется SetThreadAffinityMask для Windows
Параллельная обработка: Для тяжелых операций используется Parallel.For
Балансировка нагрузки: Автоматическое распределение по доступным ядрам
Мониторинг: Сбор статистики по загрузке каждого ядра
Отказоустойчивость: Обработка ошибок и восстановление соединений
calculate - быстрые вычисления
process_data - обработка данных с использованием всех ядер
heavy_computation - тяжелые вычисления через Parallel.For
get_metrics - получение статистики производительности
Масштабируемость: Автоматически использует все доступные ядра CPU
Эффективность: Минимизация накладных расходов на переключение контекста
Гибкость: Легко добавлять новые типы операций
Мониторинг: Визуализация загрузки системы в реальном времени
Кроссплатформенность: Работает через стандартные WebSocket
Визуальная структура данных:
Запрос от JS → [WebSocket] → [Очередь] → [Рабочий поток] → [Ядро CPU]
│ │ │ │ │
│ │ │ │ [Обработка]
│ │ │ │ │
│ │ │ │ [Результат]
│ │ │ │ │
◄────────────┼────────────┼──────────────┼────────────────
[Ответ через WebSocket]
Что мы получаем: Максимальная утилизация CPU: Все ядра процессора задействованы
Низкая задержка: Параллельная обработка независимых запросов
Высокая пропускная способность: Обработка множества запросов одновременно
Стабильность: Контроль нагрузки и предотвращение перегрузок
Система идеально подходит для задач:
Параллельных вычислений
Обработки больших объемов данных
Выполнения сложных алгоритмов
Распределенных вычислений от веб-клиентов