Учебный Django‑проект, включающий новости, книги, статьи, загрузку изображений, кастомную регистрацию пользователей, расширенную админ‑панель и полноценную интеграцию с Telegram‑ботом через REST API.
Educational Django project featuring news, books, articles, image uploads, custom user registration, an extended admin panel, and full Telegram bot integration via REST API.
- 🇷🇺 Русская версия → READMEru.md
- 🇬🇧 English version → READMEen.md
| Home | News | Books | Neo |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Custom Registration | Custom Admin (Backup DB) |
|---|---|
![]() |
![]() |
| Weather (City Input) | Weather (Result) |
|---|---|
![]() |
![]() |
Полная структура проекта вынесена в отдельный файл:
- Новости, книги, статьи
- Загрузка изображений
- Кастомная регистрация пользователя
- Кастомная админ‑панель (BackupAdminSite)
- Кнопка резервного копирования базы данных
- Блок статистики на главной странице админки
- Переопределённые шаблоны Django Admin
- Адаптивный интерфейс на Bootstrap
- Работа с .env
- Чистая и расширяемая архитектура проекта
- Страница погоды /weather/ (OpenWeatherMap API)
- Автоматическая регистрация пользователя
- Команда /myinfo — получение профиля из Django
- Команда /weather — погода в Пскове
- Команда /погода <город> — погода по названию города
- Авторассылка погоды
- Inline‑кнопки и интерактивное меню
- Полная синхронизация данных с Django
Бот взаимодействует с Django через защищённый API:
- POST /api/v1/register/ — регистрация пользователя
- GET /api/v1/user/<telegram_id>/ — получение профиля
Все запросы защищены заголовком:
X-BOT-SECRET: <секретный ключ>
Хранит:
-Telegram ID
- username, имя, фамилию
- язык пользователя
- дату регистрации
- последнюю активность
- статус подписки
- геолокацию
- доступ к API только через секретный ключ
- сериализатор ограничивает доступные поля
- админ‑панель позволяет управлять пользователями бота
- рекомендуется HTTPS в продакшене
- /start — регистрация и вывод профиля
- /myinfo — получение данных из Django
- /weather — погода в Пскове
- /погода <город> — погода по названию города
- авторассылка погоды
- inline‑кнопки
- Django хранит данные
- бот — интерфейс для пользователя
- API — связующее звено
- админка — центр управления
Регистрирует пользователя Telegram.
{
"telegram_id": <int>,
"username": <string | null>,
"first_name": <string>,
"last_name": <string>,
"language_code": <string>,
"latitude": <float | null>,
"longitude": <float | null>
}
{
"telegram_id": 123456,
"username": "vivaldy",
"first_name": "Vladimir",
"last_name": "Filonoff",
"language_code": "ru",
"latitude": null,
"longitude": null
}
{
"status": "ok",
"created": true,
"user": {
"telegram_id": 123456,
"username": "vivaldy",
"first_name": "Vladimir",
"last_name": "Filonoff",
"language_code": "ru",
"registered_at": "...",
"last_activity": "...",
"is_subscribed": true
}
}
Возвращает профиль пользователя.
{
"status": "ok",
"created": true,
"user": {
"telegram_id": 123456,
"username": "vivaldy",
"first_name": "Vladimir",
"last_name": "Filonoff",
"language_code": "ru",
"registered_at": "...",
"last_activity": "...",
"is_subscribed": true
}
}
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
✔ run_all.bat — единое окно + логи в файлы
- Django запускается на порту 8001
- Telegram‑бот запускается в фоне
- Логи пишутся в:
logs/django.log
logs/bot.log
MIT License







