Files
tg-sd/README.md
T
dinlo b88ccf3b4b Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 18:46:09 +08:00

37 KiB
Raw Blame History

Telegram Bot для генерации изображений через Stable Diffusion (Automatic1111)

Бот для генерации изображений через API Stable Diffusion WebUI (Automatic1111) с поддержкой профилей, управления хранением изображений и удобным интерфейсом.

Возможности

  • 🎨 Генерация изображений (txt2img) — создание изображений по текстовому описанию
  • ⚙️ Система профилей — сохранение настроек (размер, модель, LoRA, сэмплер и т.д.)
  • 🗃️ Управление хранением — настройка времени хранения изображений (автоочистка)
  • 📊 Мониторинг — проверка статуса подключения к SD API
  • 🐳 Docker — простая установка и запуск в контейнере
  • 🛡️ Админ-панель — управление пользователями, лимитами и доступом

Содержание

  1. Что умеет бот
  2. Требования
  3. Настройка Stable Diffusion WebUI
  4. Создание Telegram бота
  5. Установка бота
  6. Настройка конфигурации
  7. Запуск бота
  8. Использование бота
  9. Примеры промптов
  10. Структура проекта
  11. FAQ
  12. Устранение неполадок

Что умеет бот

🎨 Генерация изображений

Бот позволяет создавать изображения двумя способами:

txt2img (текст → изображение) — опишите словами, что хотите увидеть, и бот сгенерирует изображение. Вы вводите промпт (описание) и необязательный негативный промпт (чего НЕ должно быть на картинке), а бот передаёт запрос в Stable Diffusion и возвращает готовое изображение.

После генерации бот покажет все параметры: промпт, размер, количество шагов, CFG Scale, сэмплер, шедулер, seed, модель и время хранения изображения.

⚙️ Система профилей

Создавайте и сохраняйте профили с предустановленными настройками, чтобы не вводить их каждый раз заново:

Параметр Описание
Размер изображения Предустановленные (512×512, 768×768, 512×768, 768×512, 1024×1024) или произвольный (64–2048 px)
Количество шагов От 10 до 150. Больше шагов = выше качество, но дольше генерация
CFG Scale От 1.0 до 30.0. Определяет, насколько строго модель следует промпту (стандарт: 7.0)
Сэмплер Euler a, Euler, DPM++ 2M Karras, DPM++ SDE Karras, DDIM и другие — загружаются из SD API
Шедулер Автоматически подбирается к сэмплеру
Модель Выбор из всех доступных моделей в вашем SD WebUI
LoRA Подключение LoRA с настраиваемой силой (0.0–1.0)
Негативный промпт Описание того, чего НЕ должно быть на изображении

Вы можете установить один профиль как профиль по умолчанию () — тогда при генерации будут автоматически применяться его настройки.

🛡️ Админ-панель

Администратор (указанный в ADMIN_ID) имеет доступ к панели управления:

  • Добавление пользователей — выдача доступа по Telegram User ID
  • Типы доступа:
    • ♾️ Без ограничений — полный доступ навсегда
    • По времени — доступ на заданное количество дней (1–3650)
    • 🎨 По количеству генераций — лимит на число сгенерированных изображений
  • Список пользователей — просмотр, пагинация, управление
  • Управление пользователями — блокировка, разблокировка, обновление доступа, удаление
  • Очистка истёкших доступов — автоматическая деактивация пользователей с истёкшим сроком

Как узнать свой User ID? — Напишите боту @userinfobot в Telegram.

🗃️ Управление хранением

Каждый пользователь может настроить время хранения своих сгенерированных изображений:

  • Предустановленные варианты: 12 ч, 24 ч (1 день), 48 ч (2 дня), 72 ч (3 дня), 168 ч (7 дней)
  • Произвольное значение — от 1 часа до максимума (MAX_IMAGE_TTL_HOURS)
  • Автоматическая очистка — фоновая задача удаляет просроченные изображения с заданным интервалом

📊 Мониторинг

Команда /status или кнопка «Статус SD API» покажет:

  • Статус подключения к SD API
  • Адрес API
  • Текущую загруженную модель

🔐 Система доступа

Бот по умолчанию не допускает новых пользователей — только те, кого добавил администратор, могут пользоваться ботом. Это защищает от несанкционированного использования ваших ресурсов.

