Tillbaka till bloggen
Productivity

Telegram bot webhook-inställning: komplett guide för utvecklare

Lär dig telegram bot webhook-inställning steg för steg. Konfigurera setWebhook, verifiera med getWebhookInfo, hantera HTTPS och felsök vanliga fel.

Telegram bot webhook-inställning: komplett guide för utvecklare

Telegram bot webhook-inställning ansluter din server till Telegrams uppdateringsström så att meddelanden anländer i realtid istället för i en polling-loop. Om du bygger en anpassad bot med Bot API, är webhooks den vanliga produktionsvägen: Telegram POSTar varje uppdatering till din HTTPS-slutpunkt, och din kod svarar.

Denna guide går igenom förutsättningar, registrering, ett fungerande exempel på en hanterare, verifiering, felsökning och när en hanterad plattform som TeleClaw är mer meningsfull än att själv hosta.

Viktiga slutsatser

  • Webhooks och long polling är ömsesidigt uteslutande. Att ställa in en webhook inaktiverar getUpdates tills du tar bort den.
  • HTTPS är obligatoriskt. Din slutpunkt behöver TLS 1.2+, ett matchande certifikat och port 443, 80, 88 eller 8443.
  • Registrera med setWebhook, verifiera med getWebhookInfo. Kontrollera last_error_message när uppdateringar slutar flöda.
  • Använd secret_token för att bekräfta att förfrågningar kommer från Telegram, inte slumpmässiga skannrar som träffar din URL.
  • No-code-alternativ: TeleClaw hanterar hosting och leverans så att du helt hoppar över serverlagret.

Webhooks vs long polling: vilken ska man välja

Telegram erbjuder två sätt att ta emot uppdateringar. Enligt Bots FAQ väljer du en metod per bot. Du kan inte köra båda samtidigt.

FaktorWebhookLong polling (getUpdates)
AnslutningsriktningTelegram skickar till din serverDin server hämtar från Telegram
Offentlig HTTPS-URLKrävsKrävs inte
SSL-certifikatKrävsKrävs inte
LatensLägre (omedelbar push)Beror på polling-intervall
Bäst förProduktion, hög trafikLokal utveckling, prototyper
BrandväggMåste acceptera inkommande POST från TelegramEndast utgående HTTPS

Long polling är det snabbaste sättet att prototypa. Din bot anropar getUpdates i en loop, bearbetar varje batch och flyttar fram offseten. Ingen domän, inget certifikat, ingen öppen port.

Webhooks vänder på modellen. Telegram skickar en HTTPS POST till din URL när någon meddelar boten. Det tar bort inaktiva polling-förfrågningar och minskar reaktionstiden, vilket är viktigt för supportbots, betalningsflöden och gruppmoderering i stor skala.

Om du fortfarande registrerar boten själv, börja med vår guide för att skapa en Telegram bot för att få en token från BotFather innan du fortsätter här.

Förutsättningar för telegram bot webhook-inställning

Innan du anropar setWebhook, bekräfta att din infrastruktur uppfyller Telegrams krav från den officiella webhook-guiden:

  • Bot-token från @BotFather (se guiden för att skapa boten som länkades ovan).
  • Offentlig domän med ett giltigt TLS-certifikat. Självsignerade certifikat fungerar endast om du laddar upp den publika nyckeln via certificate-parametern.
  • Stödd port på din server: 443 (standard), 80, 88 eller 8443. Andra portar avvisas.
  • Certifikat CN eller SAN måste matcha domänen i din webhook-URL. Wildcard-certifikat kanske inte fungerar. Omdirigeringar stöds inte.
  • Inkommande POST-åtkomst från Telegram-subnät 149.154.160.0/20 och 91.108.4.0/22.

För lokal utveckling, exponera localhost via en tunnel (ngrok, Cloudflare Tunnel eller liknande) som ger dig en publik HTTPS-URL. Testa att tunneln returnerar HTTP 200 för POST-förfrågningar innan du registrerar webhooken.

Steg 1: Bygg din webhook-slutpunkt

Din server behöver en rutt som accepterar POST-förfrågningar, parsar JSON Update-objektet och returnerar HTTP 200 snabbt. Långsamma hanterare får Telegram att försöka igen och så småningom rapportera fel i getWebhookInfo.

Minimalt Node.js-exempel med Express:

import express from 'express';

const app = express();
app.use(express.json());

const SECRET = process.env. WEBHOOK_SECRET;

app.post('/webhook', (req, res) => {
 if (SECRET && req.get('X-Telegram-Bot-Api-Secret-Token')!== SECRET) {
 return res.sendStatus(403);
 }

 const update = req.body;
 // Process update.message, update.callback_query, etc.
 console.log('Update ID:', update.update_id);

 res.sendStatus(200);
});

app.listen(443);

Python med Flask följer samma mönster: läs JSON från request, validera den hemliga headern om konfigurerad, bearbeta uppdateringen, returnera 200.

Svara snabbt. Tungt arbete (databas-skrivningar, AI API-anrop) bör gå till en bakgrundskö. Telegram förväntar sig en snabb bekräftelse. Du kan också svara direkt genom att returnera en JSON-kropp med ett method-fält istället för att göra ett separat API-anrop, som beskrivs i Bot API webhook-anteckningarna.

Steg 2: Telegram bot konfigurera webhook med setWebhook

När din slutpunkt är live, registrera den med Bot API. Ersätt <TOKEN> och URL:en med dina värden.

Använder curl:

curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" \
 -H "Content-Type: application/json" \
 -d '{
 "url": "https://yourdomain.com/webhook",
 "secret_token": "my_random_secret_abc123",
 "max_connections": 40,
 "allowed_updates": ["message", "callback_query", "chat_join_request"],
 "drop_pending_updates": false
 }'

Parameterreferens:

  • url (obligatorisk): Din HTTPS-slutpunkt. Använd en tom sträng för att ta bort webhooken.
  • secret_token (valfri): 1-256 tecken (A-Z, a-z, 0-9, _, -). Telegram skickar den i X-Telegram-Bot-Api-Secret-Token-headern.
  • max_connections (valfri): 1-100 samtidiga anslutningar. Standard är 40.
  • allowed_updates (valfri): Begränsa vilka uppdateringstyper du tar emot. Minskar nyttolaststorleken om du bara hanterar meddelanden.
  • drop_pending_updates (valfri): Sätt true för att kassera köade uppdateringar när du byter webhooks.
  • certificate (valfri): Ladda upp din publika nyckelfil för självsignerade certifikat.

Ett lyckat svar ser ut som {"ok":true,"result":true,"description":"Webhook was set"}.

Steg 3: Verifiera med getWebhookInfo

Bekräfta alltid registreringen omedelbart. Detta är ditt första felsökningsverktyg när uppdateringar slutar anlända.

curl "https://api.telegram.org/bot<TOKEN>/getWebhookInfo"

Exempel på svar:

{
 "ok": true,
 "result": {
 "url": "https://yourdomain.com/webhook",
 "has_custom_certificate": false,
 "pending_update_count": 0,
 "max_connections": 40,
 "allowed_updates": ["message", "callback_query", "chat_join_request"]
 }
}

Håll koll på dessa fält:

  • url: Tom betyder att ingen webhook är aktiv (boten använder long polling).
  • pending_update_count: Köade uppdateringar som väntar på leverans. Ett stigande antal signalerar leveransfel.
  • last_error_date och last_error_message: Den senaste felorsaken. Fixa grundorsaken, sedan försöker Telegram automatiskt igen.
  • ip_address: Vilken Telegram IP som för närvarande träffar din slutpunkt.

Skicka ett testmeddelande till din bot från ett riktigt Telegram-konto. Om pending_update_count förblir noll och dina serverloggar visar POST, fungerar telegram bot webhook-inställningen.

Telegram bot webhook-exempel: hanterare för anslutningsförfrågan

Bots för anslutningsförfrågningar (Guardian-liknande antagningsflöden) behöver uppdateringstypen chat_join_request. Vår Guardian bot-guide täcker produktsidan. Här är webhook-kopplingen.

Registrera med anslutningsförfrågningar aktiverade:

curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" \
 -d "url=https://yourdomain.com/webhook" \
 -d "allowed_updates=[\"chat_join_request\",\"message\"]"

Hanteringslogik (pseudokod):

if (update.chat_join_request) {
 const { chat, from, invite_link } = update.chat_join_request;
 // Kör screeninglogik, godkänn eller avvisa sedan via Bot API
 await approveChatJoinRequest(chat.id, from.id);
}

Telegram levererar anslutningsförfrågningar som push-uppdateringar, så webhooks är en naturlig passform för antagningsbots som måste svara innan förfrågan löper ut.

Telegram bot ta bort webhook och växla tillbaka till polling

Behöver du felsöka lokalt med getUpdates? Ta bort webhooken först.

Alternativ A med deleteWebhook:

curl -X POST "https://api.telegram.org/bot<TOKEN>/deleteWebhook" \
 -d "drop_pending_updates=true"

Alternativ B med setWebhook och tom URL:

curl "https://api.telegram.org/bot<TOKEN>/setWebhook?url="

Båda metoderna återaktiverar long polling. Om du hoppar över detta steg returnerar getUpdates ingenting eftersom webhooken fortfarande är registrerad till din produktions-URL.

Felsökning av vanliga webhook-fel

När getWebhookInfo visar fel, matcha meddelandet med en lösning:

Fel symptomTrolig orsakLösning
SSL-fel / certifikatverifiering misslyckadesOfullständig certifikatkedja eller utgånget certifikatInstallera fullständig kedja (Let’s Encrypt certbot hanterar detta). Testa med en SSL-kontroll.
Felaktigt svar från webhook: 500Serverkrasch vid POSTFixa hanterarfel. Returnera 200 även om bearbetningen misslyckas internt.
Felaktigt svar: 404URL-sökväg matchar inteSe till att den registrerade URL:en matchar din rutt exakt.
Anslutning tidsinställdBrandvägg eller fel portÖppna 443 till Telegram-subnät. Bekräfta att processen lyssnar på en stödd port.
För många omdirigeringarHTTP till HTTPS omdirigeringsloopPeka webhook-URL:en direkt till den slutliga HTTPS-slutpunkten.
pending_update_count klättrarSlutpunkten var nere under trafikFixa slutpunkten, anropa sedan eventuellt setWebhook med drop_pending_updates=true.

Kör getWebhookInfo enligt ett schema i produktion. Att fånga last_error_message tidigt förhindrar timmar av tyst meddelandeförlust.

Hoppa över servern: hanterade bots med TeleClaw

Inte varje bot behöver anpassad webhook-infrastruktur. Om ditt mål är en AI-assistent för en grupp eller företagskanal, är hosting och uppdateringsleverans lösta problem.

TeleClaw ansluter din BotFather-token till en hanterad körtid som drivs av OpenClaw. Du konfigurerar personlighet, kunskapsbas och modereringsregler i instrumentpanelen. Plattformen hanterar HTTPS-slutpunkter, skalning och AI-modellroutning. Lägg till @claw som gruppadministratör och gå live utan att skriva en webhook-hanterare.

Utforska vad en hanterad bot kan göra på TeleClaws funktionssida. För en fullständig no-code-genomgång, se vår Telegram chatbot utan kod-guide.

Anpassade webhooks är fortfarande meningsfulla när du behöver full kontroll: proprietära backends, reglerad datalagring eller icke-standardiserad uppdateringsbearbetning. För allt annat adderas den operativa kostnaden för certifikathantering, övervakning och återförsök snabbt.

Slutsats

Telegram bot webhook-inställning handlar om fyra steg: distribuera en HTTPS-slutpunkt, anropa setWebhook, verifiera med getWebhookInfo och övervaka efter fel. Använd secret_token för förfrågningsvalidering, begränsa allowed_updates till vad du bearbetar och håll hanterarna snabba.

Utvecklare som vill ha produktions-push-leverans utan att köra servrar kan använda TeleClaw istället. Klistra in din token, konfigurera AI-beteende och fokusera på vad boten säger snarare än hur uppdateringar anländer.

Redo att lansera en AI-bot utan att hantera webhooks? Lägg till @claw i din Telegram-grupp →

FAQ

Vanliga frågor

Hur ställer man in telegram bot webhook?
Distribuera en HTTPS-slutpunkt som accepterar POST-förfrågningar och returnerar HTTP 200. Anropa setWebhook med din URL och bot-token: https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://yourdomain.com/webhook. Bekräfta med getWebhookInfo. Din server måste använda TLS 1.2+, ett giltigt certifikat och en av de stödda portarna (443, 80, 88 eller 8443).
Vad är skillnaden mellan webhook och long polling?
Long polling innebär att din bot upprepade gånger anropar getUpdates för att hämta nya meddelanden. Webhooks innebär att Telegram skickar varje uppdatering till din HTTPS-URL när den anländer. Du kan bara använda en metod åt gången. Polling är enklare för lokal utveckling. Webhooks ger lägre latens och skalar bättre för produktionsbots med jämn trafik.
Hur tar jag bort en telegram bot webhook?
Anropa deleteWebhook på Bot API, eller anropa setWebhook med en tom url-parameter. Båda växlar boten tillbaka till getUpdates long polling. Lägg till drop_pending_updates=true om du vill kassera köade uppdateringar istället för att ta emot dem efter växlingen.
Varför tar min telegram bot webhook inte emot uppdateringar?
Kör getWebhookInfo och kontrollera last_error_message. Vanliga orsaker inkluderar ett ogiltigt SSL-certifikat, fel port, omdirigeringar på din URL, en server som returnerar icke-200 svar, eller en brandvägg som blockerar Telegram IP-intervall. Fixa slutpunkten först, registrera sedan om webhooken.
Behöver jag en webhook för att köra en AI Telegram bot?
Endast om du själv hostar anpassad bot-kod. Plattformar som TeleClaw hanterar hosting, HTTPS och uppdateringsleverans åt dig. Lägg till @claw i din grupp, klistra in din BotFather-token i instrumentpanelen, och plattformen hanterar webhook-lagret medan du konfigurerar AI-beteendet.
Fler artiklar

Fortsätt läsa