fix(discord-bridge): zgomot in bot.log si doua tipuri de stream necunoscute
Trei lucruri observate in logurile de productie dupa restartul precedent. 1. Ecoul propriilor mesaje umplea bot.log cu WARNING. Propriile mesaje au si ele `author.bot == True`, iar verificarea generica de bot venea INAINTEA celei pe `self_id` — deci raspunsurile botului se jurnalizau ca "bot strain", la fiecare mesaj. Verificarea pe `self_id` trece prima (motivul e acum precis), iar refuzurile de rutina — propriile mesaje si ceilalti boti — merg la DEBUG. Guild / canal / utilizator strain si webhook raman WARNING: alea chiar sunt semnal de securitate si erau inecate in zgomot. 2. `tool_progress` (heartbeat la 30s cat timp o unealta ruleaza) devine eveniment `ToolProgress`. Mesajul live arata acum "⏳ ruleaza de 2m30s" sub unealta curenta — singurul semn ca un tur lung lucreaza si nu a inghetat. 3. `rate_limit_event` devine eveniment `RateLimit` si apare in `/status` la randul `utilizare`. Cum nu exista plafon de cost (abonament, nu API), fereastra de utilizare e singura limita reala; se avertizeaza in log o data per schimbare de stare, nu la fiecare eveniment. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B29CApsP1JkSdjYaGaHpE7
This commit is contained in:
@@ -6,6 +6,7 @@ Fisierul contine si falsurile folosite de test_allowlist.py si test_commands.py.
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -283,6 +284,53 @@ async def test_text_care_incepe_cu_exclamare_dar_nu_e_comanda_merge_la_claude(br
|
||||
assert await bridge.handle_message(FakeMessage("!!! ce faci?", channel=ch)) == "ok"
|
||||
|
||||
|
||||
# ------------------------------------------------ zgomot in log si utilizare
|
||||
async def test_ecoul_propriilor_mesaje_nu_umple_logul_cu_warning(bridge, caplog):
|
||||
with caplog.at_level(logging.WARNING, logger="discord-bridge.bot"):
|
||||
msg = FakeMessage("salut", author=FakeUser("999", is_bot=True))
|
||||
assert await bridge.handle_message(msg) == "rejected"
|
||||
assert "mesaj respins" not in caplog.text
|
||||
assert bridge.rejected[-1] == "propriul mesaj" # dar tot se contorizeaza
|
||||
|
||||
|
||||
async def test_utilizatorul_strain_ramane_warning(bridge, caplog):
|
||||
with caplog.at_level(logging.WARNING, logger="discord-bridge.bot"):
|
||||
assert await bridge.handle_message(FakeMessage("salut", author=FakeUser("42"))) == "rejected"
|
||||
assert "mesaj respins (utilizator neautorizat 42)" in caplog.text
|
||||
|
||||
|
||||
def test_status_arata_fereastra_de_utilizare(bridge):
|
||||
assert "utilizare : in regula" in bridge.status_text("200")
|
||||
bridge.note_rate_limit(bot.stream_mod.RateLimit(status="allowed", limit_type="five_hour"))
|
||||
assert "utilizare : in regula" in bridge.status_text("200")
|
||||
bridge.note_rate_limit(
|
||||
bot.stream_mod.RateLimit(status="rejected", limit_type="five_hour", resets_at=1788171600)
|
||||
)
|
||||
txt = bridge.status_text("200")
|
||||
assert "⚠️ rejected (five_hour)" in txt and "reset " in txt
|
||||
|
||||
|
||||
def test_limita_atinsa_se_avertizeaza_o_singura_data(bridge, caplog):
|
||||
ev = bot.stream_mod.RateLimit(status="rejected", limit_type="five_hour")
|
||||
with caplog.at_level(logging.WARNING, logger="discord-bridge.bot"):
|
||||
bridge.note_rate_limit(ev)
|
||||
bridge.note_rate_limit(ev)
|
||||
assert caplog.text.count("limita de utilizare") == 1
|
||||
# revenirea la normal rearmeaza avertismentul
|
||||
bridge.note_rate_limit(bot.stream_mod.RateLimit(status="allowed"))
|
||||
with caplog.at_level(logging.WARNING, logger="discord-bridge.bot"):
|
||||
bridge.note_rate_limit(ev)
|
||||
assert caplog.text.count("limita de utilizare") == 2
|
||||
|
||||
|
||||
def test_progresul_uneltei_arata_ca_turul_traieste():
|
||||
ev = bot.stream_mod.ToolProgress(tool_name="Bash", tool_id="t1", elapsed_s=30, heartbeat=True)
|
||||
assert bot._progress_line(ev) == "⏳ ruleaza de 30s"
|
||||
assert bot._progress_line(
|
||||
bot.stream_mod.ToolProgress(tool_name="Bash", tool_id="t1", elapsed_s=150)
|
||||
) == "⏳ ruleaza de 2m30s"
|
||||
|
||||
|
||||
# ------------------------------------------------------------------ aprobari
|
||||
def test_decizia_cere_allowlist(bridge, allowed):
|
||||
assert "allowlist" in bridge.decide("777", "req-1", "allow")
|
||||
|
||||
Reference in New Issue
Block a user