Tickety · poradnik

Jak zrobić system ticketów na Discordzie bez kodu

Krok po kroku: panel z przyciskiem, kanał per ticket, log zamknięć, transcript. Cały workflow zbudujesz w 10 minut, bez VPS-u, bez Pythona.

Czas zbudowania: ~10 minut · poziom: początkujący · ostatnia aktualizacja: 2026-05-18

Co dokładnie zbudujemy

System ticketów to klasyczny wzorzec na serwerach z dużą liczbą członków: zamiast otwartego DM-a do moderacji albo czatu w jednym kanale, każdy zgłaszający dostaje prywatny kanał z dostępem tylko dla niego i ekipy. Klika przycisk → bot tworzy kanał → rozmowa → klik „Zamknij” → log + auto-usunięcie.

W FlowCord każdy etap to jeden bloczek. Cały workflow składa się z siedmiu akcji i trzech triggerów (klik panel, klik close, dołączenie do kanału). Bez Pythona, bez VPS-u, bez biblioteki discord.py. Wszystko klikasz w edytorze.

1

Stwórz panel z przyciskiem „Otwórz ticket”

Otwórz nowy workflow → dodaj trigger Komenda slash o nazwie /setup-tickety. Ten flow wywołasz raz, żeby postawić panel w kanale #pomoc.

Z triggera połącz akcję Wyślij embed:

  • Kanał: #pomoc
  • Tytuł embedu: „Potrzebujesz pomocy?”
  • Opis: krótka instrukcja co wpisać w pierwszej wiadomości
  • Przyciski: dodaj jeden zielony „Otwórz ticket” z customId = open_ticket

Po kliknięciu przycisku w embedzie, w lewym panelu edytora pojawi się nowy port wyjściowy — to z niego pociągniesz kolejną akcję.

2

Zareaguj na kliknięcie — utwórz prywatny kanał

W nowym workflow dodaj trigger Kliknięcie przycisku z customId = open_ticket. To on wykona się za każdym razem, gdy ktoś naciśnie przycisk w panelu z kroku 1.

Z triggera dodaj akcję Utwórz kanał:

  • Nazwa: ticket-{user.username}
  • Typ: tekstowy
  • Kategoria: „Tickety”
  • Uprawnienia: ukryj dla @everyone, dodaj {user} z read + write, dodaj rolę @Moderacja

Wskazówka

Klikasz „Wybierz zmienną” obok pola Nazwa — pojawia się polskie menu „Nazwa użytkownika”, „ID użytkownika”. Wstawia się {user.username} automatycznie. Zero szukania składni Discord API.
3

Zapisz właściciela ticketu w zmiennej per-channel

Dodaj akcję Ustaw zmienną:

  • Zakres: per-channel (zmienna „przyklejona” do nowego kanału)
  • Klucz: ticket_owner
  • Wartość: {user.id}

Dzięki temu w każdym kolejnym workflowie (np. „kto otworzył ten ticket?”) możesz odczytać ID jednym zapytaniem. Zmienne per-channel żyją razem z kanałem — usuniesz kanał, zniknie zmienna.

4

Powitaj usera i pokaż przycisk Zamknij

W nowo utworzonym kanale poprowadź akcję Wyślij embed z:

  • wzmianką użytkownika ({user}) w opisie
  • krótką informacją: „Opisz problem w jednej wiadomości — moderator odpisze w ciągu kilku godzin”
  • czerwonym przyciskiem „Zamknij ticket” z customId = close_ticket
5

Obsłuż zamknięcie — log i auto-usunięcie kanału

Nowy workflow z triggerem Kliknięcie przycisku close_ticket:

  • Wyślij embed na #ticket-logs z polami: kto otworzył ({ticket_owner}), kto zamknął ({user}), kategoria, czas trwania
  • Wyślij wiadomość w kanale: „Ticket zostanie zamknięty za 5 sekund”
  • Czekaj 5 sekund (akcja „Opóźnienie”)
  • Usuń kanał bieżący ({channel})

Uważaj

Akcja „Usuń kanał” jest nieodwracalna. Daj jej zawsze 5+ sekund opóźnienia, żeby moderator zdążył skopiować transcript, jeśli go potrzebuje.
6

Opcjonalnie: transcript HTML

Przed usunięciem kanału dodaj akcję Eksportuj wiadomości kanału — zwraca plik HTML z pełną historią. Wyślij go jako załącznik na #ticket-logs albo w DM do moderatora, który zamknął ticket.

Najczęstsze pytania

  • Czy ticket bot na FlowCord jest darmowy?
    Tak. Wszystkie bloczki używane do systemu ticketów (przyciski, tworzenie kanału, role, embedy, harmonogram) działają bez opłat. Hosting 24/7 jest wliczony.
  • Ile równoczesnych ticketów mój bot wytrzyma?
    W praktyce kilkaset jednocześnie. Każdy ticket to po prostu kanał i wiersz w bazie zmiennych — nie ładuje pamięci bota.
  • Czy mogę dodać kategorie ticketów (np. „Bug”, „Pomoc”)?
    Tak. Dodaj wieloprzyciskowy embed (jeden przycisk = jedna kategoria) i każdy port wyjściowy podłącz do osobnego workflowu z dedykowanym suffixem nazwy kanału.
  • Co z transkryptem rozmowy po zamknięciu?
    Akcja „Eksportuj wiadomości kanału” zwraca pełny transcript jako załącznik HTML, który możesz wysłać na #ticket-logs albo w DM do użytkownika.

Powiązane przykłady