Piszesz na Telegramie: "Jutro o 14:00 spotkanie z Markiem, godzina". Bot odpowiada: "Dodałem — środa, 6 maja, 14:00–15:00". Gotowe. Bez otwierania kalendarza, bez klikania.
W tym tutorialu zbudujesz dokładnie taki chatbot po polsku — asystent AI który zarządza Twoim Google Calendar przez Telegram. Możesz pisać do niego tekstem albo mówić głosem. Pamięta kontekst rozmowy. Potrafi dodawać, przeglądać, zmieniać i usuwać wydarzenia.
To jest praktyczny przykład agenta AI w akcji — jeśli chcesz najpierw zrozumieć jak agenci AI działają od środka, przeczytaj ten artykuł o agentach AI.
Co zbudujesz — chatbot po polsku krok po kroku
Workflow ma 9 węzłów i 4 narzędzia Google Calendar. Na wejściu wiadomość z Telegrama (tekst lub głos), na wyjściu odpowiedź bota z potwierdzeniem akcji.
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Asystent AI umie:
- Dodawać wydarzenia — pyta o tytuł, datę i czas trwania jeśli czegoś brakuje
- Przeglądać kalendarz — "co mam jutro?" albo "pokaż tydzień"
- Usuwać — najpierw pyta o potwierdzenie
- Edytować — zmienia datę, godzinę lub tytuł istniejącego wydarzenia
Nie masz jeszcze n8n? → Instalacja na mikr.us krok po kroku
Nie masz bota na Telegramie? → Tworzenie bota przez BotFather opisuję w n8n tutorial — pierwsze workflow
Krok 1 — Trigger Telegram
Dodaj pierwszy węzeł: kliknij "Add first step...", wpisz Telegram Trigger i wybierz go z listy. Nazwij węzeł Nastuchiwanie Telegram. Podłącz credentials swojego bota, w Trigger On zostaw Message.
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Ten węzeł odpala cały workflow za każdym razem gdy wyślesz wiadomość do bota — tekst, głos, cokolwiek.
Krok 2 — Rozróżnienie głosu i tekstu
Dodaj węzeł IF i nazwij go "Wiadomość głosowa/tekstowa". Ustaw jeden warunek:
- Value 1:
{{ $json.message.voice.file_id }}
- Condition:
exists
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
TRUE (głos) → ścieżka transkrypcji. FALSE (tekst) → bezpośrednio do węzła Set.
Krok 3 — Pobieranie i transkrypcja głosu
Ta część obsługuje ścieżkę głosową — dwa węzły po sobie.
Pobranie wiadomości głosowej — dodaj węzeł Telegram, ustaw:
- Resource: File
- Operation: Get
- File ID:
{{ $json.message.voice.file_id }}
- Download: włączony
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Transkrypcja audio — dodaj węzeł OpenAI, ustaw:
- Resource: Audio
- Operation: Transcribe a Recording
- Input Data Field Name:
data
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
OpenAI Whisper zamienia nagranie głosowe na tekst. Ten tekst trafia dalej dokładnie tak samo jak wpisana wiadomość.
Krok 4 — Ustawienie zmiennej do agenta AI
Zarówno ścieżka głosowa jak i tekstowa trafiają do węzła Set (nazwij go "Ustawienie zmiennej do agenta AI"). Jego rola: ujednolicenie danych — zawsze wystawia pole text które agent odczyta.
- Field:
text
- Value:
{{ $json.message.text }}
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Na ścieżce głosowej wartość jest nadpisywana przez wynik transkrypcji — pole text zawsze jest gotowe dla agenta.
Krok 5 — Asystent AI
To jest serce workflow. Dodaj węzeł AI Agent i nazwij go "Asystent AI".
W Source for Prompt wybierz Define below, w Prompt (User Message) wpisz: {{ $json.text }}
W System Message wklej poniższy prompt — definiuje on jak bot ma się zachowywać:
Dzisiaj jest: {{ $now.format('dddd, D MMMM YYYY') }}
Godzina: {{ $now.format('HH:mm') }}
Jesteś asystentem który zarządza kalendarzem Google użytkownika. Komunikujesz się tylko po polsku.
## Tworzenie wydarzeń
Gdy użytkownik chce dodać wydarzenie ZAWSZE upewnij się że masz:
- tytuł wydarzenia — jeśli brak zapytaj "Jak nazwać to wydarzenie?"
- datę i godzinę — jeśli brak zapytaj "Kiedy ma się odbyć?"
- czas trwania — jeśli brak zapytaj "Ile ma trwać wydarzenie?"
Dopiero gdy masz wszystkie trzy — utwórz wydarzenie narzędziem create_event.
## Usuwanie wydarzeń
Gdy użytkownik chce usunąć wydarzenie użyj get_events żeby znaleźć wydarzenie,
potwierdź z użytkownikiem "Czy chodzi o [tytuł] — [data] o [godzina]?"
i dopiero po potwierdzeniu użyj delete_event.
## Edytowanie wydarzeń
Gdy użytkownik chce zmienić wydarzenie użyj get_events żeby je znaleźć,
zapytaj co zmienić jeśli niejasne, i użyj update_event z nowymi danymi.
## Sprawdzanie kalendarza
Gdy użytkownik pyta o wydarzenia użyj get_events i wylistuj je w formacie:
- [godzina] [tytuł] [miejsce jeśli jest]
## Data i godzina
Możesz odpowiadać na pytania o aktualną datę i godzinę.
## Czego nie robisz
Jeśli wiadomość nie dotyczy kalendarza ani daty — odpowiedz:
"Mogę tylko zarządzać Twoim kalendarzem Google."
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Model AI
Pod węzłem Asystenta kliknij "+" → Chat Model. Wybierz OpenAI i model gpt-5.4-nano. Włącz Use Responses API.
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Pamięć
Kliknij "+" → Memory i wybierz Window Buffer Memory (Pamięć). Ustaw:
- Session ID: Define below
- Key:
{{ $('Nastuchiwanie Telegram').item.json.message.chat.id }}
- Context Window Length: 10
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Klucz oparty o chat.id daje każdej osobie osobną historię rozmowy. Liczba 10 oznacza że agent pamięta 10 ostatnich wymian.
Narzędzia Google Calendar
Kliknij cztery razy "+" → Tool i dodaj cztery węzły Google Calendar. To są narzędzia które asystent AI kalendarz wywołuje samodzielnie — sam decyduje którego użyć na podstawie opisu.
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Tworzenie — Resource: Event, Operation: Create. W Tool Description wybierz Set Manually i w Description wpisz:
Tworzy wydarzenie w Google Calendar.
Użyj gdy użytkownik chce dodać nowe spotkanie.
Wymagane pola: summary (tytuł, np. "Spotkanie z Kowalskim"),
start (data i godzina ISO 8601), end (data i godzina ISO 8601).
Nigdy nie twórz eventu bez tytułu — jeśli brak tytułu zapytaj użytkownika.
Start, End i Use Default Reminders ustaw na "Defined automatically by the model".
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Pobieranie — Resource: Event, Operation: Get Many. W Description wpisz:
Pobiera listę wydarzeń z Google Calendar.
Użyj gdy użytkownik pyta o swój kalendarz, sprawdza plany na dany dzień lub tydzień,
lub gdy potrzebujesz znaleźć ID wydarzenia przed usunięciem lub edycją.
Limit, After i Before ustaw na "Defined automatically by the model".
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Usuwanie — Resource: Event, Operation: Delete. W Description wpisz:
Usuwa wydarzenie z Google Calendar.
Użyj TYLKO gdy użytkownik potwierdził że chce usunąć konkretne wydarzenie.
Wymaga ID wydarzenia — najpierw użyj get_events żeby je znaleźć.
Event ID ustaw na "Defined automatically by the model".
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Aktualizowanie — Resource: Event, Operation: Update. W Description wpisz:
Aktualizuje istniejące wydarzenie w Google Calendar.
Użyj gdy użytkownik chce zmienić tytuł, datę, godzinę, czas trwania lub miejsce.
Wymaga ID wydarzenia — najpierw użyj get_events żeby je znaleźć.
Event ID i pola Update Fields (End, Start, Summary) ustaw na "Defined automatically by the model".
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Krok 6 — Wysyłanie odpowiedzi
Ostatni węzeł: Telegram → Send Message (nazwij "Wysyłanie wiadomości z Asystenta AI"). Ustaw:
Źródło: zrzut ekranu z panelu n8n — opracowanie własne
Kliknij "Publish" — workflow działa. Napisz do bota cokolwiek o kalendarzu.
Efekt końcowy
Chatbot sztuczna inteligencja rozumie kontekst, dopytuje o brakujące dane i wykonuje akcje na Twoim Google Calendar.
Źródło: zrzut ekranu z aplikacji Telegram — opracowanie własne
Chatbot z n8n to praktyczny przykład agenta AI — program który sam planuje co zrobić, wywołuje narzędzia i zwraca wynik. Więcej o tym jak agenci AI działają od środka, czym różnią się od zwykłej automatyzacji i jakie mają zastosowania znajdziesz w artykule agenci AI — co to jest i jak mogą pracować za Ciebie.
Najczęstsze pytania
Czy chatbot po polsku w Telegramie wymaga programowania?
Nie. Cały workflow budujesz przez interfejs n8n — klikasz, łączysz węzły, wklejasz prompt. Jedyna "techniczna" czynność to stworzenie bota przez BotFather, co trwa 2 minuty.
Ile kosztuje uruchomienie takiego asystenta?
Serwer n8n (np. mikr.us) to 75 zł rocznie. Koszty API: OpenAI za transkrypcję głosu (opcjonalna) i model GPT — przy codziennym użytkowaniu przez jedną osobę to kilka złotych miesięcznie.
Czy chatbot z n8n może obsługiwać kilka osób?
Tak. Węzeł Pamięci używa chat.id Telegrama jako klucza, więc każda osoba ma osobną historię rozmowy. Możesz udostępnić bota całej rodzinie lub małemu zespołowi.
Czy muszę używać głosu? Mogę tylko pisać?
Obsługa głosu jest opcjonalna. Jeśli nie potrzebujesz głosu, usuń węzły Pobranie i Transkrypcja i połącz trigger bezpośrednio z węzłem Set — ścieżka tekstowa działa samodzielnie.
Jaki model AI wybrać do asystenta kalendarza?
Na screenshotach używam gpt-5.4-nano — szybki, tani, dobrze radzi sobie z zadaniami kalendarza. Dla lepszego rozumienia złożonych poleceń możesz wybrać gpt-4o lub inny mocniejszy model.