Skip to content
 
 

Repository files navigation

🐛 Clopbot

Clopbot — форк nanobot: персональный AI-ассистент в Telegram с голосом, поиском, напоминаниями и прочим функционало.


Что это

  • Основа: nanobot (лёгкий агент на LLM + инструменты).
  • Бренд и поведение: Clopbot — бот для личных и групповых чатов, каналов, с русским языком и своим стилем.

Поддерживаются Gemini (рекомендуется), OpenRouter, Anthropic, OpenAI, локальный vLLM.


Текущий функционал

Возможность Описание
Чат в Telegram Личка и группы: ответы на сообщения, reply под сообщение.
Триггеры в группах Реагирует на «клоп», «clopbot», «бро», @упоминание бота или reply на его сообщение.
Inline-режим В любом чате: @cloptbot_bot запрос — быстрый ответ с поиском (Brave или Gemini Google Search). Только для админов.
Голосовые По запросу («ответь голосовым», «голосом») отправляет голосовое (Edge TTS, русский, скорость 1.2x).
Поиск Brave Search (если есть API key) или встроенный поиск Gemini.
Напоминания (Cron) «Напомни через 5 минут …», «напомни вечером @user сделать …» — бот пришлёт сообщение в указанное время в ЛС или чат.
Канал Посты канала авто-приходят в чат обсуждений — бот пишет комментарий под пост (feedback), а не в сам канал. Сообщения «от имени канала» в чате требуют триггер.
Картинки Анализ по явному запросу («что на картинке?», «опиши фото»). Изображения сжимаются перед отправкой в LLM.
Защита В личке — whitelist по user ID (allowFrom). В группах/чатах — whitelist по chat ID (allowChats): бот отвечает только в разрешённых чатах.
Реакции Ставит 👀 на сообщение, когда начинает обработку.
Память и контекст Сессии по chat_id, ограниченная история, долгосрочная память (MEMORY.md), дневные заметки, персона (PERSONA.md), импорт истории канала (/init).

Персональные улучшения

  • Анализ песен — по названию и исполнителю бот ищет текст, контекст и может дать краткий фидбек (через поиск/Genius и т.п.).
  • Напоминания (remind) — создаёт задачу на указанное время; может отправить сообщение в нужный чат, тегнуть пользователя (@username), напомнить или «пнуть» в группе или в личку.
  • Обработка изображений — по явному запросу («что на картинке?», «опиши фото»): сжатие (Pillow), затем анализ через vision-модель.
  • Голосовой ввод и вывод — приём голосовых сообщений от пользователя; по запросу («ответь голосом», «голосом») отправка ответа голосом (Edge TTS, русский, 1.2x).
  • Персонализация — стиль и характер задаются через PERSONA.md в workspace; агент может обновлять персону инструментом; в личке для владельца (allowFrom) — обращение на «ты».
  • Режимы работы — как личный ассистент (личка), как чат-помощник в группах (по триггерам), как бот канала для фидбека под постами в чате обсуждений.

Что доработано (относительно nanobot)

  • Telegram: триггеры (клоп/clopbot/бро/@/reply), разделение личка/группа/канал.
  • Inline-режим: ответ в выпадающем меню с поиском (Brave или Gemini), только для админов.
  • Cron-напоминания: «через N минут/часов», «вечером», «завтра» и т.д., доставка в нужный chat.
  • Голос: Edge TTS, русский голос, скорость 1.2x, по явной просьбе.
  • Картинки: только по явному запросу; сжатие (Pillow) перед отправкой в LLM.
  • Канал: ответ только на реальные посты (auto-forward) в чат обсуждений комментарием; запись от имени канала в чате без триггера игнорируется.
  • Whitelist чатов: allowChats — список разрешённых chat_id для групп/супергрупп.
  • Лимиты контекста: 10 сообщений, 8K символов истории, чтобы реже таймауты.
  • Реакции: 👀 на сообщение при старте обработки.
  • Модель по умолчанию: заточен под Gemini (можно gemini-2.5-flash в конфиге).

Quick start

1. Установка

git clone https://github.com/ProximaCA/clopbot
cd clopbot
pip install -e .

(Или установка из PyPI nanobot-ai и затем копирование/правка конфига под Clopbot.)

2. Первый запуск и конфиг

nanobot onboard

Отредактируй ~/.nanobot/config.json:

{
  "agents": {
    "defaults": {
      "model": "gemini-2.5-flash",
      "maxTokens": 8192,
      "temperature": 0.7
    }
  },
  "providers": {
    "gemini": {
      "apiKey": "YOUR_GEMINI_API_KEY"
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "token": "YOUR_BOT_TOKEN",
      "allowFrom": ["YOUR_TELEGRAM_USER_ID"],
      "allowChats": ["-100374753293", "-10032326928590"]
    }
  },
  "tools": {
    "web": {
      "search": {
        "apiKey": ""
      }
    }
  }
}
  • allowFrom — кто может писать в личку (user ID).
  • allowChats — в каких группах/чатах бот отвечает (chat_id). Пустой = отвечает везде.

