Din Telegram-bot börjar enkelt. Sedan delas en demolänk, en användare hamrar den hela natten och plötsligt ser din ”lilla” OpenAI-faktura… inte så liten ut. Därför slutar Telegram quota automation att vara valfritt så fort riktiga människor börjar använda din bot.
Marknadsteam som kör testbotar märker det först. En grundare som släpper en MVP märker det härnäst. Och supportansvariga som jonglerar ”gratis” åtkomst för kunder lär sig den hårda vägen att obegränsade chattar aldrig är gratis. Det här flödet ger dig förutsägbara gränser (som 3 meddelanden per användare), tydlig spårning och automatiska återställningar.
Du får se hur flödet spårar varje användare i Google Sheets, blockerar eller varnar vid gränsen och återställer alla enligt ett schema så att du slipper sitta och vakta kvoter.
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Telegram + Google Sheets: botkvoter utan kaos
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Agent", pos: "b", h: 48 }
n1["<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/code.svg' width='40' height='40' /></div><br/>Code"]
n2@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet1", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "Azure", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "No Operation", pos: "b", h: 48 }
n11["<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/>Limit Message"]
n12["<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/>Agent Answer"]
n13["<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"]
n14@{ icon: "mdi:memory", form: "rounded", label: "Memory", pos: "b", h: 48 }
n1 --> n4
n0 --> n12
n5 -.-> n0
n14 -.-> n0
n9 --> n10
n9 --> n11
n9 --> n0
n13 --> n2
n3 --> n1
n2 --> n3
n4 --> n9
end
subgraph sg1["Schedule Flow"]
direction LR
n6@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet1", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Update row in sheet", pos: "b", h: 48 }
n6 --> n7
n7 --> n8
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 n13,n6 trigger
class n0 ai
class n5 aiModel
class n14 ai
class n9 decision
class n2,n3,n4,n7,n8 database
class n1 code
classDef customIcon fill:none,stroke:none
class n1,n11,n12,n13 customIcon
Utmaningen: användningsgränser för AI-botar som inte kollapsar
Telegram är friktionsfritt, vilket är hela poängen. Men det betyder också att en enda person (eller en gruppchatt) kan bränna igenom din AI-användning på några minuter. Du försöker ”bara hålla ett öga på det”, sedan missar du en dag och sitter fast med att läsa loggar, gissa vem som missbrukade det och svara på obekväma frågor om varför boten plötsligt slutade fungera. Än värre: du kan inte köra felfria demos eftersom användningen är oförutsägbar, och du kan inte prissätta ett abonnemang med trygghet när dina kostnader svänger kraftigt.
Det blir dyrt snabbt. Här är var det oftast fallerar i verklig drift.
- Du har ingen hållbar per-användare-räknare, så varje ”gräns” är i praktiken bara en förhoppning.
- När boten delas offentligt får du veta det efter att kostnaden har slagit till, inte innan.
- Manuella återställningar är irriterande, lätta att glömma och skapar en inkonsekvent användarupplevelse.
- Personer som borde få åtkomst (demoprospekt, VIP-användare) straffas tillsammans med alla andra.
Lösningen: kvoter för Telegram-meddelanden spårade i Google Sheets
Det här n8n-flödet lägger ett enkelt, genomdrivbart kvotsystem framför din AI-agent. När en användare skriver till din Telegram-bot slår automatiseringen upp användaren i Google Sheets, räknar fram deras nya meddelandeantal och skriver tillbaka den uppdaterade räknaren till arket. Sedan styrs konversationen: under gränsen genererar AI-agenten ett svar med en OpenAI-kompatibel chattmodell (det här flödet använder en nod för Azure OpenAI-chattmodell) och skickar svaret tillbaka till Telegram. Vid gränsen skickas ett tydligt ”du har nått din kvot”-meddelande. Över gränsen slutar den tyst att processa så att du inte betalar för extra tokens.
Separat körs ett schemalagt återställningsflöde med den takt du väljer (minut för test, dagligen för produktion, veckovis för kurser). Det hämtar alla användarrader från Google Sheets och återställer räknare till noll i bulk, vilket innebär att du får återkommande kvoter utan att röra någonting.
Vad som förändras: före vs. efter
| Vad detta eliminerar | Effekten du kommer att se |
|---|---|
|
|
Effekt i verkligheten
Säg att din demobot får 50 användare på en vecka. Utan kvoter är det vanligt att ett fåtal personer skickar 20+ meddelanden var, så du slutar med att betala för hundratals AI-anrop du inte planerade för. Med det här flödet inställt på 3 meddelanden per användare landar samma vecka på cirka 150 AI-anrop, och allt därutöver blir antingen en varning eller ett tyst stopp. Återställningstriggern kör varje natt, så varje dag börjar strukturerat utan att du behöver röra Google Sheets.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att ta emot meddelanden och skicka svar.
- Google Sheets för per-användare-räknare och återställningsuppdateringar.
- Telegram bot-token (hämta den från BotFather i Telegram).
- Google Sheets API-inloggningsuppgifter (skapa dem i Google Cloud Console).
- Azure OpenAI-nyckel eller OpenAI-kompatibel nyckel (hämta den i din AI-leverantörs dashboard).
Svårighetsnivå: Medel. Du kopplar konton, sätter upp ett ark och justerar ett Switch-villkor för din kvot.
Behöver du hjälp att implementera detta? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Flödet i arbetsflödet
Ett Telegram-meddelande kommer in. Telegram Trigger tar emot användarens meddelande (och deras chatt-ID), som blir det ”användar-ID” som används för spårning.
Användaren loggas och räknaren uppdateras. n8n upsertar en användarpost i Google Sheets, hämtar aktuell räknare, räknar fram ett nytt värde och skriver tillbaka det till arket så att allt alltid är uppdaterat.
Gränslogiken avgör vad som händer härnäst. En Switch-nod routar konversationen baserat på räknaren: under gränsen går till AI-agenten, exakt vid gränsen skickas ett varningsmeddelande och över gränsen kan bearbetningen hoppas över helt.
AI-svaret genereras och levereras. För tillåtna meddelanden använder AI-agenten chattmodell-noden plus sessionsminne för att skapa ett sammanhängande svar, och en Telegram-nod skickar tillbaka det till användaren.
Du kan enkelt ändra meddelandegränsen och återställningsfrekvensen så att det matchar din demo, testperiod eller kundplan. Se den fullständiga implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-implementeringsguide
Steg 1: konfigurera schedule-triggern
Det här arbetsflödet nollställer dagliga meddelanderäknare enligt ett schema. Den schemalagda grenen startar med Timed Reset Trigger och rensar därefter räknare i Google Sheets.
- Lägg till noden Timed Reset Trigger och öppna dess inställningar.
- I Rule, ställ in intervallets Field till
minutesoch välj önskat intervall för ert återställningsschema. - Koppla Timed Reset Trigger till Fetch All Records för att starta återställningsflödet.
Steg 2: konfigurera Telegram-triggern
Inkommande användarmeddelanden kommer in via Telegram Incoming, som startar flödet för användarräknaren.
- Lägg till noden Telegram Incoming och ställ in Updates så att den inkluderar
message. - Credential Required: Anslut era
telegramApi-autentiseringsuppgifter i Telegram Incoming. - Koppla Telegram Incoming till Upsert User Record för att börja spåra användare.
Steg 3: anslut Google Sheets
Google Sheets lagrar användar-ID:n och meddelanderäknare. Det här arbetsflödet använder flera Sheets-noder för återställningar, uppslag och uppdateringar.
- Credential Required: Anslut era
googleSheetsOAuth2Api-autentiseringsuppgifter till alla Google Sheets-noder (Fetch All Records, Reset Counter Record, Upsert User Record, Retrieve User Record, Upsert Counter Record). - I Fetch All Records ställer ni in Document till
[YOUR_ID]och Sheet Name tillSheet1 (gid=0). - I Reset Counter Record ställer ni in Operation till
updateoch mappar ID till{{ $json[' ID'] }}samt Message Counter till0. - I Upsert User Record ställer ni in Operation till
appendOrUpdateoch mappar ID till{{ $json.message.chat.id }}. - I Retrieve User Record ställer ni in Range till
A:Zoch lägger till ett filter där Lookup Column ärIDoch Lookup Value är{{ $('Telegram Incoming').item.json.message.chat.id }}. - I Upsert Counter Record ställer ni in Operation till
appendOrUpdateoch mappar ID till{{ $('Telegram Incoming').item.json.message.chat.id }}samt Message Counter till{{ $json.message_count }}.
ID med ett inledande blanksteg i flera noder. Säkerställ att er rubrikrad i arket matchar exakt, annars kommer uppslag och uppdateringar att misslyckas.Steg 4: konfigurera meddelanderäkning och routning
Det här steget beräknar den nya meddelanderäkningen och routar användaren baserat på gränser.
- I Compute New Count klistrar ni in JavaScript-koden i JS Code:
// Get the data from the lookup result const currentRow = $input.first().json; // Get current message count from column B (if it doesn't exist, start at 0) const currentCount = $input.first().json['Message Counter'] || 0; // Add 1 to the count const newCount = parseInt(currentCount) + 1; // Return the data we need for the next step return { json: { session_id: currentRow.A, message_count: newCount, row_number: currentRow.__rowNum } }; - Säkerställ att flödet kopplar Retrieve User Record → Compute New Count → Upsert Counter Record → Route by Limit.
- I Route by Limit konfigurerar ni de tre reglerna med Left Value satt till
{{ $json['Message Counter'] }}och högervärden3förgt,equalsochlt. - Behåll Skip Action som no-op-slutpunkt för en av grenarna när ingen åtgärd krävs.
Steg 5: konfigurera AI-svarsmotorn
AI-agenten körs bara när användaren ligger under gränsen. Den använder Azure OpenAI och sessionsminne för kontinuitet.
- I AI Response Engine ställer ni in Text till
{{ $('Telegram Incoming').item.json.message.text }}, Prompt Type tilldefineoch aktiverar Has Output Parser. - Ställ in System Message i AI Response Engine till
You are a knowledgeable and helpful AI assistant designed to provide accurate, thoughtful, and actionable responses. Your role is to: CORE PRINCIPLES: - Provide clear, accurate information based on your knowledge - Admit uncertainty when you don't know something - Ask clarifying questions when requests are ambiguous - Prioritize user safety and well-being in all responses - Maintain a professional yet friendly tone RESPONSE GUIDELINES: - Structure longer responses with clear headings or bullet points - Provide step-by-step instructions for complex tasks - Include relevant examples when helpful - Suggest follow-up actions or resources when appropriate - Keep responses concise but comprehensive LIMITATIONS AWARENESS: - Acknowledge when tasks require real-time information you cannot access - Explain if requests fall outside your capabilities - Recommend human experts or specialized tools when appropriate Remember: Users have limited messages per session, so make each response valuable and complete. Focus on giving thorough, actionable help that addresses their needs efficiently. - I Azure Chat Model ställer ni in Model till
gpt-4.1-2och kopplar den till AI Response Engine som språkmodell. - Credential Required: Anslut era
azureOpenAiApi-autentiseringsuppgifter i Azure Chat Model. Detta tillhandahåller autentisering för AI-svarsflödet. - I Session Memory ställer ni in Session Key till
{{ $('Telegram Incoming').item.json.message.chat.id }}och Session ID Type tillcustomKey. Detta minne är kopplat till AI Response Engine, så inga separata autentiseringsuppgifter behövs.
Steg 6: konfigurera utgående åtgärder
Användare får antingen ett meddelande om begränsning eller AI-svaret beroende på routningsbeslutet.
- I Send Limit Notice ställer ni in Text till
=Daily limit exceeded 🚫. Try again later ⏳.och Chat ID till{{ $('Telegram Incoming').item.json.message.chat.id }}. - Credential Required: Anslut era
telegramApi-autentiseringsuppgifter i Send Limit Notice. - I Deliver Agent Reply ställer ni in Text till
{{ $json.output }}och Chat ID till{{ $('Telegram Incoming').item.json.message.chat.id }}. - Credential Required: Anslut era
telegramApi-autentiseringsuppgifter i Deliver Agent Reply. - Bekräfta routningen: Route by Limit skickar till Skip Action, Send Limit Notice eller AI Response Engine, och AI Response Engine skickar vidare till Deliver Agent Reply.
Steg 7: testa och aktivera ert arbetsflöde
Validera både återställningsflödet och användarflödet innan ni aktiverar automatiseringen.
- Klicka på Execute Workflow och skicka ett testmeddelande till er Telegram-bot för att trigga Telegram Incoming.
- Verifiera uppdateringar i Google Sheets: Upsert User Record ska lägga till användaren, Retrieve User Record ska hitta posten och Upsert Counter Record ska öka Message Counter.
- Bekräfta routningen: under gränsen ska ni få ett AI-svar från Deliver Agent Reply; vid eller över gränsen ska ni få Send Limit Notice.
- Låt Timed Reset Trigger köra eller justera schemat tillfälligt för att bekräfta att Fetch All Records → Reset Counter Record nollställer räknare till
0. - När allt fungerar växlar ni arbetsflödet till Active för produktion.
Se upp med
- Inloggningsuppgifter för Google Sheets kan löpa ut eller kräva specifika behörigheter. Om det slutar fungera, kontrollera först n8n:s credential-test och din åtkomst till Google Cloud-projektet.
- Om du använder schemalagda återställningar intensivt (som varje minut under test) kan Google Sheets hastighetsbegränsa dig. Sänk frekvensen när du vet att det fungerar.
- AI-prompter i Agent-noden börjar generiskt, ärligt talat. Lägg in dina policyer (vad som ska hända vid kvot, ton, formatering) tidigt, annars kommer du justera svaren i efterhand.
Vanliga frågor
Cirka en timme om ditt Google-ark och dina inloggningsuppgifter är klara.
Ja, men någon behöver vara bekväm med att koppla konton i n8n. Inga kodändringar krävs om du behåller standardlogiken.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnaden för din AI-modells användning per meddelande.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsat antal exekveringar men kräver grundläggande serveradministration.
Du kommer främst att redigera Switch-villkoren i Route by Limit för att ändra tilldelningen (till exempel från 3 till 10). Om du vill ha andra återställningsregler uppdaterar du schemat i Timed Reset Trigger. Vanliga anpassningar är annan varningstext i Telegram-noden för ”kvotnotis”, separata kvoter per användarnivå genom att lägga till kolumner i Google Sheets samt att ändra beteendet ”tyst blockering” till ett mjukare meddelande.
Oftast beror det på en ogiltig eller återgenererad bot-token. Uppdatera Telegram-inloggningsuppgifterna i n8n och bekräfta att boten kan ta emot meddelanden i Telegram. Om triggern fungerar men svaren inte skickas, kontrollera att din bot får skicka meddelanden till den chatten och att du inte har nått Telegram API-gränser genom för aggressiv testning.
Det beror på din n8n-hosting och Google Sheets-begränsningar, men de flesta små team kör hundratals chattar per dag utan problem.
Ofta, ja. Kvotlogiken kräver förgreningar, datauppslag och ”gör ingenting”-vägar, och n8n hanterar det utan att varje villkor blir ett extra betalt steg. Du får också möjlighet till egen hosting, vilket spelar roll när boten får hög belastning och antalet exekveringar skjuter i höjden. Zapier eller Make kan gå snabbare för en enkel ”Telegram till Sheet”-logg, men kvotgenomdrivning plus schemalagda återställningar blir ofta klumpigt. Om du är osäker, prata med en automatiseringsexpert och kvalitetssäkra rätt verktyg innan du bygger om det här två gånger.
När kvoter och återställningar är automatiska blir boten förutsägbar igen. Då kan du lägga tiden på att förbättra svaren, inte på att jaga missbruk.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.