NLThinkingPanel Pro — профессиональный Discord-бот с AI, который понимает контекст вашего сервера и предоставляет персонализированные ответы на основе активности пользователей, истории сообщений и текущего состояния сообщества.
- Мультимодельная поддержка: Интеграция с топовыми моделями через OpenRouter (Claude, GPT-4, Llama, Gemini)
- Автоматический fallback: При недоступности основной модели автоматически переключается на резервные
- Оптимизация промптов: Умное сжатие контекста для экономии токенов
- Retry logic: Автоматические повторные попытки при временных сбоях
- Отслеживание активности: Игры, Spotify, стримы, кастомные статусы
- История сообщений: Анализ последних сообщений в канале для понимания контекста разговора
- Статистика сервера: Автоматический подсчёт активных пользователей по типам деятельности
- Персонализация: Ответы учитывают, кто и чем занимается на сервере
- Smart Cache: Кэширование ответов с TTL для ускорения повторяющихся запросов
- Rate Limiting: Защита от спама с настраиваемыми лимитами
- Асинхронная архитектура: Быстрая обработка множественных запросов
- Оптимизация токенов: Автоматическое сжатие длинных промптов
- Детальная статистика: Отслеживание использования по пользователям, моделям, времени
- Логирование: Цветные логи с ротацией файлов
- Отчёты: Генерация отчётов за любой период
- Метрики производительности: Время ответа, использование токенов, hit rate кэша
- Cogs система: Легко добавляйте новые команды и функции
- Конфигурация через .env: Все настройки в одном месте
- Валидация конфигурации: Автоматическая проверка настроек при запуске
- Расширяемость: Простое добавление новых модулей
NLThinkingPanel/
├── main.py # Точка входа
├── bot.py # Старая версия (deprecated)
├── requirements.txt # Зависимости
├── .env.example # Шаблон конфигурации
│
├── config/ # Конфигурация
│ ├── __init__.py
│ └── config.py # Централизованная конфигурация
│
├── core/ # Ядро системы
│ ├── __init__.py
│ ├── logger.py # Система логирования
│ ├── cache.py # Smart Cache с TTL
│ └── rate_limiter.py # Rate limiting
│
├── modules/ # Бизнес-логика
│ ├── __init__.py
│ ├── ai_provider.py # AI провайдер с fallback
│ ├── context_builder.py # Построение контекста
│ └── analytics.py # Аналитика и метрики
│
├── cogs/ # Команды бота
│ ├── __init__.py
│ ├── ai_commands.py # AI команды (!ask, !quick)
│ └── admin.py # Админ команды
│
├── data/ # Данные (создаётся автоматически)
│ └── analytics.json # Статистика
│
└── logs/ # Логи (создаётся автоматически)
└── nlthinkingpanel_*.log
# Клонирование репозитория
git clone https://github.com/your-username/NLThinkingPanel.git
cd NLThinkingPanel
# Создание виртуального окружения (рекомендуется)
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/Mac
# Установка зависимостей
pip install -r requirements.txtСкопируйте .env.example в .env и заполните:
# Обязательные параметры
DISCORD_TOKEN=your_discord_token_here
OPENROUTER_API_KEY=your_openrouter_api_key_here
# Рекомендуемые настройки
OPENROUTER_MODEL=anthropic/claude-3-haiku
COMMAND_PREFIX=!
RATE_LIMIT_REQUESTS=5
CACHE_ENABLED=true
# Для админ-команд укажите ваш Discord ID
ADMIN_IDS=123456789Критически важно! Включите Privileged Gateway Intents:
- Откройте Discord Developer Portal
- Выберите ваше приложение → Bot
- Включите в разделе Privileged Gateway Intents:
- ✅ Presence Intent (отслеживание статусов)
- ✅ Server Members Intent (список участников)
- ✅ Message Content Intent (чтение сообщений)
- Save Changes
python main.pyПри успешном запуске вы увидите:
🤖 Бот запущен: YourBotName (ID: ...)
📊 Серверов: 1
👥 Пользователей: 42
🔧 Префикс команд: !
🤖 Модель: anthropic/claude-3-haiku
| Команда | Описание | Пример |
|---|---|---|
!ask <вопрос> |
Задать вопрос с полным контекстом сервера | !ask Кто сейчас играет? |
!web <запрос> |
Поиск в сети Интернет с анализом ИИ | !web курс доллара |
!quick <вопрос> |
Быстрый вопрос без контекста (быстрее) | !quick Что такое Python? |
!context |
Показать текущий контекст сервера | !context |
!profile set <текст> |
Установить ваш персональный профиль | !profile set Я программист на Python |
!profile show |
Показать ваш профиль | !profile show |
!profile delete |
Удалить ваш профиль | !profile delete |
!mystats |
Ваша личная статистика использования | !mystats |
!help |
Справка по командам | !help |
| Команда | Описание | Пример |
|---|---|---|
!stats |
Общая статистика бота | !stats |
!report [дни] |
Отчёт за N дней (по умолчанию 7) | !report 30 |
!config |
Показать текущую конфигурацию | !config |
!clearcache |
Очистить кэш | !clearcache |
!clearhistory |
Очистить историю канала | !clearhistory |
!resetlimit [@user] |
Сбросить rate limit для пользователя | !resetlimit @User |
👤 User: !ask Кто сейчас играет в Minecraft?
🤖 Bot: Сейчас в Minecraft играют @Alex и @Maria.
Судя по тому, что @John слушает энергичную музыку в Spotify,
возможно, он тоже скоро присоединится! 🎮
🤖 anthropic/claude-3-haiku | ⏱️ 1.2s
👤 User: !quick Объясни что такое рекурсия
🤖 Bot: Рекурсия — это когда функция вызывает сама себя.
Классический пример: вычисление факториала.
⚡ Quick mode | 0.8s
👤 Admin: !stats
🤖 Bot: 📊 Статистика бота
⏱️ Время работы: 5 дней
📨 Всего запросов: 1,247
🪙 Токенов использовано: 342,891
👥 Уникальных пользователей: 23
💾 Кэш: Размер: 45 | Hit rate: 67.3%
🏆 Топ пользователей:
1. Alex: 234 запросов
2. Maria: 189 запросов
3. John: 156 запросов
Все настройки в файле .env:
OPENROUTER_MODEL- Модель AI (по умолчанию:anthropic/claude-3-haiku)TEMPERATURE- Креативность ответов 0-2 (по умолчанию:0.7)MAX_TOKENS- Максимум токенов в ответе (по умолчанию:2000)SYSTEM_PROMPT- Базовая инструкция для AI
CACHE_ENABLED- Включить кэширование (true/false)CACHE_TTL_SECONDS- Время жизни кэша в секундах (по умолчанию:300)MAX_HISTORY_MESSAGES- Сколько сообщений хранить в истории (по умолчанию:10)
RATE_LIMIT_ENABLED- Включить rate limiting (true/false)RATE_LIMIT_REQUESTS- Запросов в окне (по умолчанию:5)RATE_LIMIT_WINDOW- Размер окна в секундах (по умолчанию:60)ADMIN_IDS- Discord ID администраторов через запятую
LOG_LEVEL- Уровень логов:DEBUG,INFO,WARNING,ERROR(по умолчанию:INFO)ANALYTICS_ENABLED- Сбор аналитики (true/false)
Создайте файл в cogs/my_commands.py:
from discord.ext import commands
class MyCommands(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command(name='hello')
async def hello(self, ctx):
await ctx.send(f"Привет, {ctx.author.mention}!")
async def setup(bot):
await bot.add_cog(MyCommands(bot))Бот автоматически загрузит новый модуль при запуске!
Создайте файл в modules/my_module.py и импортируйте в нужных cogs.
Логи сохраняются в logs/nlthinkingpanel_YYYYMMDD.log:
- Цветной вывод в консоль
- Автоматическая ротация (макс 10MB на файл)
- Хранение последних 5 файлов
Данные сохраняются в data/analytics.json:
- Общее количество запросов
- Статистика по пользователям
- Статистика по моделям
- Дневная статистика
- История ошибок
- Проверьте .env файл: Убедитесь, что
DISCORD_TOKENиOPENROUTER_API_KEYзаполнены - Проверьте Intents: Все три Privileged Intents должны быть включены
- Проверьте логи: Смотрите
logs/для деталей ошибки
- Проверьте префикс: По умолчанию
!, можно изменить в.env - Проверьте права: Бот должен иметь права на чтение/отправку сообщений
- Проверьте rate limit: Возможно, вы превысили лимит запросов
- Проверьте ключ OpenRouter: Убедитесь, что ключ валиден
- Проверьте модель: Некоторые модели могут быть недоступны
- Fallback модели: Бот автоматически попробует резервные модели
Этот проект распространяется под лицензией MIT. Подробности в файле LICENSE.
Приветствуются Pull Requests! Для крупных изменений сначала откройте Issue для обсуждения.