Telegram-бот для владельцев щенков самоедов в возрасте 2-12 месяцев. Помогает с ежедневными тренировками, отслеживанием прогресса и AI-консультациями по воспитанию.
- Ежедневные тренировочные задания (3 случайных из 30)
- Специфичные для породы самоед упражнения
- Учёт особенностей щенка, живущего с котом
- Календарь прививок: Автоматический расчет дат вакцинации
- Трекер веса: График роста, сравнение с нормами породы
- Рекомендации: Напоминания о процедурах (глистогонка, прививки)
- Расчет порции для натуралки (BARF) и сушки
- Учет возраста и веса щенка
- Рекомендации по количеству кормлений
- Персональное расписание (кормление, сон, прогулки)
- Умные напоминания за 10 минут до события
- Динамическое управление задачами
- Прогресс по командам (геймификация)
- Ежедневные задания
- Визуализация успехов
- Всегда активен: просто пишите вопросы в чат - бот ответит как эксперт по самоедам
- Утренний совет: полезные факты каждое утро (9:00)
- SOS-режим: быстрые инструкции для экстренных ситуаций
- Умный промпт: бот знает особенности породы самоед и дает практические советы
- Кнопки команд: используйте кнопки вместо ввода /start и /reset
- Быстрый доступ: кнопка "📋 Меню" после каждого ответа AI
- Интуитивный интерфейс: все функции доступны через inline-кнопки
- Backend: Node.js
- Telegram API: Telegraf
- База данных: sql.js (SQLite в памяти, без нативной компиляции)
- AI: gpt-4o-mini через GitHub Models API
- Планировщик: node-schedule
- Node.js 18+
- GitHub token для Models API
- Клонировать репозиторий
git clone <repo-url>
cd samoyed_bot- Установить зависимости
npm install- Настроить переменные окружения
Создайте файл .env:
BOT_TOKEN=your_telegram_bot_token
GITHUB_TOKEN=your_github_models_token
DATABASE_PATH=./data/bot.dbBOT_TOKEN: Получить у @BotFatherGITHUB_TOKEN: Инструкция по получению
- Запустить бота
npm startsamoyed_bot/
├── src/
│ ├── index.js # Главный файл бота, обработчики
│ ├── ai.js # Интеграция с gpt-4o-mini (GitHub Models)
│ ├── database.js # Работа с sql.js
│ ├── training.js # Контент (задания, база знаний, SOS)
│ └── scheduler.js # Утренние уведомления (node-schedule)
├── data/ # База данных (создаётся автоматически)
├── docs/ # Документация
│ ├── 00-ai-contract.md # Контракт работы с AI
│ ├── 01-tech-stack.md # Описание технологий
│ ├── 02-user-stories.md # Пользовательские сценарии
│ ├── 03-github-models-setup.md # Настройка GitHub Models
│ └── 04-architecture.md # Архитектура проекта
├── config.js # Конфигурация
├── package.json
└── README.md
- Debounce сохранения БД: запись на диск раз в 5 секунд (вместо при каждом изменении)
- Кеширование меню: статические клавиатуры создаются один раз
- Компактные кнопки: одна кнопка "📋 Меню" вместо 5 после ответов
- Контекстные промпты: разные настройки для обычных/экстренных вопросов
- Fallback-механизм: 9 заготовленных советов при исчерпании лимитов API
- Короткие ответы: в экстренном режиме max 300 токенов (экономия)
- Запустите бота командой
/startв Telegram (или нажмите кнопку "🚀 Начать") - Пройдите регистрацию: укажите имя щенка и дату рождения
- Выберите раздел из главного меню
- Для AI-вопросов просто пишите в чат - бот всегда готов ответить как эксперт!
- Примеры: "Как отучить кусаться?", "Сколько раз кормить?", "Почему воет?"
- Для срочных проблем: 🆘 Паника → "✍️ Написать свою проблему"
- Отмечайте кормления и прогулки в разделе "📊 Трекер"
- Используйте кнопку "🔄 Начать заново" для сброса данных
- ✅ AI работает всегда - не нужно активировать режим, просто пишите вопросы
- ✅ Кнопки для команд - удобные кнопки вместо ввода /start и /reset
- ✅ Быстрый доступ - кнопка "📋 Меню" после каждого ответа
- Docker 24+
- Docker Compose v2+
- Traefik уже запущен на сервере (создаёт сеть
traefik_public)
- Скопировать .env.example
cp .env.example .env- Заполнить .env — вписать реальные токены:
BOT_TOKEN=your_telegram_bot_token
GITHUB_TOKEN=your_github_token- Собрать образ
docker compose build- Запустить
docker compose up -d- Остановить
docker compose downdocker logs samoyed-bot
docker logs -f samoyed-bot # следить в реальном времени
docker logs --tail 100 samoyed-botdocker run --rm -v samoyed_bot_data:/data -v $(pwd):/backup alpine \
tar czf /backup/bot-backup.tar.gz -C /data .docker run --rm -v samoyed_bot_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/bot-backup.tar.gz -C /dataКонтейнер не запускается — ошибка сети:
# Убедитесь, что Traefik запущен и сеть существует
docker network ls | grep traefik_publicОшибка переменных окружения:
# Проверьте, что .env заполнен
cat .envПроверить статус health check:
docker inspect samoyed-bot --format='{{.State.Health.Status}}'Пересобрать после изменений кода:
docker compose build && docker compose up -dMIT
Вопросы и предложения — создавайте Issue в репозитории.