При попытке использования бота без доступа пользователь получит сообщение об ошибке.

📋 Команды бота

Команда Описание
/start Запуск бота, приветствие и главное меню
/menu Показать главное меню
/status Проверка статуса SD API
/cancel Отмена текущей операции
/admin Админ-панель (только для администратора)

Требования

Для сервера с ботом (Docker)

  • Операционная система: Linux (Ubuntu 20.04+), Windows 10/11 с WSL2, macOS 12+
  • Docker: версии 20.10+
  • Docker Compose: версии 2.0+
  • Свободное место: ~500 МБ для бота + место для изображений
  • Оперативная память: минимум 256 МБ для контейнера бота
  • Сеть: доступ к серверу Stable Diffusion по локальной сети

Для сервера со Stable Diffusion

  • Stable Diffusion WebUI (Automatic1111) — запущенный и доступный по сети
  • API режим — включён флагом --api
  • Сетевой доступ — слушает не только localhost (флаг --listen)

Настройка Stable Diffusion WebUI

1. Запуск с поддержкой API

На сервере, где установлен Stable Diffusion WebUI, запустите его со следующими флагами:

# Для Linux
./webui.sh --api --listen

# Для Windows
webui.bat --api --listen

Обязательные флаги:

Флаг Описание
--api Включает программный API для бота
--listen Позволяет подключаться не только с localhost

Опциональные флаги:

Флаг Описание
--port 7860 Указать порт (по умолчанию 7860)
--nowatchdog Отключить watchdog (рекомендуется для серверов)
--xformers Использовать xformers для ускорения (если поддерживается)

Пример полной команды:

./webui.sh --api --listen --port 7860 --nowatchdog

2. Проверка доступности API

После запуска проверьте, что API доступен:

# С сервера с ботом (замените IP на ваш)
curl http://192.168.1.120:7860/sdapi/v1/options

Вы должны получить JSON-ответ с настройками API.

3. Настройка firewall (если необходимо)

Убедитесь, что порт 7860 открыт для подключения с сервера бота:

# Для Ubuntu/Debian (UFW)
sudo ufw allow 7860/tcp

# Для CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=7860/tcp
sudo firewall-cmd --reload

Создание Telegram бота

1. Получение токена бота

  1. Откройте Telegram и найдите бота @BotFather
  2. Отправьте команду /newbot
  3. Следуйте инструкциям:
    • Введите отображаемое имя бота (например, SD Generator)
    • Введите username бота (должен заканчиваться на bot, например sd_gen_bot)
  4. BotFather отправит вам токен вида 123456789:ABCdefGHIjklMNOpqrsTUVwxyz

2. Настройка описания бота (опционально)

В BotFather:

/setdescription — описание, которое видит пользователь до начала общения
/setabouttext — короткое описание для поиска ботов
/setuserpic — аватар бота

Установка бота

Способ 1: С помощью Docker Compose (рекомендуется)

1. Клонирование или копирование файлов

Скопируйте все файлы проекта на сервер, где будет работать бот:

tg-sd/
├── main.py
├── config.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── .env
├── bot/
│   ├── __init__.py
│   ├── handlers_start.py
│   ├── handlers_generation.py
│   ├── handlers_profiles.py
│   └── handlers_settings.py
├── sd/
│   ├── __init__.py
│   └── sd_client.py
├── database/
│   ├── __init__.py
│   └── database.py
└── utils/
    ├── __init__.py
    └── image_manager.py

2. Настройка переменных окружения

Откройте файл .env и укажите ваши значения:

nano .env

Обязательные параметры:

# Токен вашего бота (получите у @BotFather)
BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz

# Адрес Stable Diffusion API
SD_API_URL=http://192.168.1.120:7860

Опциональные параметры:

# Время хранения изображений по умолчанию (часы)
DEFAULT_IMAGE_TTL_HOURS=48

# Максимальное время хранения (часы)
MAX_IMAGE_TTL_HOURS=168

# Период автоматической очистки (минуты)
CLEANUP_INTERVAL_MINUTES=30

3. Создание необходимых директорий

mkdir -p images data

4. Запуск бота

# Сборка и запуск
docker compose up -d --build

# Проверка логов
docker compose logs -f tg-sd-bot

5. Остановка бота

# Остановка
docker compose down

# Остановка с удалением контейнера и volumes
docker compose down -v