Узнать свой user ID: например, @userinfobot. Chat ID группы — из логов при сообщении в группе: Received message in chat_id=-1234567890.

Память и workspace

Команда nanobot onboard создаёт конфиг и workspace — папку с данными агента (по умолчанию ~/.nanobot/workspace).

  • Workspace содержит:

    • AGENTS.md, SOUL.md, USER.md — инструкции и описание пользователя.
    • memory/ — долгосрочная память: MEMORY.md (важные факты навсегда) и дневные заметки memory/YYYY-MM-DD.md.
    • PERSONA.md — персона и стиль ответов (агент может обновлять через инструмент).
    • skills/ — кастомные навыки (SKILL.md в подпапках).
  • Память в работе агента:

    • В системный промпт подставляются: долгосрочная память (MEMORY.md), сегодняшние заметки, персона. Агент может записывать важное через инструмент add_to_memory.
    • История чата хранится отдельно по сессиям: один чат = один ключ telegram:chat_id. Сессии лежат в ~/.nanobot/sessions/*.jsonl. В контекст LLM попадает ограниченная история (последние сообщения и лимит символов), чтобы не перегружать запросы и избегать таймаутов.
    • Для канала: через /init можно загрузить экспорт (JSON) истории канала — бот использует это для контекста и стиля при фидбеке под постами.

Итого: долгосрочная память и персона живут в workspace; диалог с каждым чатом — в своей сессии с ограниченной историей.

3. Запуск бота

nanobot gateway

Бот подключается к Telegram и слушает сообщения.

4. Включение Inline в BotFather

В Telegram: @BotFather → твой бот → Bot SettingsInline ModeTurn on.


Примеры взаимодействия

Личка

  • «Привет» — обычный ответ.
  • «Что на картинке?» + фото — анализ изображения (после сжатия).
  • «Ответь голосовым: расскажи анекдот» — голосовое сообщение.
  • «Напомни через 10 минут проверить деплой» — через 10 минут бот пришлёт напоминание в личный чат.

Группа (если chat_id в allowChats)

  • С триггером: «Клоп что мы делаем вкратце» / «Clopbot review» / «бро как дела» / ответ (reply) на сообщение бота.
  • Без триггера: «просто текст» — бот не отвечает.
  • «Клоп напомни завтра @username выпустить подкаст» — напоминание с упоминанием в указанный чат.

Inline (в любом чате)

  • Ввести в поле сообщения: @cloptbot_bot кто такой Ulysse — в выпадающем списке появится ответ с поиском (если настроен Brave или Gemini Search). Доступ только для user ID из allowFrom.

Канал с чатом обсуждений

  • Ты публикуешь пост в канал → он авто-пересылается в чат обсуждений → бот пишет комментарий под этим постом (краткий разбор/feedback).
  • Ты пишешь в чате от имени канала (без триггера) → бот не отвечает. С триггером («клоп …») — отвечает как в обычной группе.

Команды

  • /start — приветствие.
  • /init — загрузка истории канала (прикрепляешь JSON экспорта) для контекста и стиля.

Конфиг (основное)

Поле Описание
agents.defaults.model Модель LLM, например gemini-1.5-flash.
providers.gemini.apiKey Ключ Gemini.
channels.telegram.token Токен бота от BotFather.
channels.telegram.allowFrom Список user ID для лички (и inline).
channels.telegram.allowChats Список chat_id групп, где бот отвечает. Пустой = все чаты.
tools.web.search.apiKey Brave Search (опционально, для быстрого inline).

Файл: ~/.nanobot/config.json. После изменений перезапусти nanobot gateway.


CLI

Команда Описание
nanobot onboard Создать конфиг и workspace
nanobot gateway Запустить бота (Telegram + cron + heartbeat)
nanobot agent -m "…" Разовый запрос к агенту
nanobot agent Интерактивный чат в терминале
nanobot status Статус конфига и ключей
nanobot cron list Список напоминаний
nanobot cron add --name "…" --message "…" --every 3600 Добавить периодическую задачу

Структура проекта (кратко)

nanobot/
├── agent/           # Агент: loop, context, память, инструменты
├── channels/        # Telegram (сообщения, inline, голос, реакции)
├── cron/            # Напоминания и отложенные задачи
├── providers/       # LLM (LiteLLM: Gemini, OpenRouter, …)
├── session/         # Сессии по chat_id, лимиты истории
├── config/          # Схема и загрузка конфига
└── cli/             # Команды (gateway, agent, cron, …)

Рекомендации

  • Модель: для стабильной работы лучше gemini-2.5-flash; превью-модели часто дают таймауты.
  • Inline: для быстрого поиска в inline желательно указать Brave API key в tools.web.search.apiKey.
  • Группы: чтобы бот не отвечал в чужих чатах, заполни allowChats только своими chat_id.

Клопбот будет дорабатываться по мере необходимости.

About

🐛Сlopbot: The Ultra-Lightweight Clawdbot + nanobot fork" add gogle api, and more tools for tg.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages