AutomationFlowsSlack & Telegram › Retrieve Deadlock Game Match Statistics and Send to Telegram

Retrieve Deadlock Game Match Statistics and Send to Telegram

ByEska @eska on n8n.io

Deadlock Match Stats Bot is an automated workflow for n8n designed to send detailed player statistics from the most recent Deadlock match directly to Telegram. When the user sends the /match command to the Telegram bot, the workflow performs the following steps:

Event trigger★★★★☆ complexity7 nodesTelegramHTTP RequestTelegram Trigger
Slack & Telegram Trigger: Event Nodes: 7 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #4571 — we link there as the canonical source.

This workflow follows the HTTP Request → 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 →

Download .json
{
  "id": "1",
  "name": "Deadlock Match Stats Bot",
  "nodes": [
    {
      "name": "Send Telegram Message",
      "type": "n8n-nodes-base.telegram",
      "position": [
        900,
        300
      ],
      "parameters": {
        "updates": [
          {
            "text": "={{$node[\"Format Message\"].json[\"text\"]}}",
            "chatId": "={{$json[\"message\"][\"chat\"][\"id\"]}}",
            "resource": "message",
            "operation": "send"
          }
        ]
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Fetch Profile HTML",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        300,
        100
      ],
      "parameters": {
        "url": "https://deadlocktracker.gg/player/97170387",
        "options": {},
        "responseFormat": "string"
      },
      "typeVersion": 1
    },
    {
      "name": "Extract Match ID",
      "type": "n8n-nodes-base.function",
      "position": [
        500,
        100
      ],
      "parameters": {
        "functionCode": "\nconst html = $json[\"body\"] || $json;\nconst matchIdMatch = html.match(/\\(#(\\d{8})\\)/g);\nif (!matchIdMatch) throw new Error(\"\u041c\u0430\u0442\u0447\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b\");\nconst ids = matchIdMatch.map(m => m.match(/\\d+/)[0]);\nconst lastMatchId = ids[ids.length - 1];\nreturn [{ matchId: lastMatchId }];\n"
      },
      "typeVersion": 1
    },
    {
      "name": "Fetch Match HTML",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        700,
        100
      ],
      "parameters": {
        "url": "={{\"https://deadlocktracker.gg/match/\" + $json[\"matchId\"]}}",
        "options": {},
        "responseFormat": "string"
      },
      "typeVersion": 1
    },
    {
      "name": "Parse Players",
      "type": "n8n-nodes-base.function",
      "position": [
        700,
        300
      ],
      "parameters": {
        "functionCode": "\nconst cheerio = require('cheerio');\nconst $ = cheerio.load($json[\"body\"] || $json);\nconst players = [];\n\n$('.player-wrapper').each((i, el) => {\n  const nick = $(el).find('.player-name').text().trim();\n  const hero = $(el).find('.character-icon').attr('alt') || '\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e';\n  const rank = $(el).find('.rank-icon').attr('alt') || '\u0411\u0435\u0437 \u0440\u0430\u043d\u0433\u0430';\n  players.push({ nick, hero, rank });\n});\n\nreturn players;\n"
      },
      "typeVersion": 1
    },
    {
      "name": "Format Message",
      "type": "n8n-nodes-base.function",
      "position": [
        900,
        100
      ],
      "parameters": {
        "functionCode": "\nconst lines = items.map(p =>\n  `\ud83c\udfae ${p.nick}\\n\ud83e\uddd9 \u0413\u0435\u0440\u043e\u0439: ${p.hero}\\n\ud83c\udfc6 \u0420\u0430\u043d\u0433: ${p.rank}\\n`\n);\nreturn [{ text: `\ud83d\udcca \u0418\u0433\u0440\u043e\u043a\u0438 \u043c\u0430\u0442\u0447\u0430:\\n\\n` + lines.join('\\n') }];\n"
      },
      "typeVersion": 1
    },
    {
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        100,
        100
      ],
      "parameters": {},
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {},
  "connections": {
    "Parse Players": {
      "main": [
        [
          {
            "node": "Format Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Message": {
      "main": [
        [
          {
            "node": "Send Telegram Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Match ID": {
      "main": [
        [
          {
            "node": "Fetch Match HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Match HTML": {
      "main": [
        [
          {
            "node": "Parse Players",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Fetch Profile HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Profile HTML": {
      "main": [
        [
          {
            "node": "Extract Match ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Deadlock Match Stats Bot is an automated workflow for n8n designed to send detailed player statistics from the most recent Deadlock match directly to Telegram. When the user sends the /match command to the Telegram bot, the workflow performs the following steps:

Source: https://n8n.io/workflows/4571/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

N8N Complete Final. Uses telegramTrigger, dataTable, telegram, mqtt. Event-driven trigger; 58 nodes.

Telegram Trigger, Data Table, Telegram +3
Slack & Telegram

TextMain. Uses telegramTrigger, stopAndError, telegram, httpRequest. Event-driven trigger; 56 nodes.

Telegram Trigger, Stop And Error, Telegram +2
Slack & Telegram

Pede Ai. Uses httpRequest, telegram, postgres, telegramTrigger. Event-driven trigger; 53 nodes.

HTTP Request, Telegram, Postgres +1
Slack & Telegram

📄 Documentation: Notion Guide

Telegram Trigger, @Blotato/N8N Nodes Blotato, Telegram +1
Slack & Telegram

Telegram Wait. Uses stickyNote, httpRequest, redis, noOp. Event-driven trigger; 36 nodes.

HTTP Request, Redis, Telegram +1