Способ 2: Без Docker (прямой запуск)

1. Установка Python

Убедитесь, что установлен Python 3.10+:

python3 --version

2. Создание виртуального окружения

python3 -m venv venv
source venv/bin/activate  # Linux/macOS
# или
venv\Scripts\activate  # Windows

3. Установка зависимостей

pip install -r requirements.txt

4. Настройка окружения

cp .env.example .env
nano .env  # Укажите ваши значения

5. Запуск бота

python main.py

Настройка конфигурации

Файл .env

Параметр Описание По умолчанию Обязательно
BOT_TOKEN Токен Telegram бота Да
SD_API_URL URL Stable Diffusion API http://192.168.1.120:7860 Да
IMAGES_DIR Путь к папке изображений /app/images Нет
DEFAULT_IMAGE_TTL_HOURS Время хранения по умолчанию 48 Нет
MAX_IMAGE_TTL_HOURS Максимальное время хранения 168 Нет
CLEANUP_INTERVAL_MINUTES Интервал очистки 30 Нет
DB_PATH Путь к базе данных /app/data/bot.db Нет

Запуск бота

Docker Compose

# Запуск
docker compose up -d

# Просмотр логов
docker compose logs -f

# Перезапуск
docker compose restart

# Остановка
docker compose down

# Обновление (после изменений в коде)
docker compose up -d --build

Прямой запуск

# Активация окружения
source venv/bin/activate

# Запуск
python main.py

# Остановка: Ctrl+C

Запуск как сервис (systemd, Linux)

Создайте файл сервиса:

sudo nano /etc/systemd/system/tg-sd-bot.service

Содержимое:

[Unit]
Description=Telegram SD Bot
After=network.target

[Service]
Type=simple
User=your_user
WorkingDirectory=/path/to/tg-sd
ExecStart=/path/to/tg-sd/venv/bin/python main.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Активация:

sudo systemctl daemon-reload
sudo systemctl enable tg-sd-bot
sudo systemctl start tg-sd-bot

# Проверка статуса
sudo systemctl status tg-sd-bot

# Просмотр логов
sudo journalctl -u tg-sd-bot -f

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

Команды

Команда Описание
/start Запуск бота, главное меню
/menu Показать главное меню
/status Проверка статуса SD API
/cancel Отмена текущей операции

Генерация изображения (txt2img)

  1. Нажмите "🎨 Генерация (txt2img)"
  2. Введите описание изображения (промпт)
  3. Введите негативный промпт (или - для пропуска)
  4. Дождитесь результата

Пример промпта:

a beautiful sunset over mountains, golden hour, dramatic clouds, 4k, highly detailed

Пример негативного промпта:

blurry, low quality, watermark, text, deformed

Генерация на основе изображения (img2img)

  1. Нажмите "🖼️ Генерация (img2img)"
  2. Отправьте изображение
  3. Введите промпт
  4. Выберите силу изменений

Управление профилями

  1. Нажмите "⚙️ Профили"
  2. Создайте новый профиль
  3. Настройте параметры:
    • Размер изображения (512x512, 768x768, и т.д.)
    • Количество шагов
    • CFG Scale
    • Сэмплер
    • Модель
    • LoRA и его сила
    • Негативный промпт
  4. Установите профиль по умолчанию ()

Настройки хранения

  1. Нажмите "🗑️ Настройки хранения"
  2. Выберите время хранения:
    • 12 часов
    • 24 часа (1 день)
    • 48 часов (2 дня)
    • 72 часа (3 дня)
    • 168 часов (7 дней)
    • Пользовательское значение

Примеры промптов

📸 Фотореализм и портреты

professional portrait photograph of a young woman, natural lighting, soft focus, shallow depth of field, 85mm lens, film grain, highly detailed skin texture
elderly fisherman on a wooden boat at dawn, misty lake, warm golden light, cinematic composition, photorealistic, 4k

Негативный промпт:

blurry, low quality, watermark, text, deformed, extra fingers, bad anatomy, cartoon, illustration

🌄 Пейзажи и природа

majestic mountain range at sunset, snow-capped peaks, golden hour lighting, dramatic clouds reflected in a crystal clear alpine lake, wide angle, national geographic style
enchanted forest with bioluminescent mushrooms, fireflies, moonlight filtering through ancient trees, magical atmosphere, fantasy landscape, highly detailed

Негативный промпт:

urban, buildings, people, watermark, text, blurry, oversaturated

🏙️ Архитектура и города

futuristic cyberpunk city at night, neon lights, flying cars, towering skyscrapers with holographic advertisements, rain-soaked streets, cinematic lighting, blade runner style
ancient Greek temple ruins at sunrise, marble columns, overgrown with vines, peaceful atmosphere, warm morning light, archaeological photography style

Негативный промпт:

modern cars, people, watermark, text, low quality, distorted perspective

🐉 Фэнтези и фантастика

epic dragon perched on a volcanic cliff, iridescent scales, wings spread wide, stormy sky with lightning bolts, fantasy art, highly detailed, dramatic lighting, artstation trending
astronaut floating in a nebula, surrounded by cosmic dust and stars, surreal space scene, vivid colors, cinematic composition, digital art

Негативный промпт:

realistic, photograph, blurry, low resolution, watermark, text, bad anatomy

🎨 Художественные стили

oil painting of a Japanese garden in autumn, red maple trees, stone lantern, koi pond, impressionist style, visible brushstrokes, Monet inspired
watercolor illustration of a cozy cafe on a rainy day, warm interior light visible through windows, soft pastel colors, lo-fi aesthetic
pixel art of a medieval castle, 16-bit style, game sprite, clean pixels, side view

Негативный промпт:

photorealistic, 3d render, blurry, watermark, text

🍱 Аниме стили

anime girl with silver hair and blue eyes, wearing a school uniform, cherry blossom petals falling, soft lighting, Makoto Shinkai style, highly detailed anime art
anime scene of a samurai standing on a bridge at sunset, dramatic pose, katana drawn, wind blowing cloak, Studio Ghibli style, beautiful background art

Негативный промпт:

realistic, photograph, 3d, bad anatomy, extra limbs, watermark, text, low quality

🍔 Предметы и еда

professional food photography of a gourmet burger, melted cheese dripping, fresh ingredients, dark background, studio lighting, commercial photography style, 4k
luxury Swiss watch on a velvet cushion, macro photography, intricate details, dramatic side lighting, product photography, bokeh background

Негативный промпт:

amateur, blurry, watermark, text, bad lighting, distorted

💡 Советы по составлению промптов

  1. Используйте английский язык — модели лучше понимают английские описания
  2. Будьте конкретны — «sunset over mountains» лучше, чем просто «landscape»
  3. Добавляйте стиль — укажите «oil painting», «photograph», «anime style» и т.д.
  4. Описывайте освещение — «golden hour», «dramatic lighting», «soft morning light»
  5. Указывайте качество — «4k», «highly detailed», «professional photography»
  6. Добавляйте композицию — «close-up», «wide angle», «macro», «portrait»
  7. Используйте негативный промпт — это убирает нежелательные элементы

🔗 Полезные ресурсы для промптов

  • PromptHero — база промптов с примерами изображений
  • Lexica — поиск по Stable Diffusion изображениям и промптам
  • OpenArt — галерея с промптами
  • Civitai — модели, LoRA и примеры промптов

FAQ

Общие вопросы

Что нужно для работы бота?

Вам понадобятся:

  1. Telegram Bot Token — получите у @BotFather
  2. Запущенный Stable Diffusion WebUI (Automatic1111) с флагами --api --listen
  3. Сервер для запуска бота (Docker или Python)

Бот и SD WebUI могут работать на разных машинах — главное, чтобы бот имел сетевой доступ к SD API.

Можно ли использовать бота без своего GPU?

Да! Бот может работать на слабом сервере (даже на VPS с 256 МБ RAM), а Stable Diffusion — на мощной машине с GPU в вашей локальной сети. Бот лишь передаёт запросы и возвращает изображения.

Какие модели поддерживаются?

Любые модели, загруженные в ваш SD WebUI:

  • Stable Diffusion 1.5 / 2.1
  • SDXL
  • Кастомные модели (ckpt/safetensors) — любые, которые вы загрузили

Бот автоматически подтягивает список доступных моделей из API.

Поддерживаются ли LoRA?

Да! При создании профиля вы можете выбрать LoRA из списка доступных и настроить его силу (0.0–1.0). Список LoRA загружается автоматически из SD WebUI.

Бот поддерживает ControlNet?

