Din ”interna” Telegram-bot är inte intern särskilt länge. En vidarebefordrad länk, ett delat användarnamn – och plötsligt kan slumpmässiga personer peta på workflows som du byggt för ditt team.
Det slår snabbt mot marketing ops– och byråteam eftersom mycket kundarbete startar i chatten. Men även founders som kör lean, och konsulter som hanterar flera konton, märker av det. En enkel Telegram whitelist-automatisering löser det utan att göra boten till ett krångligt säkerhetsprojekt.
Du får se hur detta n8n-workflow kontrollerar en allowlist i Google Sheets, blockerar okända användare och håller dina interna automatiseringar privata.
Så fungerar automatiseringen
Hela n8n-workflowet, från trigger till slutligt resultat:
n8n Workflow Template: Telegram + Google Sheets: botåtkomst hålls privat
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Permission", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Answer Denied"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
n10@{ icon: "mdi:cog", form: "rounded", label: "Database with employees", pos: "b", h: 48 }
n1 --> n0
n1 --> n2
n3 --> n10
n10 --> n1
end
subgraph sg1["Flow 2"]
direction LR
n5@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
end
subgraph sg2["Slack Flow"]
direction LR
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Slack Trigger"]
end
subgraph sg3["Flow 4"]
direction LR
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
end
subgraph sg4["Flow 5"]
direction LR
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Get a record"]
end
subgraph sg5["Flow 6"]
direction LR
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
end
subgraph sg6["Flow 7"]
direction LR
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/notion.dark.svg' width='40' height='40' /></div><br/>Get a database page"]
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n3,n4 trigger
class n1,n8,n9 decision
class n5,n6,n7 database
classDef customIcon fill:none,stroke:none
class n2,n3,n4,n6,n7 customIcon
Problemet: interna botar blir röriga – snabbt
När en Telegram-bot är kopplad till riktiga automatiseringar är varje meddelande en potentiell trigger. Det är toppen för teamet – och ärligt talat riskabelt för alla andra. En okänd användare kan spamma kommandon, skapa oönskade API-anrop eller träffa endpoints du inte förväntade dig. Även om inget ”dåligt” händer så skadar bruset i sig: loggar fylls, du lägger tid på att felsöka spökproblem och du börjar tveka att lansera hjälpsamma chattbaserade verktyg eftersom du inte kan kontrollera vem som använder dem.
Friktionen byggs på. Här är var det brister.
- Du hamnar i att manuellt kontrollera användarnamn och säga till folk ”använd inte den boten”, vilket aldrig håller särskilt länge.
- Varje oönskat meddelande kan trigga tjänster längre ned i kedjan, så du betalar (i tid, API-kostnader eller både och) för trafik du inte bett om.
- Team slutar lita på interna chattverktyg när de slumpmässigt svarar fel person eller vid fel tidpunkt.
- Att uppdatera åtkomst blir en workflow-ändring, vilket innebär förseningar, misstag och ”kan du bara lägga till en person till”-pingar hela veckan.
Lösningen: styr Telegram-åtkomst med en allowlist i Google Sheets
Det här workflowet gör din Telegram-bot till en kontrollerad ingångspunkt i stället för en öppen dörr. Det startar när någon skriver till boten. n8n hämtar avsändarens användarnamn eller ID och slår sedan upp personen i en ”Employee Lookup Table” som kan ligga i Google Sheets (och valfritt i andra datakällor som Airtable, Notion eller en intern datalagring). Om användarens status är markerad som godkänd skickas flödet vidare till botens normala beteende. Om de nekas (eller inte hittas) blockerar workflowet förfrågan och kan skicka ett kort svar som ”åtkomst nekad”.
I praktiken betyder det att boten är trevlig för ditt team och osynlig för alla andra. Du hanterar åtkomst i en enkel tabell, inte i workflow-logiken, vilket håller det strukturerat när teamet förändras.
Det du får: automatisering vs. resultat
| Vad detta workflow automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så kan det se ut
Säg att din interna bot triggar automatiseringar för briefs, rapportuttag och snabba AI-hjälpare, och att den i snitt får 20 meddelanden per dag. Om ens 5 av dem kommer från fel personer (eller spam) kan du bränna cirka 10 minuter varje gång på att kolla loggar, verifiera vem som skickade vad och städa upp bieffekter. Det är ungefär en timme om dagen som försvinner i brus. Med detta workflow sker ”kontroll + routning” direkt, och obehöriga användare blockeras innan något kostsamt hinner köras.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger funkar bra)
- Telegram för att ta emot meddelanden och svara.
- Google Sheets för att lagra din allowlist med användare.
- Telegram bot token (hämta den från BotFather i Telegram).
Kunskapsnivå: Nybörjare. Du kopplar konton, kopierar credentials och redigerar en enkel allowlist-tabell.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett meddelande når din bot. Telegram-triggern lyssnar efter inkommande uppdateringar, så valfri DM eller kommando kan starta workflowet i realtid.
Workflowet kontrollerar vem som skickade det. n8n hämtar användarnamn/ID från Telegram-payloaden och frågar din medarbetaruppslagstabell (oftast Google Sheets, men workflowet innehåller även valfria verktyg för Airtable och Notion om din ”single source of truth” finns där).
Åtkomst routas automatiskt. En villkorskontroll plus en routnings-switch skickar godkända användare via ”beviljad”-vägen och alla andra via en nekande väg, så obehöriga meddelanden aldrig når dina interna automatiseringar.
Användaren får rätt utfall. Godkända användare fortsätter till ditt vanliga botsvar eller processer längre ned i kedjan. Nekade användare kan få ett kort svar, eller så kan du välja att inte säga något alls för att undvika att bekräfta att boten finns.
Du kan enkelt justera allowlist-logiken för att stödja roller (admin, ekonomi, konsult) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Telegram-triggern
Konfigurera arbetsflödet så att det startar när ett Telegram-meddelande kommer in.
- Lägg till och öppna Incoming Telegram Update.
- Credential Required: Anslut era
telegramApi-uppgifter. - Ställ in Updates på
messageför att lyssna efter nya meddelanden. - Spara noden så att webhook-URL:en genereras.
Steg 2: Anslut datakällan för medarbetarsökning
Mappa inkommande Telegram-användarnamn till interna behörighetsposter med hjälp av datatabellen.
- Öppna Employee Lookup Table.
- Ställ in Operation på
get. - Ställ in Data Table ID på
[YOUR_ID]. - I Filters, ställ in UserName på
{{ $json.message.from.username }}. - Bekräfta kopplingen: Incoming Telegram Update → Employee Lookup Table.
[YOUR_ID] inte ersätts med ett giltigt tabell-ID kommer sökningen inte att returnera några poster och åtkomsten kommer alltid att falla tillbaka till vägen för ej beviljad.Steg 3: Sätt upp logik för åtkomstroutning
Routa användare baserat på Access-status från uppslagstabellen.
- Öppna Access Routing.
- Konfigurera den första regeln för att jämföra Left Value
{{ $json.Access }}är lika med Right ValueGrantedoch byt namn på utdata tillGranted. - Konfigurera den andra regeln för att jämföra Left Value
{{ $json.Access }}är lika med Right ValueDeniedoch byt namn på utdata tillDenied. - Verifiera flödet: Employee Lookup Table → Access Routing → Idle Step för Granted och → Send Denial Reply för Denied.
Access Routing skickar utdata till både Idle Step och Send Denial Reply baserat på den matchade regeln.
Steg 4: Konfigurera avslagsresponsen
Skicka ett avslagsmeddelande tillbaka till användaren när åtkomst inte beviljas.
- Öppna Send Denial Reply.
- Credential Required: Anslut era
telegramApi-uppgifter. - Ställ in Text på
Access dinied. - Ställ in Chat ID på
{{ $('Incoming Telegram Update').item.json.message.chat.id }}. - Lämna Append Attribution inaktiverad för att matcha den givna konfigurationen.
Steg 5: Konfigurera valfria verktygsnoder
Dessa verktygsnoder finns för framtida utbyggnad och databerikning, men är inte anslutna i det aktuella körflödet.
- Öppna Utility: Retrieve Sheet Rows och välj ert Document ID och Sheet Name.
- Credential Required: Anslut era
googleSheetsOAuth2Api-uppgifter i Utility: Retrieve Sheet Rows. - Öppna Utility: Get Notion Page och ställ in Resource på
databasePageoch Operation påget, och ange sedan en Page ID-URL. - Credential Required: Anslut era
notionApi-uppgifter i Utility: Get Notion Page. - Gå igenom Utility: Slack Event Listener och Utility: Fetch Airtable Record om ni planerar att ansluta dem senare.
Steg 6: Testa och aktivera ert arbetsflöde
Validera hela flödet och aktivera det sedan för produktionsbruk.
- Klicka på Execute Workflow och skicka ett testmeddelande till er Telegram-bot.
- Bekräfta att Incoming Telegram Update skickar data till Employee Lookup Table och därefter till Access Routing.
- För en användare markerad som
Denied, verifiera att Send Denial Reply skickar meddelandetAccess dinied. - Om körningen lyckas, växla arbetsflödet till Active för att aktivera realtidsautomation.
Vanliga fallgropar
- Google Sheets-credentials kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera Google-kopplingen i n8n under Credentials och bekräfta att arket är delat med det anslutna Google-kontot.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera output för alltid.
Vanliga frågor
Cirka 30 minuter om din Telegram-bot och ditt Google Sheet är klara.
Nej. Du kommer främst att koppla konton och mappa ett par fält, som användarnamn och åtkomststatus.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in användning av Google Sheets (oftast gratis) samt eventuella downstream-API:er som boten triggar.
Två alternativ: n8n Cloud (managed, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det är en vanlig uppgradering. Du kan lägga till en kolumn ”Roll” i Google Sheets och sedan justera Access Routing-switchen (och villkorskontrollen) så att admins och personal routas till olika vägar. Vissa team loggar också varje nekad attempt i Airtable eller ett separat ark och visar bara nekande svar för kända användare som är tillfälligt avstängda.
För det mesta är det ett problem med bot-token eller att fel Telegram-credentials är valda i n8n. Skapa en ny token i BotFather vid behov, uppdatera sedan Telegram-credential i n8n och testa triggern igen. Om meddelanden fortfarande inte kommer fram, bekräfta att du pratar med rätt bot och att boten får ta emot meddelanden (vissa integritetsinställningar och chattkontexter kan påverka updates). Kontrollera även n8n:s körningsloggar för att se om triggern startar men fallerar senare i routningen.
Väldigt många. I n8n Cloud beror det på din körningsgräns, medan self-hosting främst begränsas av serverstorlek och hur tunga dina downstream-actions är. För enkla ”lookup + routning + svar” klarar de flesta små uppsättningar intern trafik utan problem, även med livliga gruppchattar.
Oftast, ja – för åtkomstspärr. n8n gör det enklare med förgrenad logik (beviljad vs. nekad vs. hittas inte), och self-hosting är viktigt om du vill ha obegränsat antal körningar. Du kan också kombinera flera uppslag (Sheets plus Airtable, till exempel) utan att tvinga verktyget att bli något det inte är. Zapier eller Make kan fortfarande funka om ditt flöde är extremt enkelt, men du kan landa i högre kostnad när volymen växer. Prata med en automationsexpert om du är osäker på vad som passar.
När allowlisten väl är på plats slutar boten vara en risk och blir ett pålitligt internt verktyg igen. Sätt upp det en gång, håll arket uppdaterat och gå vidare.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.