Это Telegram-бот, написанный на Go, который использует Google Gemini API для генерации ответов в групповых чатах. Бот спроектирован быть остроумным, ироничным и адаптивным к стилю общения участников чата.
- Участие в беседе: Бот анализирует историю сообщений и отвечает в соответствии с заданным "характером" (основной промпт в
.env). - Прямые ответы: Реагирует на упоминания (@botname) или ответы на свои сообщения в саркастической манере (промпт
DIRECT_PROMPT). - Тема дня: Генерирует ежедневную провокационную тему для обсуждения (промпт
DAILY_TAKE_PROMPT, настраиваемое время). - Саммари чата: Создает краткое изложение диалога за последние 24 часа по команде
/summaryили автоматически с заданным интервалом (промптSUMMARY_PROMPT). - Анализ "срачей":
- Обнаруживает начало споров/конфликтов по ключевым словам, ответам или упоминаниям (промпт
SRACH_WARNING_PROMPT). - Пытается проанализировать завершившийся спор, выделить стороны, аргументы и вынести вердикт (промпт
SRACH_ANALYSIS_PROMPT). - Использует LLM для дополнительной проверки сообщений на принадлежность к конфликту (промпт
SRACH_CONFIRM_PROMPT).
- Обнаруживает начало споров/конфликтов по ключевым словам, ответам или упоминаниям (промпт
- Настройка: Позволяет настраивать поведение через команды
/settings(интервалы ответов, время темы дня, интервал саммари, включение/выключение анализа срачей). - Сохранение истории: Сохраняет историю сообщений в файл (
/data/chat_<ID>.json) для поддержания контекста между перезапусками.
- Язык: Go (Golang)
- AI Модель: Google Gemini API (через
google/generative-ai-go) - Telegram API: Библиотека
go-telegram-bot-api/v5 - Конфигурация: Файлы
.envи.env.secrets, переменные окружения - Развертывание: Docker (ориентировано на платформу Amvera)
Основные настройки и промпты для AI задаются в файле .env.
Секретные токены (TELEGRAM_TOKEN, GEMINI_API_KEY) следует помещать в файл .env.secrets. Этот файл добавлен в .gitignore и не должен попадать в репозиторий.
Приложение сначала загружает переменные из .env.secrets, затем из .env, и в последнюю очередь из переменных окружения системы. Это позволяет легко переопределять настройки при развертывании.
Ключевые переменные:
TELEGRAM_TOKEN: Токен вашего Telegram бота.GEMINI_API_KEY: Ключ доступа к Google Gemini API.GEMINI_MODEL_NAME: Используемая модель Gemini (например,gemini-1.5-flash-latest).CONTEXT_WINDOW: Максимальное количество сообщений, хранимых в контексте для каждого чата.TIME_ZONE: Часовой пояс для ежедневных задач (например,Asia/Yekaterinburg).DEBUG: Включение/выключение режима отладки (true/false).- Промпты (
DEFAULT_PROMPT,DIRECT_PROMPT,DAILY_TAKE_PROMPT,SUMMARY_PROMPT,SRACH_*_PROMPT): Определяют поведение AI в различных ситуациях.
Проект предназначен для запуска в Docker-контейнере, в частности на платформе Amvera.
- Создайте файлы
.envи.env.secretsс вашими настройками и токенами. - Соберите Docker-образ:
docker build -t rofloslav-bot . - Запустите контейнер. При использовании Amvera, конфигурация запуска определяется в
amvera.yml. Локально можно запустить примерно так:# Убедитесь, что создана директория data для монтирования mkdir data docker run -d --env-file .env --env-file .env.secrets -p 8080:80 -v ./data:/data --name rofloslav rofloslav-bot
- Более тонкая настройка ролей при формировании истории для Gemini.
- Динамическое обновление планировщиков (тейк, саммари) без перезапуска бота.
- Улучшение алгоритма детекции и анализа срачей.
- Добавление большего количества команд и настроек.
- Рефакторинг и оптимизация кода.