Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .env
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
TELEGRAM_BOT_TOKEN=7387413773:AAFgKfuf-REN5cn1ZXmCQgHHPaVJhY8RLZw
ADMIN_CHAT_ID=872379852
TELEGRAM_BOT_TOKEN=7387413773:AAFgKfuf-REN5cn1ZXmCQg
OWNER_CHAT_ID=872379852
ADMIN_CHAT_ID=2019512207
MANAGER_CONTACT=https://t.me/Thisissaymoon
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Скопируйте этот файл в .env и заполните реальными данными.
TELEGRAM_BOT_TOKEN=PASTE_TELEGRAM_BOT_TOKEN_HERE
OWNER_CHAT_ID=0
ADMIN_CHAT_ID=0
MANAGER_CONTACT=https://t.me/your_manager_username
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
__pycache__/
*.py[cod]
*.log
venv/
data/
logs/
clients/
*.sqlite3
orders.json
orders.xlsx
user_logs.json
prices.json
*.pyc
100 changes: 99 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,99 @@
# gipsrbot
# Gipsr Bot

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

**Что внутри:**

- интерактивный заказ с выбором типа, срочности (в том числе «🔥 24 часа») и объёма работы;
- автоматическое напоминание прикрепить задания и методические рекомендации, поддержка файлов любого типа;
- автоскидка 7% на первый заказ (до 3000 ₽), учёт бонусов и реферальных вознаграждений по 300 ₽;
- обновлённый прайс с нормоконтролем, презентацией+речью и личным куратором;
- «кайфовый» профиль клиента: статус, бонусный баланс, история заказов и реферальная ссылка;
- расширенная админ-панель: статистика с рефералами, журнал действий, смена статусов с уведомлением клиента и экспорт заказов.

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

Все, что вам нужно — загрузить папку проекта на сервер через FileZilla, вставить готовый скрипт в панель cloud-init и перезагрузить машину.

### 1. `.env` уже заполнен

Файл `.env` уже содержит готовый токен бота, ID владельца (`872379852`), администратора для уведомлений (`2019512207`) и ссылку менеджера `https://t.me/Thisissaymoon`. Вам ничего не нужно изменять — просто загрузите файл на сервер вместе с остальными.

> ⚠️ Не выкладывайте `.env` в открытый доступ: в нём лежит реальный токен бота.

### 2. Какие файлы загружать на сервер

Перетащите в `/root/gipsr_bot` (как на вашем скриншоте) весь каталог проекта со следующими файлами:

| Файл/папка | Зачем нужен |
|------------|-------------|
| `bot.py` | основной код бота |
| `config.py` | дефолтные настройки, статусы и тексты |
| `.env` | ваши токены и контакты |
| `requirements.txt` | список Python-зависимостей |
| `scripts/` | вспомогательные скрипты установки и автозапуска |
| `deploy/supervisor.conf` | конфигурация supervisor (запасной вариант автозапуска) |
| `cloud/cloud-init.yaml` | готовый cloud-init скрипт для панели управления |
| `README.md` (опционально) | инструкция под рукой |

Сохраняйте структуру каталогов (`scripts`, `cloud`, `deploy` и т. д.).

### 3. Загрузите проект через FileZilla

1. Подключитесь к серверу в FileZilla.
2. В правой части окна перейдите в `/root/gipsr_bot`.
3. Перетащите все файлы из локальной папки проекта в окно FileZilla. Если папки уже есть на сервере, разрешите замену, чтобы обновить код.

### 4. Настройте cloud-init

1. В панели хостинга откройте редактор cloud-init.
2. Скопируйте содержимое файла [`cloud/cloud-init.yaml`](cloud/cloud-init.yaml) и вставьте в поле скрипта.
3. Убедитесь, что путь `/root/gipsr_bot` совпадает с путём, куда вы загрузили файлы (если нет — отредактируйте скрипт).
4. Сохраните изменения.

### 5. Перезагрузите сервер

После перезагрузки cloud-init автоматически:

- установит `python3`, `pip`, `venv` и `supervisor` (если их ещё нет);
- запустит `scripts/autodeploy.sh`, который создаст виртуальное окружение, поставит зависимости и настроит `systemd`-службу `gipsrbot.service`;
- стартует бота и включит автозапуск при следующей перезагрузке.

Логи установки сохраняются в `/root/gipsr_bot/logs/autodeploy.log`.

## Как убедиться, что бот запустился

1. Скачайте файл `/root/gipsr_bot/logs/autodeploy.log` через FileZilla. В конце должна быть строка `Готово! Бот запущен...`. Если увидите сообщение про `.env`, обновите токен и перезагрузите сервер.
2. Скачайте `/root/gipsr_bot/logs/bot.log`. При успешном запуске в нём будут строки вида `Application started`.
3. Откройте бота в Telegram, отправьте `/start` и пройдите меню. Владелец с ID `872379852` сразу увидит админ-панель, Анна будет получать уведомления о заказах и ошибках в личные сообщения.

## Управление без консоли

- `/admin` — открыть админ-панель (статистика, последние заказы, экспорт, смена режимов цен и т. д.) — команда доступна только владельцу Семёну (`ID 872379852`).
- Внутри админки доступны разделы «Бонусы и рефералы», журнал действий пользователей, экспорт заказов и ручное изменение статусов с уведомлением клиента.
- `/restart_bot` или кнопка «🔄 Перезапустить бота» в админ-панели — безопасно перезапускает службу через systemd. Используйте после загрузки обновлённого кода.
- Все ошибки дублируются владельцу (Семёну) и администратору (Анне) и записываются в `logs/bot.log`.

## Как обновить код или настройки

1. Измените файлы локально (например, обновите прайс или тексты).
2. Загрузите изменённые файлы в `/root/gipsr_bot`, разрешив замену.
3. В Telegram (из админского аккаунта) отправьте команду `/restart_bot`, чтобы служба перечитала код. Если бот не отвечает, просто перезагрузите сервер — service стартует автоматически.

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

- `bot.py` — логика бота, сценарии заказов, калькулятор, админ-панель.
- `config.py` — константы и дефолтные тексты.
- `.env` — приватные настройки, которые читает `python-dotenv`.
- `scripts/` — утилиты: установка зависимостей, запуск и автодеплой через systemd.
- `deploy/` — пример конфигурации supervisor.
- `cloud/cloud-init.yaml` — готовый cloud-init скрипт для вашего хостинга.
- `data/`, `logs/`, `clients/` — создаются автоматически при первом запуске и содержат JSON-файлы с заказами, логами и выгрузками.

## Частые ошибки и диагностика

- **Бот не запускается, в логах ошибка про токен.** Проверьте `.env`: токен должен быть без кавычек, без пробелов, в формате `123456:ABC-DEF`.
- **В FileZilla нет папки `logs/`.** Она появляется после первого запуска. Если её нет, скачайте `logs/autodeploy.log` — возможно, установка не завершилась (чаще всего из-за пустого `.env`).
- **Нужно сменить владельца или адресатов уведомлений.** В `data/settings.json` обнулите `owner_chat_id`, чтобы следующий пользователь, отправивший `/start`, стал новым владельцем, или обновите `admin_chat_id`/`notification_chat_ids`, если нужно перенаправить уведомления.

Разработчики могут дополнительно проверить синтаксис локально командой `python -m compileall bot.py` — это необязательно для продакшена, но полезно перед обновлением.
Loading