-
🤖 Обработка фото и видео мемов
-
🧠 Интеграция с OpenAI для генерации комментариев (персона Сталина)
-
📝 История взаимодействий с мемами
-
👥 Групповая обработка медиа
-
🗄️ PostgreSQL база данных с GORM
-
🌐 Web сервер для health checks
-
🐳 Docker
-
Language: Go 1.21+
-
Database: PostgreSQL 15+
-
ORM: GORM
-
Telegram API: go-telegram-bot-api
-
OpenAI API: go-openai
-
Web Framework: Gin
-
Containerization: Docker
git clone <repository-url>
cd memebot
Скопируйте файл с переменными окружения:
cp .env.example .env
Отредактируйте .env
файл с вашими данными:
TELEGRAM_BOT_TOKEN
- токен вашего Telegram ботаTELEGRAM_CHANNEL
- канал для отправки мемовOPENAI_API_KEY
- ключ OpenAI APIDATABASE_URL
- строка подключения к PostgreSQL
meme-bot/
├── config/ # Конфигурация приложения
├── database/ # Подключение к БД и миграции
├── handlers/ # Обработчики Telegram событий
├── models/ # Модели базы данных (GORM)
├── services/ # Бизнес-логика (OpenAI, etc.)
├── utils/ # Утилиты и хелперы
├── web/ # Web сервер
├── main.go # Точка входа
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
└── README.md # Документация
GET /healthz
- Health check endpointGET /health
- Альтернативный health checkGET /metrics
- Метрики приложения (расширяемо)
/start
- Приветствие и инструкции- Отправка фото/видео - Пересылка в канал
/memes
- Список последних мемов в чате/forget
- Очистка истории мемов (только админы)- Отправка фото - Генерация комментария от AI
- Ответ на комментарий бота - Контекстный диалог
Переменная | Описание | Обязательная |
---|---|---|
TELEGRAM_BOT_TOKEN |
Токен Telegram бота | ✅ |
TELEGRAM_CHANNEL |
ID или username канала | ✅ |
DATABASE_URL |
Строка подключения к PostgreSQL | ✅ |
OPENAI_API_KEY |
Ключ OpenAI API | ✅ |
OPENAI_BASE_URL |
Base URL для OpenAI API | ❌ |
BANNED_USER_IDS |
Список заблокированных пользователей (через запятую) | ❌ |
ADMIN_USER_IDS |
Список администраторов (через запятую) | ❌ |
PORT |
Порт веб-сервера | ❌ |
{
"token": "your_bot_token",
"channel": "@your_channel",
"banned_user_ids": [123456789],
"admin_ids": [987654321]
}
Приложение автоматически создает и мигрирует следующие таблицы:
admins
- Администраторыbanned_users
- Заблокированные пользователиmemes
- Мемыmeme_comments
- Комментарии к мемамmeme_history
- История мемовuser_dialogs
- Диалоги с пользователямиmeme_interactions
- Взаимодействия с мемамиcomment_meme_mappings
- Связь комментариев с мемами
# Проверка статуса приложения
curl http://localhost:8080/healthz
# Ответ:
{
"status": "ok",
"message": "Bot is up",
"service": "memebot"
}
- Модели: Добавьте новые модели в
models/models.go
- Миграции: GORM автоматически применяет миграции при запуске
- Обработчики: Добавьте новые обработчики в
handlers/handlers.go
- Сервисы: Расширьте функциональность в
services/
# Запуск тестов
go test ./...
# Тесты с покрытием
go test -cover ./...
# Локальная сборка
go build -o memebot .
# Сборка для Linux (если разрабатываете на другой ОС)
GOOS=linux GOARCH=amd64 go build -o memebot .
# Docker сборка
docker build -t memebot .
MIT License
Если у вас есть вопросы или предложения, создайте issue в репозитории.