В текущей версии ControlNet не поддерживается. Если вам нужна эта функция — вы можете реализовать её, расширив sd_client.py.


Генерация

Сколько времени занимает генерация?

Зависит от:

  • Количества шагов — 20 шагов ≈ 5–15 секунд на GPU среднего уровня
  • Размера изображения — 512×512 быстрее, чем 1024×1024
  • Модели — SDXL медленнее, чем SD 1.5
  • Нагрузки на GPU — если кто-то ещё использует GPU

Обычно генерация занимает от 10 секунд до 2 минут.

Почему генерация занимает слишком долго?

Возможные причины:

  1. Слишком много шагов (попробуйте 20–30 вместо 50+)
  2. Большой размер изображения (попробуйте 512×512 вместо 1024×1024)
  3. Медленная модель (SDXL тяжелее, чем SD 1.5)
  4. GPU загружен другими задачами

Что такое CFG Scale?

CFG Scale (Classifier-Free Guidance) определяет, насколько строго модель следует вашему промпту:

  • 5.0 — модель более свободна, может добавлять свои детали
  • 7.0 — стандарт, хороший баланс
  • 9.0+ — модель строго следует промпту, но может стать «перегруженной»

Что такое сэмплер?

Сэмплер — алгоритм, который определяет, как модель «шаг за шагом» создаёт изображение из шума:

  • Euler a — быстрый, хорошие результаты
  • DPM++ 2M Karras — высокое качество, рекомендуемый
  • DPM++ SDE Karras — ещё выше качество, но медленнее
  • DDIM — быстрый, но менее детализированный

Можно ли использовать seed из предыдущей генерации?

После генерации бот показывает использованный seed. Вы можете создать профиль с конкретным seed (в текущей версии seed генерируется автоматически). Для точного воспроизведения используйте SD WebUI напрямую.


Профили

Зачем нужны профили?

Профили сохраняют ваши любимые настройки. Вместо того чтобы каждый раз выбирать размер, модель, сэмплер и т.д., вы создаёте профиль один раз и используете его в один клик.

Сколько профилей можно создать?

Ограничений нет — создавайте столько, сколько нужно.

Что делает «профиль по умолчанию»?

Если профиль установлен как по умолчанию (), его настройки будут автоматически применяться при генерации. Вы можете быстро генерировать, вводя только промпт.


Доступ и администрирование

Почему бот не отвечает мне?

Бот работает в закрытом режиме — только пользователи, добавленные администратором, могут его использовать. Обратитесь к администратору, чтобы он добавил вас через админ-панель.

Как добавить пользователя?

  1. Узнайте Telegram User ID пользователя (через @userinfobot)
  2. В админ-панели нажмите « Добавить пользователя»
  3. Введите User ID
  4. Выберите тип доступа (без ограничений, по времени, по количеству генераций)

Как заблокировать пользователя?

В админ-панели: Список пользователей → выберите пользователя → 🚫 Заблокировать.

Можно ли дать доступ всем?

В текущей версии бот работает только в закрытом режиме. Если вы хотите открыть доступ для всех, необходимо изменить код мидлвари AccessCheckMiddleware.


Хранение изображений

Что происходит с изображениями по истечении срока?

Изображения автоматически удаляются с диска фоновой задачей. Записи в базе данных также очищаются.

Можно ли увеличить время хранения?

Да! В настройках хранения выберите нужное время или введите своё значение (до MAX_IMAGE_TTL_HOURS).

Где хранятся изображения?

В папке images/ проекта. При использовании Docker эта папка примонтирована как volume: ./images:/app/images.

Как скачать изображение?

Просто нажмите на изображение в Telegram и сохраните его. Все изображения отправляются как файлы.


Технические вопросы

Можно ли запустить несколько экземпляров бота?

Теоретически да, но они будут использовать одну базу данных и одну папку изображений, что может привести к конфликтам. Рекомендуется запускать один экземпляр.

Как обновить бот?

docker compose down
# Скопируйте новые файлы
docker compose up -d --build

Как сделать резервную копию?

# База данных
cp data/bot.db backup_$(date +%Y%m%d).db

# Изображения
tar -czf images_backup_$(date +%Y%m%d).tar.gz images/

