Skip to content

Henry-Case-dev/rofloslav

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rofloslav Bot - Остроумный Telegram-бот на Go и Gemini

Это 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.

  1. Создайте файлы .env и .env.secrets с вашими настройками и токенами.
  2. Соберите Docker-образ: docker build -t rofloslav-bot .
  3. Запустите контейнер. При использовании 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.
  • Динамическое обновление планировщиков (тейк, саммари) без перезапуска бота.
  • Улучшение алгоритма детекции и анализа срачей.
  • Добавление большего количества команд и настроек.
  • Рефакторинг и оптимизация кода.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors