Skip to content

makeev/gopobot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Gopobot

Русскоязычный Telegram-бот на базе OpenAI с характером. Представьте себе AI-друга, который может общаться, рисовать картинки и понимать голосовые сообщения. Ну и говорит он по-русски, потому что так надо.

🎯 Что это вообще такое?

Gopobot — это полнофункциональный Telegram-бот, который приносит мощь GPT в ваши чаты. Это как иметь очень умного (и слегка саркастичного) друга, который:

  • 💬 Общается с контекстом - Он реально помнит, о чём вы говорили (до 100 сообщений!)
  • 🎨 Рисует что угодно - Просто скажи "нарисуй" и опиши, что хочешь
  • 🎤 Понимает голосовые сообщения - Отправь аудио, получи текстовый ответ (на базе Whisper)
  • 📍 Знает географию - Поделись локацией и он расскажет, что рядом
  • 🧠 Держит фокус - Ограничение частоты запросов, чтобы предотвратить спам (даже ботам нужны границы)

🚀 Быстрый старт

Что нужно

Тебе понадобится:

  • Python 3.12 (да, именно 3.12)
  • Redis (для хранения истории чата)
  • FFmpeg (для магии с аудио)
  • Токен Telegram-бота (получи у @BotFather)
  • API-ключ OpenAI (потому что AI не бесплатен, увы)

Установка

  1. Клонируй репозиторий:
git clone https://github.com/yourusername/gopobot.git
cd gopobot
  1. Установи зависимости с uv (потому что Poetry — это уже вчерашний день):
pip install uv
uv sync
  1. Настрой секреты: Создай файл .env в корне проекта:
TOKEN=твой_токен_telegram_бота
OPENAI_API_KEY=твой_ключ_openai
ADMIN_USERS=твой_telegram_user_id,другой_admin_id
REDIS_URL=redis://localhost:6379/0
LIMIT_TIME=86400
LIMIT_MESSAGES=20
MAX_HISTORY_MESSAGES=100
  1. Запусти Redis:
docker run -d -p 6379:6379 redis:7-alpine
  1. Запусти бота:
uv run python -m src.bot

Docker-деплой (Крутой способ)

Хочешь запустить в продакшене? Без проблем:

docker-compose up -d

Или если ты фанат Docker Swarm:

docker stack deploy -c docker-compose.yml gopobot

🎮 Как использовать

Когда бот запущен, найди его в Telegram и:

Команды

  • /start - Разбудить бота
  • /help - Получить помощь
  • /reset - Очистить историю разговора

Возможности

Обычное общение:

Ты: Привет! Как дела?
Бот: *отвечает с AI-мудростью*

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

Ты: нарисуй космического кота на луне
Бот: *отправляет AI-сгенерированное изображение космического кота*

Голосовые сообщения:

Ты: *отправляет голосовое сообщение на русском*
Бот: *расшифровывает его и отвечает*

Поделиться локацией:

Ты: *делится GPS-координатами*
Бот: *рассказывает о достопримечательностях рядом*

Сбросить разговор:

Ты: сброс
Бот: История сообщений очищена!

🏗️ Архитектура

┌─────────────────┐
│  Telegram Bot   │
└────────┬────────┘
         │
         ├──► Текстовые сообщения ──► GPT-4.1-nano ──► Ответ
         │
         ├──► "нарисуй..." ──► DALL-E ──► Изображение
         │
         ├──► Голосовые сообщения ──► Whisper ──► Текст ──► GPT
         │
         └──► Локация ──► GPT (с координатами)

         └──► Redis (хранит историю разговоров)

🔧 Технологический стек

  • Python 3.12 - Язык богов
  • python-telegram-bot - Обёртка для Telegram API
  • OpenAI API - GPT-4.1-nano, DALL-E, Whisper
  • Redis - Быстрое хранилище в памяти для истории чатов
  • Docker - Потому что мы профессионалы
  • uv - Молниеносно быстрый менеджер пакетов Python

⚙️ Конфигурация

Вся конфигурация выполняется через переменные окружения:

Переменная Описание По умолчанию
TOKEN Токен Telegram-бота Обязательно
OPENAI_API_KEY Ключ API OpenAI Обязательно
ADMIN_USERS ID админов через запятую Обязательно
REDIS_URL Строка подключения к Redis redis://localhost:6379/0
LIMIT_TIME Временное окно лимита (секунды) 86400 (24 часа)
LIMIT_MESSAGES Макс. сообщений за период 20
MAX_HISTORY_MESSAGES Размер контекста разговора 100

🎨 Возможности подробно

Разговоры с контекстом

Бот запоминает ваш разговор через Redis. Он хранит до MAX_HISTORY_MESSAGES сообщений и включает их в контекст при общении с GPT.

Ограничение частоты запросов

Пользователи получают дневной лимит сообщений (по умолчанию: 20 сообщений за 24 часа). Админы освобождены от этого лимита, потому что власть развращает, и нам это нравится.

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

Просто начни сообщение с "нарисуй" или "рисуй", и бот передаст остальную часть твоего сообщения в DALL-E. Генерирует изображения 1024x1024.

Расшифровка голосовых сообщений

Отправь голосовое сообщение, и бот:

  1. Конвертирует его из OGG в MP3 (потому что так надо)
  2. Отправит в Whisper для расшифровки
  3. Обработает расшифрованный текст как обычное сообщение

🤝 Контрибьюция

Нашёл баг? Хочешь добавить фичу? Pull request'ы приветствуются! Просто, пожалуйста:

  1. Сохраняй стиль кода консистентным
  2. Добавляй комментарии на русском или английском (мы тут билингвы)
  3. Тестируй свои изменения (хотя у нас пока нет тестов 😅)

📝 Лицензия

Этот проект open source и доступен под MIT License.

📞 Поддержка

Есть проблемы? Нашёл баг? Открой issue на GitHub, и я постараюсь помочь!


Сделано с ❤️ и кучей API-вызовов

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors