⚡ Only 300 spots remaining • Closes in 2d 14h 32m
This comprehensive workflow automation helps you streamline Telegram Executecommand Process Webhook processes. By using this blueprint, you can eliminate manual data entry and ensure seamless integration between your favorite platforms.
This workflow is pre-configured and ready for deployment. Simply import the JSON template into your n8n instance and configure your credentials.
This is an exclusive blueprint. Copy the JSON below to use it.
PRO TIP
Always test your workflow in a development environment before pushing to production.
{
"nodes": [
{
"name": "Switch",
"type": "n8n-nodes-base.switch",
"notes": "check bot commands",
"position": [
460,
480
],
"parameters": {
"rules": {
"rules": [
{
"value2": "/start"
},
{
"output": 1,
"value2": "/getweather"
}
]
},
"value1": "={{$json[\"message\"][\"text\"]}}",
"dataType": "string",
"fallbackOutput": 3
},
"notesInFlow": true,
"typeVersion": 1
},
{
"name": "msg_greet",
"type": "n8n-nodes-base.telegram",
"position": [
1820,
300
],
"parameters": {
"text": "=Nice to meet you, {{$node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"first_name\"]}}.\nI am n8n-powered bot, I can send you a weather data for several European capitals. The data is an image generated in ggplot2 package of R programming language.\nType /getweather to begin.",
"chatId": "={{$node[\"Telegram Trigger\"].json[\"message\"][\"chat\"][\"id\"]}}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "17",
"name": "n8n R test bot"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"name": "msg_wrongcommand",
"type": "n8n-nodes-base.telegram",
"position": [
1820,
1160
],
"parameters": {
"text": "=Sorry, {{$node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"first_name\"]}}, your command was not recognized.\n/getweather - show image with the weather info.",
"chatId": "={{$node[\"Telegram Trigger\"].json[\"message\"][\"chat\"][\"id\"]}}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "17",
"name": "n8n R test bot"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
300,
480
],
"webhookId": "2512ec1e-bcff-4dfb-9ef3-208aaecc5634",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "17",
"name": "n8n R test bot"
}
},
"typeVersion": 1
},
{
"name": "msg_getweather",
"type": "n8n-nodes-base.telegram",
"position": [
2020,
820
],
"parameters": {
"chatId": "={{$node[\"Telegram Trigger\"].json[\"message\"][\"chat\"][\"id\"]}}",
"operation": "sendPhoto",
"binaryData": true,
"additionalFields": {
"caption": "=Here's your image, {{$node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"first_name\"]}}."
}
},
"credentials": {
"telegramApi": {
"id": "17",
"name": "n8n R test bot"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"name": "City List",
"type": "n8n-nodes-base.function",
"position": [
1040,
640
],
"parameters": {
"functionCode": "return [{Cityid: 2643743, Cityname:\"London\", Country: \"GB\"},\r\n {Cityid: 2950159, Cityname:\"Berlin\", Country: \"DE\"},\r\n {Cityid: 3117735, Cityname:\"Madrid\", Country: \"ES\"},\r\n {Cityid: 3169070, Cityname:\"Rome\", Country: \"IT\"},\r\n {Cityid: 683506, Cityname:\"Bucharest\", Country: \"RO\"},\r\n {Cityid: 2968815, Cityname:\"Paris\", Country: \"FR\"},\r\n {Cityid: 2761369, Cityname:\"Vienna\", Country: \"AT\"},\r\n {Cityid: 756135, Cityname:\"Warsaw\", Country: \"PL\"},\r\n {Cityid: 3054638, Cityname:\"Budapest\", Country: \"HU\"},\r\n {Cityid: 792680, Cityname:\"Belgrade\", Country: \"RS\"}];"
},
"typeVersion": 1
},
{
"name": "Convert API response",
"type": "n8n-nodes-base.function",
"position": [
860,
840
],
"parameters": {
"functionCode": "// this data is stored as a CSV file and then processed in the R script. Please check the R code here:\n// https://gist.github.com/ed-parsadanyan/0561cd12d545e642fcef17dcb0872b00\nvar data = [];\n\nfor (item of items) {\n data.push({CityName: item.json.name+', '+item.json.sys.country,\n TempCur : item.json.main.temp,\n TempMin : item.json.main.temp_min,\n TempMax : item.json.main.temp_max\n });\n}\n\nreturn data;"
},
"typeVersion": 1
},
{
"name": "Get weather data",
"type": "n8n-nodes-base.httpRequest",
"position": [
1220,
640
],
"parameters": {
"url": "=https://api.openweathermap.org/data/2.5/weather?id={{$json[\"Cityid\"]}}&units=metric&appid=6d3fff582a101700576faf74734f9535",
"options": {}
},
"typeVersion": 1,
"continueOnFail": true
},
{
"name": "Spreadsheet File",
"type": "n8n-nodes-base.spreadsheetFile",
"position": [
1040,
840
],
"parameters": {
"options": {
"fileName": "={{$node[\"Filename\"].json[\"filename\"]}}.{{$parameter[\"fileFormat\"]}}"
},
"operation": "toFile",
"fileFormat": "csv"
},
"typeVersion": 1
},
{
"name": "Write csv",
"type": "n8n-nodes-base.writeBinaryFile",
"position": [
1220,
840
],
"parameters": {
"fileName": "={{$node[\"Filename\"].json[\"foldername\"]}}{{$binary.data.fileName}}"
},
"typeVersion": 1
},
{
"name": "Filename",
"type": "n8n-nodes-base.set",
"position": [
860,
640
],
"parameters": {
"values": {
"string": [
{
"name": "filename",
"value": "=request_from{{$node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"id\"]}}_{{DateTime.now().toISO({ format: 'basic' }).split('.')[0]}}"
},
{
"name": "foldername",
"value": "/home/node/.n8n/weather-bot/"
},
{
"name": "imgname",
"value": "=request_from{{$node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"id\"]}}"
}
]
},
"options": {}
},
"typeVersion": 1
},
{
"name": "msg_errorAPI",
"type": "n8n-nodes-base.telegram",
"position": [
1820,
640
],
"parameters": {
"text": "=Sorry, {{$node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"first_name\"]}}, an error occurred while fetching weather data. Please try again later.",
"chatId": "={{$node[\"Telegram Trigger\"].json[\"message\"][\"chat\"][\"id\"]}}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"credentials": {
"telegramApi": {
"id": "17",
"name": "n8n R test bot"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"name": "Any errors API?",
"type": "n8n-nodes-base.if",
"position": [
1580,
640
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"error\"][\"name\"]}}",
"value2": "Error"
}
]
}
},
"typeVersion": 1
},
{
"name": "msg_errorR",
"type": "n8n-nodes-base.telegram",
"position": [
1820,
1000
],
"parameters": {
"text": "=Sorry, {{$node[\"Telegram Trigger\"].json[\"message\"][\"from\"][\"first_name\"]}}, an error occurred while creating an image. Please try again later.",
"chatId": "={{$node[\"Telegram Trigger\"].json[\"message\"][\"chat\"][\"id\"]}}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"credentials": {
"telegramApi": {
"id": "17",
"name": "n8n R test bot"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"name": "Read Binary File",
"type": "n8n-nodes-base.readBinaryFile",
"position": [
1820,
820
],
"parameters": {
"filePath": "={{$node[\"Filename\"].json[\"foldername\"]}}{{$node[\"Filename\"].json[\"imgname\"]}}.png"
},
"typeVersion": 1
},
{
"name": "R successful?",
"type": "n8n-nodes-base.if",
"position": [
1580,
840
],
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$json[\"exitCode\"]}}",
"operation": "equal"
}
]
}
},
"typeVersion": 1
},
{
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
680,
1160
],
"parameters": {
"mode": "passThrough"
},
"typeVersion": 1
},
{
"name": "Merge1",
"type": "n8n-nodes-base.merge",
"position": [
680,
300
],
"parameters": {
"mode": "passThrough"
},
"typeVersion": 1
},
{
"name": "msg_pleasewait",
"type": "n8n-nodes-base.telegram",
"position": [
1820,
460
],
"parameters": {
"text": "=Please wait while your request is being processed...",
"chatId": "={{$node[\"Telegram Trigger\"].json[\"message\"][\"chat\"][\"id\"]}}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"credentials": {
"telegramApi": {
"id": "17",
"name": "n8n R test bot"
}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"name": "Merge2",
"type": "n8n-nodes-base.merge",
"position": [
680,
640
],
"parameters": {
"mode": "wait"
},
"typeVersion": 1
},
{
"name": "Run R script",
"type": "n8n-nodes-base.executeCommand",
"position": [
1400,
840
],
"parameters": {
"command": "=Rscript --vanilla '{{$node[\"Filename\"].json[\"foldername\"]}}dumbbell_plot.R' '{{$node[\"Filename\"].json[\"foldername\"]}}{{$node[\"Filename\"].json[\"filename\"]}}.csv' '{{$node[\"Filename\"].json[\"foldername\"]}}{{$node[\"Filename\"].json[\"imgname\"]}}.png' >& {{$node[\"Filename\"].json[\"foldername\"]}}{{$node[\"Filename\"].json[\"filename\"]}}.log"
},
"typeVersion": 1,
"continueOnFail": true
}
],
"connections": {
"Merge": {
"main": [
[
{
"node": "msg_wrongcommand",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "msg_greet",
"type": "main",
"index": 0
}
]
]
},
"Merge2": {
"main": [
[
{
"node": "Filename",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
],
[
{
"node": "msg_pleasewait",
"type": "main",
"index": 0
},
{
"node": "Merge2",
"type": "main",
"index": 0
}
],
null,
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Filename": {
"main": [
[
{
"node": "City List",
"type": "main",
"index": 0
}
]
]
},
"City List": {
"main": [
[
{
"node": "Get weather data",
"type": "main",
"index": 0
}
]
]
},
"Write csv": {
"main": [
[
{
"node": "Run R script",
"type": "main",
"index": 0
}
]
]
},
"Run R script": {
"main": [
[
{
"node": "R successful?",
"type": "main",
"index": 0
}
]
]
},
"R successful?": {
"main": [
[
{
"node": "Read Binary File",
"type": "main",
"index": 0
}
],
[
{
"node": "msg_errorR",
"type": "main",
"index": 0
}
]
]
},
"msg_pleasewait": {
"main": [
[
{
"node": "Merge2",
"type": "main",
"index": 1
}
]
]
},
"Any errors API?": {
"main": [
[
{
"node": "msg_errorAPI",
"type": "main",
"index": 0
}
],
[
{
"node": "Convert API response",
"type": "main",
"index": 0
}
]
]
},
"Get weather data": {
"main": [
[
{
"node": "Any errors API?",
"type": "main",
"index": 0
}
]
]
},
"Read Binary File": {
"main": [
[
{
"node": "msg_getweather",
"type": "main",
"index": 0
}
]
]
},
"Spreadsheet File": {
"main": [
[
{
"node": "Write csv",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Convert API response": {
"main": [
[
{
"node": "Spreadsheet File",
"type": "main",
"index": 0
}
]
]
}
}
}To use this, copy the JSON above and paste it directly onto your n8n canvas.
Join the elite marketers who have offloaded their entire backend to n8n. Get direct support and custom builds in our private forum.