---
title: "Telegram chat bot that answers from a Google Sheet schedule"
kind: "Kit"
category: "Productivity"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/9f38c980-4b22-4a98-bdef-575b8b33372f"
updated: "2026-11-12"
---

# Telegram chat bot that answers from a Google Sheet schedule

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that lets people ask a Telegram bot about a schedule kept in a Google Sheet. An AI model answers from the current rows. The chat inside n8n tests the same flow.

Telegram chat bot that answers from a Google Sheet schedule is an n8n workflow in the Productivity category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow turns a Telegram bot into an assistant for a schedule kept in a Google Sheet. A member writes a question to the bot, and an AI model answers from the current rows of the sheet. Each time, the workflow reads the sheet again, turns it into a table and hands the table to the model with the question. A second door, the chat inside n8n, tests the same flow without Telegram. Fifteen nodes run it. Eight sticky notes sit beside them.

### Who it suits

Organizers of meetups, clubs, classes and teams who keep their dates in a spreadsheet and get the same questions again and again, such as when the next session is and where. It suits a schedule of a few dozen to a few hundred rows that you edit in the sheet. Skip it if the schedule is huge, because the whole table travels with every question. Skip it too if you want the bot to book or change anything. It only reads.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Community | Meetup organizers | Let members ask about dates and places | A member asks when the next talk is and gets the date and the room. |
| Education | Course coordinators | Answer students’ timetable questions | A student asks which day the workshop runs. |
| Sport | Club managers | Share the training plan | A parent asks when Saturday’s practice starts. |
| Events | Small event teams | Answer attendees about sessions and speakers | An attendee asks who speaks after lunch. |

You need a Telegram bot token, a Google account that can open your sheet, an OpenRouter key and a public HTTPS address for n8n.

### Where to use it

The Telegram door needs an n8n that Telegram can reach, which means n8n Cloud or a server with a public address. The chat inside n8n works anywhere, so you can test on a local install first. The workflow must be switched on for the bot to answer.

- n8n Cloud: bring in the file, connect your accounts and switch it on
- Your own n8n server: the same file, with a public HTTPS address for the Telegram door
- A local install: you can test in the editor chat, but Telegram cannot reach it
- Any Telegram bot: you make one by writing to BotFather inside Telegram

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Import the file, add three credentials, paste your sheet’s address, rewrite the bot’s system message and switch the workflow on.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own with an HTTPS address |
| Telegram | A bot token from BotFather |
| Google Sheets | A Google account that can open the sheet, with an OAuth2 credential |
| Sheet | A header row, then one event per row on the first tab |
| OpenRouter | An API key |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add a Telegram credential with your bot token to `telegramInput`, `SendTyping` and `telegramResponse`.
3. In `Settings`, replace `<YOUR_GOOGLE_SHEET_URL>` with the address of your sheet as your browser shows it. Add a Google Sheets OAuth2 credential to `Schedule`.
4. Add an OpenRouter credential to `LLM`. It runs `openai/gpt-6-luna`.
5. Open `ScheduleBot` and rewrite its system message for your own group. It now talks about a meetup group.
6. To test, open the chat at the bottom of the canvas and ask a question about your schedule.
7. For Telegram, save the workflow, switch it on and write to your bot.

### How to use it

Leave the workflow on. A member opens the bot in Telegram and asks a question in plain words. The bot shows a typing sign, then answers from the sheet. Edit the sheet, and the next answer follows it. That is the whole routine.

What to change for a different result

| To change | Where |
| --- | --- |
| The schedule | \`scheduleURL\` in \`Settings\`, and the tab in \`Schedule\` |
| Who the bot is | The system message in \`ScheduleBot\` |
| The model | \`LLM\` |
| How much it remembers | The window length in \`Memory\` |
| The reply format | The options of \`telegramResponse\` |

### Example

A hiking club keeps its outings in a sheet with columns for date, trail, meeting point and leader. A member writes to the bot and asks who leads the outing on 14 June.

The bot shows that it is typing, reads the sheet and answers with the leader’s name and the trail. It takes a moment. The member then asks where to meet. The bot remembers the last few messages of that chat, so it knows which outing is meant. When the club changes the meeting point in the sheet, the next answer shows the new one.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A Telegram bot is an account that a program controls instead of a person. A Google Sheet is an online spreadsheet. The model reads the whole table with each question, so it needs no database. Try it with five rows.

**For experts.** Both doors feed one pipeline through a `mode` field.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`telegramInput\` | Listens for Telegram message updates | Version 1.1 shows the Restrict to Chat IDs and Restrict to User IDs fields but does not apply them. n8n filters from version 1.2 |
| \`Schedule\` | Reads the first tab with Get Row(s) | It adds \`row\_number\`, which the model then sees as a column |
| \`ScheduleToMarkdown\` | Builds a Markdown table from every row | The header is the first row’s keys, and a cell that holds a vertical bar can break the table |
| \`Memory\` | Keeps recent messages | The session key is \`chatId\`, so each chat has its own thread. It lives in n8n’s memory only |
| \`Switch\` | Follows \`mode\` to Telegram or to the n8n chat | Only the Telegram branch sends anything |
| \`telegramResponse\` | Sends the answer to the chat | Markdown parse mode, and an automatic n8n line under the answer |

### Good to know

The bot answers from the sheet as it is now, and anyone who finds it can ask.

- Access: the Telegram Trigger here is version 1.1, so its restriction fields do nothing. Update the node to 1.2 or newer before you rely on them
- Reach: Telegram sends updates to an HTTPS address, so an n8n that cannot be reached that way gets no bot messages. The editor chat needs no address
- Size: the whole table goes into the system message of every question, and the sheet is read again each time. A long schedule costs more per message and slows each answer
- Format: the answer is sent in Markdown mode with the line “This message was sent automatically with n8n” under it. A stray \`\_\` or \`\*\` in an answer can make Telegram refuse the message
- Memory: \`Memory\` keeps the last five messages by default and loses them when n8n restarts
- Repairs: the original copy named no model on \`LLM\`, so it ran n8n’s default \`openai/gpt-4.1-mini\`. OpenAI shuts that model down on 14 January 2027 and names \`gpt-6-luna\` as the replacement. Mindket’s copy names \`openai/gpt-6-luna\`, which OpenRouter lists. This agent has no tools, so \`gpt-6-luna\` fits. The sheet address became a placeholder, its saved labels were removed, and an empty field in \`SetResponse\` was dropped
- Billing: OpenRouter bills each answer. Its list shows USD 0.1 per million tokens in and USD 0.5 per million out for that model
- Not run: nothing was run, so no bot, no sheet and no model call was tried. The notes come from n8n’s source, Telegram’s Bot API page and OpenRouter’s public list
- Your data: the sheet’s rows and each message go to OpenRouter and the model’s provider. The answers go through Telegram
- Credentials: the JSON holds none

## README

```markdown
# Telegram chat bot that answers from a Google Sheet schedule

An n8n workflow that turns a Telegram bot into an assistant for a schedule kept in a Google Sheet. A member writes a
question to the bot, and an AI model answers from the current rows of the sheet. A second door, n8n's own chat, lets
you test the same flow without Telegram.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 15 nodes and 8 sticky notes. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

- `Settings` held the original author's sheet address. It now reads `<YOUR_GOOGLE_SHEET_URL>`. The `Schedule` node
  also carried that sheet's address and tab name as saved labels. Both are gone, and the node still reads the first tab,
  `gid=0`.
- The `LLM` node, an OpenRouter Chat Model, named no model, so it ran n8n's default for that node, `openai/gpt-4.1-mini`.
  OpenAI shuts that model down on 14 January 2027 and names `gpt-6-luna` as the replacement. The node now names
  `openai/gpt-6-luna` outright, which OpenRouter's public model list carries. This agent has no tools, so `gpt-6-luna`
  fits.
- `SetResponse` held a second, empty field with no name. It is removed.

## Before you start

- An n8n instance with a public HTTPS address, such as n8n Cloud, if you want the Telegram door. The chat in the editor
  needs no address.
- A Telegram bot token. You get one by writing to BotFather inside Telegram.
- A Google account that can open your sheet, and a Google Sheets OAuth2 credential in n8n.
- An OpenRouter API key.
- A sheet with a header row and one event per row on its first tab.

