Skip to content

lalds/NLThinkingPanel

Repository files navigation

🤖 NLThinkingPanel Pro

Python Discord.py OpenRouter License

NLThinkingPanel Pro — профессиональный Discord-бот с AI, который понимает контекст вашего сервера и предоставляет персонализированные ответы на основе активности пользователей, истории сообщений и текущего состояния сообщества.


✨ Ключевые возможности

🧠 Интеллектуальная система 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

🚀 Быстрый старт

1. Установка

# Клонирование репозитория
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

2. Настройка

Скопируйте .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

3. Discord Developer Portal

Критически важно! Включите Privileged Gateway Intents:

  1. Откройте Discord Developer Portal
  2. Выберите ваше приложение → Bot
  3. Включите в разделе Privileged Gateway Intents:
    • Presence Intent (отслеживание статусов)
    • Server Members Intent (список участников)
    • Message Content Intent (чтение сообщений)
  4. Save Changes

4. Запуск

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:

AI параметры

  • 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:

  • Общее количество запросов
  • Статистика по пользователям
  • Статистика по моделям
  • Дневная статистика
  • История ошибок

🐛 Решение проблем

Бот не запускается

  1. Проверьте .env файл: Убедитесь, что DISCORD_TOKEN и OPENROUTER_API_KEY заполнены
  2. Проверьте Intents: Все три Privileged Intents должны быть включены
  3. Проверьте логи: Смотрите logs/ для деталей ошибки

Бот не отвечает на команды

  1. Проверьте префикс: По умолчанию !, можно изменить в .env
  2. Проверьте права: Бот должен иметь права на чтение/отправку сообщений
  3. Проверьте rate limit: Возможно, вы превысили лимит запросов

Ошибки API

  1. Проверьте ключ OpenRouter: Убедитесь, что ключ валиден
  2. Проверьте модель: Некоторые модели могут быть недоступны
  3. Fallback модели: Бот автоматически попробует резервные модели

📝 Лицензия

Этот проект распространяется под лицензией MIT. Подробности в файле LICENSE.


🤝 Вклад в проект

Приветствуются Pull Requests! Для крупных изменений сначала откройте Issue для обсуждения.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages