telegram bot
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
# Telegram Bot для создания постов и планирования путешествий
|
||||
|
||||
## Функции бота
|
||||
|
||||
### 📝 Создание постов
|
||||
- Создание заголовка и основного текста поста
|
||||
- Загрузка фото в лучшем качестве или для быстрой загрузки в `public/images/`
|
||||
- Добавление видео
|
||||
- Интеграция YouTube видео через Hugo shortcodes
|
||||
- Локации с Яндекс.Карт
|
||||
- Автоматическое создание Hugo markdown файлов в `content/post/`
|
||||
- Генерация правильного front matter для Hugo
|
||||
|
||||
### 🌍 Календарь поездок
|
||||
- Создание названия и описания поездки
|
||||
- Добавление фото к поездкам
|
||||
- Автоматическое обновление файла `content/plan.md`
|
||||
|
||||
### 📅 Управление календарём поездок
|
||||
- Добавление месячных поездок (системные ежемесячные варианты)
|
||||
- Добавление специальных поездок (праздничные и особенные события)
|
||||
- Удаление существующих поездок из списка
|
||||
- Просмотр всех доступных вариантов поездок
|
||||
- Автоматическое обновление выпадающего списка в форме на сайте
|
||||
|
||||
### 🔄 Git интеграция
|
||||
- Автоматический commit всех изменений после создания поста
|
||||
- Автоматический commit при обновлении календаря поездок
|
||||
- Автоматический push в репозиторий Gitea/GitHub
|
||||
- Осмысленные commit сообщения с указанием источника (Telegram бот)
|
||||
|
||||
## Установка и запуск
|
||||
|
||||
1. **Установите зависимости:**
|
||||
```bash
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
2. **Настройте токен бота:**
|
||||
```bash
|
||||
export TELEGRAM_BOT_TOKEN="ваш_токен_здесь"
|
||||
```
|
||||
|
||||
Или создайте файл `.env`:
|
||||
```
|
||||
TELEGRAM_BOT_TOKEN=ваш_токен_здесь
|
||||
```
|
||||
|
||||
3. **Запустите бота:**
|
||||
```bash
|
||||
./start_bot.sh
|
||||
```
|
||||
|
||||
Или напрямую:
|
||||
```bash
|
||||
python3 telegram_bot.py
|
||||
```
|
||||
|
||||
## Использование
|
||||
|
||||
1. Запустите бота командой `/start`
|
||||
2. Выберите действие из главного меню:
|
||||
- **📝 Создать пост** - для создания новых постов
|
||||
- **🌍 Хочу поехать** - для добавления записей в календарь поездок
|
||||
- **📅 Управление календарём** - для управления вариантами поездок в форме
|
||||
|
||||
### Создание поста
|
||||
1. Введите заголовок поста
|
||||
2. Введите основной текст поста
|
||||
3. Используйте кнопки для добавления:
|
||||
- 📸 Фото (с выбором качества)
|
||||
- 🎥 Видео
|
||||
- 🔗 YouTube ссылки
|
||||
- 📍 Локации с Яндекс.Карт
|
||||
4. Нажмите "✅ Опубликовать пост"
|
||||
5. Бот автоматически создаст Hugo markdown файл и сделает Git commit
|
||||
|
||||
### Календарь поездок
|
||||
1. Введите название поездки
|
||||
2. Опишите детали поездки
|
||||
3. При желании добавьте фото
|
||||
4. Сохраните запись
|
||||
5. Бот автоматически обновит `plan.md` и сделает Git commit
|
||||
|
||||
### Управление календарём поездок
|
||||
1. **Добавить месячную поездку:**
|
||||
- Выберите "➕ Добавить месячную поездку"
|
||||
- Введите название в формате "Полёты в [месяц] [год] года"
|
||||
- Новая опция автоматически добавится в форму на сайте
|
||||
|
||||
2. **Добавить специальную поездку:**
|
||||
- Выберите "✨ Добавить специальную поездку"
|
||||
- Введите название события (например: "Новогодние каникулы в горах")
|
||||
- Опция будет добавлена в выпадающий список
|
||||
|
||||
3. **Удалить поездку:**
|
||||
- Выберите "❌ Удалить поездку"
|
||||
- Выберите поездку из списка для удаления
|
||||
- Опция будет удалена из формы на сайте
|
||||
|
||||
4. **Просмотреть список:**
|
||||
- Выберите "📋 Просмотреть список"
|
||||
- Увидите все текущие варианты поездок
|
||||
|
||||
## Интеграция с Hugo и Git
|
||||
|
||||
### Структура файлов
|
||||
- `content/post/` - markdown файлы постов
|
||||
- `public/images/` - загруженные изображения и видео
|
||||
- `content/plan.md` - файл календаря поездок
|
||||
|
||||
### Создаваемые файлы
|
||||
|
||||
#### Hugo пост (content/post/название-поста-20250802.md):
|
||||
```markdown
|
||||
+++
|
||||
title = 'Название поста'
|
||||
slug = 'название-поста-20250802'
|
||||
date = "2025-08-02T14:30:00"
|
||||
image = 'images/post_20250802_143000_1.jpg'
|
||||
+++
|
||||
|
||||
Основной текст поста
|
||||
|
||||
## Фотографии
|
||||
|
||||
{{< gallery dir="/images/" />}}
|
||||
|
||||
## Видео
|
||||
|
||||
{{< youtube dQw4w9WgXcQ >}}
|
||||
|
||||
## Локации
|
||||
|
||||
📍 [Посмотреть на карте](https://yandex.ru/maps/...)
|
||||
|
||||
{{< rawhtml >}}
|
||||
{{< back-to-top >}}
|
||||
{{< /rawhtml >}}
|
||||
```
|
||||
|
||||
### Git коммиты
|
||||
|
||||
#### Пример коммита для поста:
|
||||
```
|
||||
Добавлен новый пост: Название поста
|
||||
|
||||
🤖 Создано через Telegram бота
|
||||
```
|
||||
|
||||
#### Пример коммита для календаря:
|
||||
```
|
||||
Обновлен календарь поездок: Поездка в горы
|
||||
|
||||
🤖 Создано через Telegram бота
|
||||
```
|
||||
|
||||
## Требования
|
||||
|
||||
- Git репозиторий должен быть настроен с правами на push
|
||||
- Бот должен запускаться из корня Hugo проекта
|
||||
- Необходимые Python библиотеки: `python-telegram-bot`, `requests`
|
||||
@@ -0,0 +1,106 @@
|
||||
# TODO для Telegram бота
|
||||
|
||||
## ✅ Выполненные задачи
|
||||
|
||||
- [x] **Add location input for post creation**
|
||||
- ✅ Добавлен запрос направления/города при создании поста
|
||||
- ✅ Новый шаг между заголовком и текстом поста
|
||||
|
||||
- [x] **Update image naming to match existing pattern (City-YYYYMMDD-N.jpg)**
|
||||
- ✅ Изменено именование файлов с `post_timestamp_N.jpg` на `City-YYYYMMDD-N.jpg`
|
||||
- ✅ Используется введенное направление и текущая дата
|
||||
|
||||
- [x] **Update Hugo post generation to use correct image paths**
|
||||
- ✅ Обновлена генерация Hugo постов для использования правильных путей к изображениям
|
||||
- ✅ Учтена новая схема именования файлов
|
||||
|
||||
- [x] **Create function to transliterate city names to Latin**
|
||||
- ✅ Функция транслитерации с русского на латиницу
|
||||
- ✅ Обработка популярных городов/направлений (30+ городов)
|
||||
- ✅ Fallback для неизвестных названий
|
||||
|
||||
- [x] **Update post workflow to include location step**
|
||||
- ✅ Изменена последовательность создания поста:
|
||||
1. Заголовок
|
||||
2. **Направление/город**
|
||||
3. Основной текст
|
||||
4. Медиафайлы
|
||||
5. Публикация
|
||||
|
||||
## 🔄 Обновленный workflow бота
|
||||
|
||||
### 📝 Создание постов:
|
||||
1. **Заголовок поста** - пользователь вводит название
|
||||
2. **Описание для превью** - краткое описание (1-2 слова)
|
||||
3. **Направление/город** - пользователь указывает локацию (Москва, Алтай, и т.д.)
|
||||
4. **Основной текст** - описание поста
|
||||
5. **Медиафайлы** (опционально):
|
||||
- Фото с автоматическим именованием `Город-YYYYMMDD-N.jpg`
|
||||
- Видео с тем же принципом именования
|
||||
- YouTube ссылки
|
||||
- Локации Яндекс.Карт
|
||||
6. **Публикация** - создание Hugo файла и Git commit
|
||||
|
||||
### 📅 Управление календарём поездок:
|
||||
1. **Добавить месячную поездку** - системные ежемесячные поездки (например: "Полёты в октябре 2025 года")
|
||||
2. **Добавить специальную поездку** - особенные события (например: "Новогодние каникулы в горах")
|
||||
3. **Удалить поездку** - удаление существующих опций из выпадающего списка
|
||||
4. **Просмотреть список** - показать все текущие варианты поездок
|
||||
5. **Автоматическое обновление** - изменения сразу отражаются в form на сайте
|
||||
|
||||
## 📝 Обновления
|
||||
|
||||
### Новое приветственное сообщение:
|
||||
```
|
||||
🤖 Добро пожаловать в бот предназначенный для загрузки контента на сайт "Пока ты спал"!
|
||||
|
||||
Выберите действие:
|
||||
```
|
||||
|
||||
### Добавлено поле description:
|
||||
- Отображается в Hugo front matter как `description = 'Поход'`
|
||||
- Используется для превью постов
|
||||
- Запрашивается после заголовка, до локации
|
||||
|
||||
### Новая последовательность создания поста:
|
||||
1. Заголовок: "Поездка в горы Алтая"
|
||||
2. **Описание: "Поход"** ← НОВОЕ
|
||||
3. Локация: "Алтай" → Altai (с пояснением про организацию фото)
|
||||
4. Основной текст: "Невероятная поездка..."
|
||||
5. Медиафайлы и публикация
|
||||
|
||||
## 📸 Обновления по фото
|
||||
|
||||
### Упрощенная загрузка фото:
|
||||
- Убран выбор качества
|
||||
- Только загрузка через файл/документ для максимального качества
|
||||
- Понятные сообщения об ошибках при неправильной загрузке
|
||||
|
||||
### Логика фото:
|
||||
- **Первое фото** = главное для превью (в front matter как `image`)
|
||||
- **Остальные фото** = дополнительные для галереи
|
||||
- Статус указывается при добавлении каждого фото
|
||||
|
||||
### Текст при запросе направления:
|
||||
```
|
||||
Теперь введите направление/город поездки (на русском):
|
||||
Это нужно для организации фото по названиям файлов.
|
||||
Например: Москва, Питер, Алтай, Кавказ, Тула...
|
||||
```
|
||||
|
||||
### Текст при загрузке фото:
|
||||
```
|
||||
📸 Отправьте фото как файл через Telegram:
|
||||
|
||||
Для сохранения качества обязательно отправляйте фото как документ/файл!
|
||||
Первое фото будет главным (в превью), остальные добавятся в галерею.
|
||||
```
|
||||
|
||||
## Текущая схема именования
|
||||
Существующие файлы: `Aleksin-20210515-1.jpg`, `Altai-20220912-1.jpg`, etc.
|
||||
Нужно: `Направление-YYYYMMDD-номер.jpg`
|
||||
|
||||
## Примеры направлений в проекте
|
||||
- Aleksin, Altai, Moscow, Piter, Tula, Tver, Yaroslavl, Vladimir, Serpuhov, Dmitrov, Kalyazin
|
||||
- Kavkaz, Murmansk, Kaliningrad, KBR (Кабардино-Балкария)
|
||||
- Pokrov, Sergiev, Rostov, Ryazan, Spirovo
|
||||
@@ -0,0 +1,2 @@
|
||||
# Telegram Bot Configuration
|
||||
TELEGRAM_BOT_TOKEN=YOUR_BOT_TOKEN_HERE
|
||||
@@ -0,0 +1 @@
|
||||
python-telegram-bot==20.7
|
||||
Executable
+38
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Скрипт запуска Telegram бота
|
||||
|
||||
echo "🤖 Запуск Telegram бота..."
|
||||
|
||||
# Проверка наличия Python
|
||||
if ! command -v python3 &> /dev/null; then
|
||||
echo "❌ Python3 не найден. Установите Python3."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Проверка наличия pip
|
||||
if ! command -v pip3 &> /dev/null; then
|
||||
echo "❌ pip3 не найден. Установите pip3."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Установка зависимостей
|
||||
echo "📦 Установка зависимостей..."
|
||||
pip3 install -r requirements.txt
|
||||
|
||||
# Проверка переменной окружения
|
||||
if [ -z "$TELEGRAM_BOT_TOKEN" ]; then
|
||||
echo "⚠️ Не установлен TELEGRAM_BOT_TOKEN"
|
||||
echo "Установите токен бота:"
|
||||
echo "export TELEGRAM_BOT_TOKEN='ваш_токен_здесь'"
|
||||
echo ""
|
||||
echo "Или создайте файл .env и добавьте туда:"
|
||||
echo "TELEGRAM_BOT_TOKEN=ваш_токен_здесь"
|
||||
echo ""
|
||||
read -p "Введите токен бота: " token
|
||||
export TELEGRAM_BOT_TOKEN="$token"
|
||||
fi
|
||||
|
||||
# Запуск бота
|
||||
echo "🚀 Запуск бота..."
|
||||
python3 telegram_bot.py
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user