Prawo w naszym kodzie
Przycisk wypowiedzenia, który musi działać bez logowania. Formularz, który nigdy nie może cię odrzucić. Dlaczego obowiązki prawne to dla nas architektura, a nie formułki.

Gdy udostępniliśmy Premium do kupienia, zakładaliśmy, że część prawna to kilka stron tekstu w stopce. To był błąd. Niektórych obowiązków w ogóle nie da się wpisać w tekst, bo dyktują, jak funkcja musi być zbudowana.
Cztery przykłady, na których stało się to szczególnie jasne. Na wstępie, żeby było jasne, czym to jest: opis naszej implementacji, a nie porada prawna. Poniższe zasady to prawo niemieckie, w ramach którego działa AlphaCloud.
Przycisk wypowiedzenia, który nie może mieć logowania
Paragraf 312k niemieckiego kodeksu cywilnego wymaga, żeby umowy zawarte online oferowały bezpośrednio dostępną drogę wypowiedzenia. Z tego wynikają wymagania, których nie da się dodać potem w treści:
- Strona musi działać bez logowania
- Musi być w stopce każdej strony
- Potrzebuje dwóch kroków: wpisanie, a potem potwierdzenie jednoznacznie opisanym przyciskiem
- Musi zostać wysłane potwierdzenie otrzymania w formie tekstowej
Ostatni punkt kształtuje architekturę. Wypowiedzenie jest jednostronnym oświadczeniem woli i staje się skuteczne z chwilą doręczenia. Musi więc być zawsze zapisane i potwierdzone, niezależnie od tego, od kogo przyszło.
Formularz nigdy nie może cię odrzucić
Tu oczywiste podejście prawie kosztowało nas błąd.
Oczywiste podejście: przyjmij wypowiedzenie tylko wtedy, gdy ID serwera i e-mail pasują do aktywnej subskrypcji. Brzmi rozsądnie i jest podwójnie błędne.
Po pierwsze, odcięłoby to prawdziwego klienta, który pomyli się w adresie e-mail albo poda inny. Jego wypowiedzenie nie zostałoby doręczone, subskrypcja się odnawia, a on ma dowód, że próbował.
Po drugie, i to jest przykrzejsza część: sam komunikat o błędzie byłby odpowiedzią. Kto dostanie "nie znaleziono subskrypcji", dowiaduje się, że ten serwer nie płaci. ID serwera Discord nie jest tajemnicą, każdy członek może je odczytać. Formularz stałby się narzędziem do sondowania cudzych serwerów.
Rozwiązanie rozdziela dwie rzeczy, które wydają się jedną:
| Warunek | |
|---|---|
| Doręczenie oświadczenia | bezwarunkowe, zawsze zapisane i potwierdzone |
| Wykonanie wypowiedzenia | tylko gdy podany e-mail pasuje do zapisanego kupującego |
Wszystko inne trafia do kolejki i jest sprawdzane przez człowieka. Jest to dopuszczalne, bo paragraf 312k ustęp 2 wprost pozwala prosić o dane identyfikujące. Zabronione jest tylko logowanie przed tym.
Z tego samego powodu publiczna odpowiedź może podać datę zakończenia dopiero po potwierdzeniu tożsamości. Inaczej potwierdzenie znowu staje się wyrocznią.
Odstąpienie, które celowo ma logowanie
Tuż obok jest funkcja, którą zbudowaliśmy odwrotnie: odstąpienie z proporcjonalnym zwrotem jest za logowaniem.
To nie sprzeczność. Paragraf 312k dotyczy wypowiedzenia, nie odstąpienia, i nie ma obowiązku oferowania formularza odstąpienia online, dopóki otwarta jest droga nieformalna. Różnica tkwi w skutku: wypowiedzenie działa na przyszłość, zwrot przenosi pieniądze teraz i nie da się go cofnąć.
Trzy zasady, które z tego wynikają i których nie łagodzimy:
Bez obowiązkowego powodu. Paragraf 355 ustęp 1 przyznaje prawo odstąpienia wyraźnie bez podawania przyczyn. Pole jest opcjonalne i musi takie zostać, choćby obowiązkowe kusiło ze względu na statystyki.
Po 14 dniach odrzucana jest tylko automatyczna ścieżka, nigdy samo oświadczenie. Termin wydłuża się do dwunastu miesięcy i czternastu dni, jeśli klient nie został prawidłowo pouczony. Ogólne "za późno" mogłoby więc być błędne.
Ochrona przed podwójną wypłatą jest pesymistyczna. Znacznik ustawiany jest przed wykonaniem zwrotu. Jeśli zwrot się potem nie uda, znacznik zostaje, a sprawę przejmuje człowiek. Podwójna wypłata to jedyny wynik, którego nie da się naprawić.
Wiadomość prywatna na Discordzie to nie trwały nośnik
Paragraf 312f ustęp 3 wymaga potwierdzenia umowy na trwałym nośniku, które musi odtwarzać udzieloną zgodę.
Najpierw wysyłaliśmy wiadomość prywatną na Discordzie, bo to kanał, na którym i tak są nasi klienci. To nie wystarcza. Wiadomość prywatna żyje na platformie, której nie kontrolujemy, i nie jest ani trwała, ani niezmienna w rozumieniu tego przepisu.
Dlatego doszedł e-mail, a z nim niewygodna zależność: jeśli dane dostępowe do poczty nie są ustawione, wysyłka zapisuje tylko ostrzeżenie w logu i obowiązek nie jest spełniony. Ustawowy obowiązek zależny od zmiennej środowiskowej to stan, o którym warto pamiętać.
Bez VAT, i wszędzie musi brzmieć tak samo
AlphaCloud jest małym przedsiębiorcą w rozumieniu paragrafu 19 niemieckiej ustawy o podatku od towarów i usług. Ceny są cenami końcowymi, VAT nigdy nie jest wykazywany.
Brzmi jak przypis, a w rzeczywistości jest zadaniem spójności w wielu miejscach: strona z cenami, okno zakupu, regulamin, polityka prywatności, stopka faktury i konfiguracja u dostawcy płatności muszą mówić to samo. Długo mieliśmy gdzieś "plus VAT", które było po prostu błędne.
I jeszcze AI
Od sierpnia 2026 w pełni obowiązują wymogi przejrzystości europejskiego aktu o AI. Kto rozmawia z systemem AI, musi móc to rozpoznać, najpóźniej przy pierwszej interakcji.
Najważniejsze zdanie z tego przeglądu dla nas: strona prawna w stopce prawdopodobnie tego nie spełnia. Informacja musi pojawić się tam, gdzie odbywa się interakcja, czyli w samej wiadomości na Discordzie. Dlatego nasze wsparcie AI w ticketach samo się przedstawia i ma widoczny przycisk, żeby je wyłączyć. Nasza szczegółowa ocena jest w przejrzystości AI.
Wspólny mianownik
Wszystkie cztery przykłady mają ten sam kształt: obowiązek wyglądał jak tekst, a był w rzeczywistości wymaganiem wobec struktury. Logowanie w złym miejscu, komunikat o błędzie, który zdradza za dużo, potwierdzenie w złym kanale, kolejność, która pozwala na podwójną wypłatę.
Dlatego czytamy teraz teksty prawne jak specyfikację i sprawdzamy też w drugą stronę: czy kod naprawdę robi to, co mówi nasz regulamin? Właśnie przy tym pytaniu znaleźliśmy dwie prawdziwe rozbieżności, i jest o nich osobny artykuł.
Więcej artykułów
Dlaczego prawie wszystko w AlphaCloud pozostaje darmowe
Większość botów Discord zamyka najprzydatniejsze funkcje za subskrypcją. My celowo tego nie robimy, i ma to mniej wspólnego z hojnością, niż się wydaje.
Za kulisamiPod okiem 4000 serwerów Discord: Grafana, PostHog i to, co nam pokazały
Pętla, która po cichu generowała połowę naszego ruchu, trzy miliony bezsensownych zapytań dziennie i atak, który skończył się po minucie. Co widzi nasz monitoring, a czego celowo nie widzi.
Za kulisamiCo wykazał audyt naszego własnego systemu płatności
Dwa krytyczne znaleziska, i żadne nie tam, gdzie byśmy szukali. Otwarty raport o błędach, które zostały już naprawione.