## Set it up

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add a Telegram credential with your bot token to `telegramInput`, `SendTyping` and `telegramResponse`.
3. In `Settings`, replace `<YOUR_GOOGLE_SHEET_URL>` with the address of your sheet as your browser shows it. Add a Google
   Sheets OAuth2 credential to `Schedule`. The node reads the first tab. To read another tab, pick it in `Schedule`.
4. Add an OpenRouter credential to `LLM`.
5. Open `ScheduleBot` and rewrite its system message for your own group. It now talks about a meetup group.
6. To test, open the chat at the bottom of the canvas and ask a question about your schedule.
7. For Telegram, save the workflow and switch it on, then write to your bot.

## How a run goes

1. A run starts at `telegramInput`, the Telegram Trigger, or at `n8nInput`, the chat in n8n. The Telegram Trigger listens
   for message updates only.
2. On the Telegram side, `SendTyping` shows the typing sign in the chat, and `telegramChatSettings` copies the message
   text and the chat id into `inputMessage` and `chatId`, with `mode` set to `telegram`. On the n8n side,
   `n8nChatSettings` copies the chat text and the session id into the same fields, with `mode` set to `n8n`.
3. `Settings` adds `scheduleURL`. `Schedule` reads the sheet. `ScheduleToMarkdown` turns every row into one Markdown
   table in `markdown`, with the first row's column names as the header.
4. `ScheduleBot` is an agent on `LLM`, with `Memory` beside it. Its system message holds the table, and the member's
   text is the prompt. It has no tools.
5. `SetResponse` copies the answer into `responseMessage`. `Switch` then follows `mode`. For Telegram, `telegramResponse`
   sends the answer to the same chat. For n8n, `n8nResponse` is a No Operation node that ends the run, and the chat
   shows the answer.

## Change the look

- The schedule: `scheduleURL` in `Settings`, and the tab in `Schedule`.
- Who the bot is and how it answers: the system message in `ScheduleBot`.
- The model: `LLM`.
- How much it remembers: the window length in `Memory`. It keeps one conversation per chat id.
- The reply format: `telegramResponse` has the text and the options of a Telegram send.

## Good to know

- The facts below come from n8n source, Telegram's Bot API page and OpenRouter's public model list, read on 12
  November 2026. Nothing was run: no bot, no sheet and no model call.
- Telegram sends updates to an HTTPS address, so an n8n that is not reachable that way cannot receive bot messages. The
  chat in the editor works anywhere.
- Anyone who finds your bot can ask it, and the answers come from your sheet. `telegramInput` is version 1.1. That version
  shows the Restrict to Chat IDs and Restrict to User IDs fields but does not apply them. n8n filters only from version
  1.2, so update the node before you rely on them.
- The whole table goes into the system message of every question, and the sheet is read again each time. A long schedule
  costs more per message and slows each answer.
- `Schedule` uses Get Row(s), which adds a `row_number` column to every row. The model sees it as the first column of
  the table.
- `ScheduleToMarkdown` takes its column names from the first row. A cell that holds a vertical bar can break the table.
- `Memory` keeps the last five messages by default, one conversation per chat id, in n8n's own process. A restart of n8n
  clears it.
- `telegramResponse` sends with Telegram's version 1.2 defaults: Markdown parse mode, link previews off, and the line
  "This message was sent automatically with n8n" added under every answer. An answer with a stray `_` or `*` can make
  Telegram refuse the message.
- `SendTyping` shows the typing sign for 5 seconds or less, and Telegram clears it when the answer arrives.
- Billing: OpenRouter bills each answer. Its public list shows `openai/gpt-6-luna` at USD 0.1 per million tokens in and
  USD 0.5 per million out. The model's reasoning tokens count as output.
- Your data: the sheet's rows and each message go to OpenRouter and the model's provider. The answers and the typing
  sign go through Telegram.
- Credentials: the JSON holds none.
```

## What is in it

3 files, 22 KB, downloaded as a zip.

```text
NOTICE.md  634 B
README.md  6 KB
workflow.json  16 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 13 steps, starting on a Telegram event or on a chat message
- AI: 1 step calls an AI model: ScheduleBot
- Sign-ins: Signs in to: Telegram, Google Sheets and OpenRouter
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 9 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/9f38c980-4b22-4a98-bdef-575b8b33372f)
- [Its page on Mindket](https://mindket.com/p/9f38c980-4b22-4a98-bdef-575b8b33372f)
