Умный Telegram бот с искусственным интеллектом, долговременной памятью и уникальной личностью. Бот запоминает пользователей, анализирует их характер, поддерживает контекстные диалоги и имеет встроенный планировщик сообщений.
- Интеграция с LM Studio для локальных LLM моделей
- Уникальная личность "Димон" - разработчик с района
- Контекстные ответы с учетом истории общения
- Адаптивное поведение в зависимости от типа сообщения
- Векторная память с использованием sentence-transformers
- SQLite база данных для долговременного хранения
- Профили пользователей с анализом характера и интересов
- Умный контекст с поиском релевантных воспоминаний
- Отслеживание взаимодействий и построение отношений
- Анализ тональности сообщений
- Определение интересов и технических предпочтений
- Система уровней отношений: незнакомец → знакомый → приятель → братан
- Автоматические утренние приветствия (8:00 МСК)
- Вечерние прощания (17:00 МСК)
- Поддержка рабочих дней (пн-пт)
- Специальные сообщения для пятницы
- Асинхронная архитектура
- Система кулдаунов с учетом отношений
- Автоматическая очистка старых данных
- Поддержка топиков в Telegram группах
- Детальное логирование на русском языке
Продвинутые фичи:
- Local LLM integration (LM Studio)
- Vector memory system с sentence-transformers
- User profiling с анализом характера
- Contextual conversations с долговременной памятью
- Scheduling system для автоматических сообщений
- Python 3.8+
- LM Studio с запущенной моделью
- Telegram Bot Token (получить у @BotFather)
- Клонируйте репозиторий:
git clone https://github.com/R0D10Nq/BydlanBot.git
cd BydlanBot- Установите зависимости:
pip install -r requirements.txt- Настройте конфигурацию:
cp .env.example .env
# Отредактируйте .env файл своими данными-
Запустите LM Studio:
- Скачайте и установите LM Studio
- Загрузите совместимую модель (рекомендуется 7B-13B параметров)
- Запустите локальный сервер на порту 1234
-
Запустите бота:
python bot.py# Telegram
TELEGRAM_BOT_TOKEN=your_bot_token_here
CHAT_ID=-1001234567890 # ID группы/чата
FLOOD_TOPIC_ID=675 # ID топика (опционально)
# LM Studio
LM_STUDIO_URL=http://localhost:1234
MODEL_NAME=your_model_name
# Поведение бота
MAX_TOKENS=2048 # Максимум токенов в ответе
CONTEXT_WINDOW=250 # Размер окна контекста
MAX_PARALLEL=4 # Параллельные запросы
COOLDOWN=2 # Кулдаун между ответами (сек)
# Планировщик
ENABLE_SCHEDULE=true # Включить планировщик
MORNING_TIME=08:00 # Время утреннего приветствия
EVENING_TIME=17:00 # Время вечернего прощания
TIMEZONE=Europe/Moscow # Часовой пояс- Добавьте бота в группу
- Отправьте сообщение в группу
- Перейдите по ссылке:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - Найдите
"chat":{"id":-1001234567890}в ответе
/start- Приветствие и информация о боте/status- Подробный статус системы и статистика/memory- Показать что бот помнит о пользователе/schedule_test- Тест планировщика сообщений
SmartBot/
├── 🧠 AdvancedContextManager # Управление памятью и контекстом
├── 🔍 MessageAnalyzer # Анализ необходимости ответа
├── 📝 PromptGenerator # Генерация промптов для LLM
├── ⏰ ScheduledMessages # Планировщик сообщений
├── 💾 DatabaseManager # Работа с SQLite
└── 🔤 VectorMemory # Векторный поиск
- messages - История сообщений с метаданными
- user_profiles - Профили пользователей с характеристиками
- Краткосрочная - Последние N сообщений в памяти
- Векторная - Семантический поиск по эмбеддингам
- Долговременная - SQLite база с полной историей
Димон - 28-летний фулл-стек разработчик с уникальным характером:
- 🏠 Живет в частном доме, работает удаленно
- 💻 Эксперт в JS/TS, React, Node.js, Python, Django
- 🗣️ Говорит пацанским языком с техническими терминами
- 🤝 Адаптируется под каждого пользователя
- 💪 Помогает с кодом, но по-своему
# Основные классы
class SmartBot: # Главный класс бота
class BotConfig: # Конфигурация
class Message: # Модель сообщения
class UserProfile: # Профиль пользователя
# Системы
class VectorMemory: # Векторная память
class DatabaseManager: # База данных
class MessageAnalyzer: # Анализ сообщений
class PromptGenerator: # Генерация промптов- Новая команда:
async def my_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Мой ответ")
# Регистрация
app.add_handler(CommandHandler("mycommand", my_command))- Новый анализатор сообщений:
# В MessageAnalyzer.should_respond()
if "мой_триггер" in message_lower:
return True, "my_reason"Бот ведет подробные логи:
🚀 Запуск бота
🔍 Проверка зависимостей
✅ LM Studio доступен
💬 Отвечаю пользователю: direct_mention
🧠 Загружено 150 сообщений из БД
⏰ Планировщик сообщений активен
-
"Conflict: terminated by other getUpdates request"
- Остановите все запущенные экземпляры бота
- Проверьте диспетчер задач
-
"LM Studio недоступен"
- Убедитесь что LM Studio запущен
- Проверьте URL и порт в конфигурации
-
"SentenceTransformers не найден"
pip install sentence-transformers
-
Бот не отвечает в группе
- Проверьте правильность CHAT_ID и FLOOD_TOPIC_ID
- Убедитесь что бот добавлен в группу как администратор
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Добавьте тесты (если применимо)
- Создайте Pull Request
MIT License - используйте как хотите, но укажите авторство.
- python-telegram-bot - Telegram Bot API
- sentence-transformers - Векторные эмбеддинги
- LM Studio - Локальные LLM модели
Если у вас есть вопросы или предложения:
- Создайте Issue в GitHub
- Опишите проблему максимально подробно
- Приложите логи если возможно
Сделано с ❤️ для сообщества разработчиков