Как перенести бота на другой сервер?

  1. Скопируйте все файлы проекта
  2. Скопируйте data/bot.db (база данных)
  3. Скопируйте images/ (если нужны старые изображения)
  4. Настройте .env на новом сервере
  5. Запустите бот

Как ограничить доступ к SD API?

Используйте firewall, чтобы разрешить подключения только с IP сервера бота:

sudo ufw allow from <BOT_SERVER_IP> to any port 7860

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

tg-sd/
├── main.py                 # Точка входа, запуск бота
├── config.py               # Настройки и конфигурация
├── requirements.txt        # Зависимости Python
├── Dockerfile              # Образ Docker
├── docker-compose.yml      # Docker Compose конфигурация
├── .env                    # Переменные окружения (не в Git!)
├── .env.example            # Пример переменных окружения
├── .gitignore              # Игнорирование файлов Git
│
├── bot/                    # Обработчики команд бота
│   ├── __init__.py
│   ├── handlers_start.py       # /start, главное меню
│   ├── handlers_generation.py  # Генерация изображений
│   ├── handlers_profiles.py    # Управление профилями
│   └── handlers_settings.py    # Настройки хранения
│
├── sd/                     # Модуль Stable Diffusion
│   ├── __init__.py
│   └── sd_client.py        # Клиент для SD API
│
├── database/               # Модуль базы данных
│   ├── __init__.py
│   └── database.py         # SQLite операции
│
├── utils/                  # Утилиты
│   ├── __init__.py
│   └── image_manager.py    # Управление изображениями
│
├── images/                 # Сгенерированные изображения (создаётся автоматически)
└── data/                   # База данных (создаётся автоматически)

Устранение неполадок

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

Проблема: BOT_TOKEN не установлен

Решение: Убедитесь, что в файле .env указан корректный токен:

BOT_TOKEN=ваш_реальный_токен_от_BotFather

Ошибка подключения к SD API

Проблема: SD API недоступно

Возможные причины и решения:

  1. SD WebUI не запущен

    • Запустите WebUI с флагами --api --listen
  2. Неправильный адрес

    • Проверьте SD_API_URL в .env
    • Убедитесь, что IP-адрес корректный
  3. Firewall блокирует порт

    # Проверьте доступность
    curl http://192.168.1.120:7860/sdapi/v1/options
    
    # Откройте порт на сервере SD
    sudo ufw allow 7860/tcp
    
  4. WebUI слушает только localhost

    • Убедитесь, что используется флаг --listen

Таймаут генерации

Проблема: Генерация занимает более 10 минут

Решения:

  1. Уменьшите количество шагов в профиле
  2. Уменьшите размер изображения
  3. Используйте более быструю модель
  4. Увеличьте таймаут в sd_client.py (параметр timeout)

Изображения не сохраняются

Проблема: Ошибка сохранения файлов

Решение: Проверьте права доступа к директории:

# Для Docker
docker compose exec tg-sd-bot ls -la /app/

# Для прямого запуска
chmod 755 images/
chmod 755 data/

Проблемы с базой данных

Проблема: Ошибки записи в БД

Решение: Убедитесь, что директория data/ существует и доступна для записи:

mkdir -p data
chmod 755 data

Логи бота

Docker:

docker compose logs -f tg-sd-bot

Прямой запуск:

Логи выводятся в консоль. Для записи в файл:

python main.py 2>&1 | tee bot.log

Безопасность

  1. Никогда не коммитьте .env файл в Git — он содержит токен бота
  2. Используйте firewall — ограничьте доступ к порту SD API только для сервера бота
  3. Регулярно обновляйте зависимости — проверяйте обновления пакетов
  4. Ограничьте доступ к боту — при необходимости добавьте проверку user_id в обработчиках

Обновление бота

# Остановка
docker compose down

# Копирование новых файлов

# Пересборка и запуск
docker compose up -d --build

Резервное копирование

Для резервного копирования сохраните:

# База данных (профили и настройки)
cp data/bot.db backup_$(date +%Y%m%d).db

# Изображения (если нужно)
tar -czf images_backup_$(date +%Y%m%d).tar.gz images/

Лицензия

Этот проект предоставляется "как есть" без каких-либо гарантий.


Поддержка

При возникновении проблем:

  1. Проверьте логи бота
  2. Убедитесь, что SD API доступен
  3. Проверьте корректность .env файла
  4. Обратитесь к разделу Устранение неполадок