Telegram-бот, который будет вас булить в вашем собственном чате.
BULLINGS_COOLDOWN- время, которое бот выжидает после того, как набросит на вентилятор пользователю. По умолчанию1h.BULLINGS_AI_CHANCE- вероятность отправки сообщения из марковской цепи. По умолчанию0.75.BULLINGS_THRESHOLD_COUNT- порог отправленных подряд сообщений, после которых бот вступает в игру. По умолчанию5.BULLINGS_THRESHOLD_TIME- время, за которое пользователь должен отправитьBULLINGS_THRESHOLD_COUNTсообщений, чтобы бот обратил на него внимание. По умолчанию1m.BULLINGS_UPDATE_MESSAGES_PERIOD- Интервал обновления сообщений из дока. По умолчанию10mGOOGLE_CACHE_INTERVAL- На сколько клиент гугла будет кешировать ответGOOGLE_CREDENTIALS- Json с доступами до гуглаGOOGLE_SPREADSHEET_ID- ID таблицы в google spreadsheetIGOR_ID- ???ON_USER_JOIN_UPDATE_MESSAGES_PERIOD- Интервал обновления сообщений из дока. По умолчанию10mSTICKER_REACTIONS_CHANCE- вероятность реакции на отправленный стикер. По умолчанию0.4STICKER_SETS- Список стикер паков через запятую. По умолчаниюstatic_bulling_by_stickersthiefbotSTICKERS_UPDATE_PERIOD- Интервал обновления стикеров из дока. По умолчанию30mTELEGRAM_TOKEN- токен telegram-бота. Обязателен.VOICE_REACTIONS_CHANCE- вероятность реакции на отправленный войс. По умолчанию0.4VOICE_UPDATE_PERIOD- Интервал обновления сообщений из дока. По умолчанию30mDEEPSEEK_API_KEY- ключ апи дипсикаGIGACHAT_AUTH_KEY- ключ апи ГигаЧат для распознавания картинок
Трейсинг (OpenTelemetry → Jaeger) показывает, как сформировался каждый ответ бота: трейсы по хендлерам, разворачиваются в спаны (decision → gen_ai → sanitize → send) с input/output LLM.
Прод: Jaeger разворачивается отдельным ручным GitHub Action Deploy tracing (workflow_dispatch) → плейбук deploy/deploy-tracing.yaml. Он поднимает Jaeger и Caddy (reverse-proxy для UI с basic-auth, порт :16686, секреты JAEGER_USERNAME / JAEGER_PASSWORD_HASH). Бот и Jaeger живут в общей docker-сети toxicbot-tracing; бот шлёт трейсы на jaeger:4317 (по DNS-алиасу внутри сети, OTLP-порт на хост не публикуется). Включение — repo-variable TRACING_ENABLED (default true), подхватывается при деплое бота.
Локально: подними Jaeger одним контейнером и запусти бота с трейсингом в его сторону:
docker run -d --name jaeger -p 4317:4317 -p 16686:16686 \
-e COLLECTOR_OTLP_ENABLED=true jaegertracing/all-in-one:1.57
TRACING_ENABLED=true TRACING_OTLP_ENDPOINT=localhost:4317 ./botUI — http://localhost:16686, сервис toxicbot, фильтр по полю Operation (имя хендлера).
TRACING_ENABLED- включить трейсинг. По умолчаниюfalse(no-op, ноль накладных расходов).TRACING_OTLP_ENDPOINT- OTLP gRPC-эндпоинт. По умолчаниюlocalhost:4317(в проде —jaeger:4317, по DNS-алиасу в сетиtoxicbot-tracing).TRACING_SAMPLE_RATIO- доля сэмплируемых трейсов (0.0–1.0). По умолчанию1.0.TRACING_CAPTURE_CONTENT- захватывать ли текст промптов/ответов в спанах. По умолчаниюtrue; приfalseпишутся только длины.TRACING_SERVICE_NAME- имя сервиса в Jaeger. По умолчаниюtoxicbot.
Ретеншн трейсов — 7 дней (BADGER_SPAN_STORE_TTL=168h на контейнере Jaeger; объём выходит на плато).
⚠️ ПриTRACING_CAPTURE_CONTENT=true(по умолчанию) сырые промпты, ответы LLM и тексты сообщений чата хранятся в Jaeger эти 7 дней. Для приватных чатов ставьTRACING_CAPTURE_CONTENT=false— тогда в спанах остаются только длины.