This workflow follows the OpenAI → Telegram recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "177",
"name": "Telegram AI-bot",
"tags": [
{
"id": "15",
"name": "tutorial",
"createdAt": "2022-10-04T20:07:25.607Z",
"updatedAt": "2022-10-04T20:07:25.607Z"
}
],
"nodes": [
{
"id": "ea71a467-a646-4aca-b72e-cef1249c74e2",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
20,
340
],
"parameters": {
"updates": [
"*"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1cbe43d4-ea8b-4178-bc10-4bfad7abe143",
"name": "CheckCommand",
"type": "n8n-nodes-base.switch",
"position": [
980,
360
],
"parameters": {
"rules": {
"rules": [
{
"value2": "/",
"operation": "notStartsWith"
},
{
"output": 1,
"value2": "/start",
"operation": "startsWith"
},
{
"output": 2,
"value2": "=/image ",
"operation": "startsWith"
}
]
},
"value1": "={{ $json.message?.text }}",
"dataType": "string",
"fallbackOutput": 3
},
"typeVersion": 1
},
{
"id": "074e907f-634b-4242-b669-33fa064f8472",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1600,
581.661764705882
],
"parameters": {
"width": 316.1071428571428,
"height": 231.22373949579838,
"content": "## Error fallback for unsupported commands"
},
"typeVersion": 1
},
{
"id": "2aa961b8-f0af-4d5c-a6af-1be56ea4b2e6",
"name": "Settings",
"type": "n8n-nodes-base.set",
"position": [
380,
340
],
"parameters": {
"values": {
"number": [
{
"name": "model_temperature",
"value": 0.8
},
{
"name": "token_length",
"value": 500
}
],
"string": [
{
"name": "system_command",
"value": "=You are a friendly chatbot. User name is {{ $json?.message?.from?.first_name }}. User system language is {{ $json?.message?.from?.language_code }}. First, detect user text language. Next, provide your reply in the same language. Include several suitable emojis in your answer."
},
{
"name": "bot_typing",
"value": "={{ $json?.message?.text.startsWith('/image') ? \"upload_photo\" : \"typing\" }}"
}
]
},
"options": {}
},
"typeVersion": 2
},
{
"id": "2d2fe268-1e3e-483b-847c-4412e586c1ca",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
-240
],
"parameters": {
"width": 330.5019024637719,
"height": 233,
"content": "## Chatbot mode by default\n### (when no command is provided)"
},
"typeVersion": 1
},
{
"id": "09a9c0b4-ac6e-46eb-b2e0-ef2b55e94ada",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
20
],
"parameters": {
"width": 330.7863484403046,
"height": 219.892857142857,
"content": "## Welcome message\n### /start"
},
"typeVersion": 1
},
{
"id": "088cffee-5720-488b-a4ec-cfdccbf77e75",
"name": "Chat_mode",
"type": "n8n-nodes-base.openAi",
"position": [
1340,
-160
],
"parameters": {
"model": "gpt-4",
"prompt": {
"messages": [
{
"role": "system",
"content": "={{ $json.system_command }}"
},
{
"content": "={{ $json.message.text }}"
}
]
},
"options": {
"maxTokens": "={{ $json.token_length }}",
"temperature": "={{ $json.model_temperature }}"
},
"resource": "chat"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "41248697-6474-4a8f-a8b8-038c96465948",
"name": "Greeting",
"type": "n8n-nodes-base.openAi",
"position": [
1340,
80
],
"parameters": {
"prompt": {
"messages": [
{
"role": "system",
"content": "={{ $json.system_command }}"
},
{
"content": "=This is the first message from a user. Please welcome a new user in `{{ $json.message.from.language_code }}` language"
}
]
},
"options": {
"maxTokens": "={{ $json.token_length }}",
"temperature": "={{ $json.model_temperature }}"
},
"resource": "chat"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "20c2e7fa-5d65-441b-8d1d-a8d46c624964",
"name": "Text reply",
"type": "n8n-nodes-base.telegram",
"position": [
1700,
-40
],
"parameters": {
"text": "={{ $json.message.content }}",
"chatId": "={{ $('Settings').first().json.message.from.id }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "30321276-ebe1-41ac-b420-9dab8daa405b",
"name": "Send Typing action",
"type": "n8n-nodes-base.telegram",
"position": [
580,
480
],
"parameters": {
"action": "={{ $json.bot_typing }}",
"chatId": "={{ $json.message.from.id }}",
"operation": "sendChatAction"
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "7d7ff2e8-b0ca-4638-a056-f7b4e2e6273d",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
800,
360
],
"parameters": {
"mode": "chooseBranch"
},
"typeVersion": 2.1
},
{
"id": "656bab5e-b7f7-47a1-8e75-4a17d2070290",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
280
],
"parameters": {
"width": 329.7428571428562,
"height": 233.8785714285713,
"content": "## Create an image\n### /image + request"
},
"typeVersion": 1
},
{
"id": "ca2111d2-463a-4ef0-9436-ee09598dbf07",
"name": "Create an image",
"type": "n8n-nodes-base.openAi",
"position": [
1340,
360
],
"parameters": {
"prompt": "={{ $json.message.text.split(' ').slice(1).join(' ') }}",
"options": {
"n": 1,
"size": "512x512"
},
"resource": "image",
"responseFormat": "imageUrl"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "e91d616b-1d5e-40e8-8468-2d0b2dda4cf7",
"name": "Send error message",
"type": "n8n-nodes-base.telegram",
"position": [
1700,
660
],
"parameters": {
"text": "=Sorry, {{ $json.message.from.first_name }}! This command is not supported yet. Please type some text to a chat bot or try this command:\n/image \\[your prompt]\n\nEnter the command, then space and provide your request. Example:\n\n`/image a picture or a cute little kitten with big eyes. Miyazaki studio ghibli style`",
"chatId": "={{ $json.message.from.id }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "125e27d2-b03b-4f02-9dd1-8fc81ecf0b6b",
"name": "Send image",
"type": "n8n-nodes-base.telegram",
"position": [
1700,
360
],
"parameters": {
"file": "={{ $json.url }}",
"chatId": "={{ $('Settings').first().json.message.from.id }}",
"operation": "sendPhoto",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "730a51ac-223e-4956-be7f-166eadb6ed81",
"name": "PreProcessing",
"type": "n8n-nodes-base.set",
"position": [
200,
340
],
"parameters": {
"values": {
"string": [
{
"name": "message.text",
"value": "={{ $json?.message?.text || \"\" }}"
}
]
},
"options": {
"dotNotation": true
}
},
"typeVersion": 2
}
],
"active": true,
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"saveManualExecutions": true,
"saveDataSuccessExecution": "all"
},
"versionId": "6ab99e3f-845d-42cc-847b-37cf19a72e93",
"connections": {
"Merge": {
"main": [
[
{
"node": "CheckCommand",
"type": "main",
"index": 0
}
]
]
},
"Greeting": {
"main": [
[
{
"node": "Text reply",
"type": "main",
"index": 0
}
]
]
},
"Settings": {
"main": [
[
{
"node": "Send Typing action",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Chat_mode": {
"main": [
[
{
"node": "Text reply",
"type": "main",
"index": 0
}
]
]
},
"CheckCommand": {
"main": [
[
{
"node": "Chat_mode",
"type": "main",
"index": 0
}
],
[
{
"node": "Greeting",
"type": "main",
"index": 0
}
],
[
{
"node": "Create an image",
"type": "main",
"index": 0
}
],
[
{
"node": "Send error message",
"type": "main",
"index": 0
}
]
]
},
"PreProcessing": {
"main": [
[
{
"node": "Settings",
"type": "main",
"index": 0
}
]
]
},
"Create an image": {
"main": [
[
{
"node": "Send image",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "PreProcessing",
"type": "main",
"index": 0
}
]
]
},
"Send Typing action": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openAiApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Effortlessly add intelligent conversation to your Telegram groups or channels with this AI bot that responds to messages using natural language processing, saving you time on manual moderation or engagement. It's ideal for community managers, customer support teams, or hobbyists wanting to automate interactions without coding expertise. The core step involves the Telegram trigger capturing incoming messages, which then route through OpenAI for generating context-aware replies before sending them back via Telegram, ensuring seamless and relevant responses.
Use this workflow when you need an always-on bot for handling common queries or fun chit-chat in Telegram, especially in high-volume chats where quick replies matter. Avoid it for complex tasks requiring deep integrations beyond basic AI, like database lookups or payments, as it focuses on straightforward messaging. Common variations include adding filters for specific commands or switching OpenAI models for specialised tones, such as formal support or creative storytelling.
About this workflow
Telegram AI-bot. Uses telegramTrigger, stickyNote, openAi, telegram. Event-driven trigger; 16 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This comprehensive N8N automation template revolutionizes content creation by delivering a complete end-to-end solution for AI-powered blog generation. Transform simple ideas into fully SEO-optimized,
Telegram Stickynote. Uses lmChatOpenAi, chainLlm, telegramTrigger, telegram. Event-driven trigger; 13 nodes.
Translate Telegram audio messages with AI (55 supported languages) v1. Uses telegramTrigger, stickyNote, telegram, lmChatOpenAi. Event-driven trigger; 13 nodes.
Translate Telegram audio messages with AI (55 supported languages) v1. Uses telegramTrigger, stickyNote, telegram, lmChatOpenAi. Event-driven trigger; 13 nodes.
Bot Gambar. Uses telegramTrigger, lmChatOpenRouter, googleSheets, telegram. Event-driven trigger; 74 nodes.