Skip to content

morevtrue/samoyed_bot

Repository files navigation

🐕 Samoyed Mentor Bot

Telegram-бот для владельцев щенков самоедов в возрасте 2-12 месяцев. Помогает с ежедневными тренировками, отслеживанием прогресса и AI-консультациями по воспитанию.

Возможности

📋 План на сегодня

  • Ежедневные тренировочные задания (3 случайных из 30)
  • Специфичные для породы самоед упражнения
  • Учёт особенностей щенка, живущего с котом

💉 Здоровье

  • Календарь прививок: Автоматический расчет дат вакцинации
  • Трекер веса: График роста, сравнение с нормами породы
  • Рекомендации: Напоминания о процедурах (глистогонка, прививки)

🥣 Калькулятор корма

  • Расчет порции для натуралки (BARF) и сушки
  • Учет возраста и веса щенка
  • Рекомендации по количеству кормлений

⏰ Режим дня

  • Персональное расписание (кормление, сон, прогулки)
  • Умные напоминания за 10 минут до события
  • Динамическое управление задачами

🎓 Тренировки

  • Прогресс по командам (геймификация)
  • Ежедневные задания
  • Визуализация успехов

🤖 AI-Ассистент

  • Всегда активен: просто пишите вопросы в чат - бот ответит как эксперт по самоедам
  • Утренний совет: полезные факты каждое утро (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

Шаги

  1. Клонировать репозиторий
git clone <repo-url>
cd samoyed_bot
  1. Установить зависимости
npm install
  1. Настроить переменные окружения

Создайте файл .env:

BOT_TOKEN=your_telegram_bot_token
GITHUB_TOKEN=your_github_models_token
DATABASE_PATH=./data/bot.db
  1. Запустить бота
npm start

Структура проекта

samoyed_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 после ответов

AI

  • Контекстные промпты: разные настройки для обычных/экстренных вопросов
  • Fallback-механизм: 9 заготовленных советов при исчерпании лимитов API
  • Короткие ответы: в экстренном режиме max 300 токенов (экономия)

Использование

  1. Запустите бота командой /start в Telegram (или нажмите кнопку "🚀 Начать")
  2. Пройдите регистрацию: укажите имя щенка и дату рождения
  3. Выберите раздел из главного меню
  4. Для AI-вопросов просто пишите в чат - бот всегда готов ответить как эксперт!
    • Примеры: "Как отучить кусаться?", "Сколько раз кормить?", "Почему воет?"
    • Для срочных проблем: 🆘 Паника → "✍️ Написать свою проблему"
  5. Отмечайте кормления и прогулки в разделе "📊 Трекер"
  6. Используйте кнопку "🔄 Начать заново" для сброса данных

Новые возможности (обновление 2026-02-28)

  • AI работает всегда - не нужно активировать режим, просто пишите вопросы
  • Кнопки для команд - удобные кнопки вместо ввода /start и /reset
  • Быстрый доступ - кнопка "📋 Меню" после каждого ответа

Деплой через Docker

Требования

  • Docker 24+
  • Docker Compose v2+
  • Traefik уже запущен на сервере (создаёт сеть traefik_public)

Шаги

  1. Скопировать .env.example
cp .env.example .env
  1. Заполнить .env — вписать реальные токены:
BOT_TOKEN=your_telegram_bot_token
GITHUB_TOKEN=your_github_token
  1. Собрать образ
docker compose build
  1. Запустить
docker compose up -d
  1. Остановить
docker compose down

Логи

docker logs samoyed-bot
docker logs -f samoyed-bot        # следить в реальном времени
docker logs --tail 100 samoyed-bot

Бэкап базы данных

docker 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

Troubleshooting

Контейнер не запускается — ошибка сети:

# Убедитесь, что 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 -d

Лицензия

MIT

Контакты

Вопросы и предложения — создавайте Issue в репозитории.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors