Inhoudsopgave
De twee modellen
Mogelijkheden & kosten
Beslissen & bouwen
Vragen
Telegram Bot API vs Telegram API
Telegram Bot API vs Telegram API: Welke heb je nodig?
De Telegram Bot API en de Telegram API (ook de Telegram User API genoemd, gebouwd op MTProto) lossen verschillende problemen op. De ene runt een bot-account via HTTP. De andere runt een echt gebruikersaccount via een binair protocol dat je zelf implementeert. Deze handleiding legt per endpoint uit waar je vastloopt, en wat het daadwerkelijk kost om een Telegram User API-client te bouwen en te onderhouden versus het verbinden van een bestaand account via Unipile.
Geblokkeerd, de gebruiker heeft de bot nooit een bericht gestuurd
const res = wacht op bot.sendMessage(gebruikersId, "Hoi");
// -> 403 Verboden: bot is geblokkeerd door de gebruiker
of nooit een gesprek is begonnen
// Telegram User API via Unipile: werkt, het is een echt account
// POST /v2/:account_id/chats/send
const chat = wacht op eenpaal.chat.create({
account_id: telegramAccountId,
gebruiker_ids: [gebruikersnaam],
tekst: "Hoi"
});chat.status: "verzonden"
De twee modellen
Telegram Bot API vs Telegram User API, in één tabel
Als je al weet dat Telegram meerdere API's heeft en je wilt gewoon weten welke van toepassing is op jouw project, dan brengt deze tabel je daar in tien seconden. Als je nog steeds het volledige overzicht van alle drie de Telegram-API's nodig hebt, lees dan de starthandleiding Eerst en vooral gaan we een niveau dieper in op de twee waar mensen daadwerkelijk tegenen aan bouwen: de Bot API en de Telegram User API.
| Criteria | Telegram Bot API | Telegram Gebruikers-API (MTProto) |
|---|---|---|
| Wat het verbindt | Een botaccount, gemaakt en beheerd door je app | Een echt Telegram-gebruikersaccount, gekoppeld aan een telefoonnummer |
| Protocol | Standaard HTTP, JSON-verzoeken en -antwoorden | MTProto, een aangepast binair protocol dat u implementeert |
| Geloofsbrieven | Een bot-token uitgegeven door @BotFather | api_id + api_hash van my.telegram.org |
| Identiteit in chats | Toont een zichtbare "bot"-badge, onderscheidend van een persoon | Niet te onderscheiden van een persoon die de app gebruikt |
| Wie kan wie berichten | De bot kan pas reageren nadat een gebruiker de chat is gestart | Account kan iedereen een bericht sturen, net als elke Telegram-gebruiker |
| Typische implementatie | Elke HTTP-client, officiële en community SDK's | Telethon, Pyrogram, GramJS, TDLib of een gekoppeld account via Unipile |
| Kosten | Gratis te gebruiken | Gratis te gebruiken, alleen kosten voor eigen beheer van de infrastructuur |
Telegram Bot API
VerbindtEen botaccount
ProtocolHTTP, JSON
GeloofsbrievenBot-token (BotFather)
IdentiteitZichtbare bot-badge
Wie het kan berichtenAlleen gebruikers die als eerste een bericht hebben gestuurd
KostenGratis
Telegram Gebruikers-API (MTProto)
VerbindtEen echt gebruikersaccount
ProtocolMTProto, binair
Geloofsbrievenapi_id + api_hash
IdentiteitNiet te onderscheiden van een persoon
Wie het kan berichtenIedereen, zoals een normale gebruiker
KostenGratis, in eigen beheer, alleen kosten
De vraag die beslist
Aan wie wil je als eerste schrijven?
Elk ander verschil tussen de Telegram Bot API and de Telegram User API is ondergeschikt aan dit verschil. Beantwoord dit eerst en de rest van deze handleiding wordt een checklist, geen beslissing.
Een bot kan geen gesprek starten met een gebruiker die hem nog nooit een bericht heeft gestuurd
Dit is een Telegram-platformregel, geen Unipile-beperking of bibliotheekbug. Een botaccount kan alleen reageren in een chat die de gebruiker al heeft geopend, of nadat de gebruiker op een
Dit is een Telegram-platformregel, geen Unipile-beperking of bibliotheekbug. Een botaccount kan alleen reageren in een chat die de gebruiker al heeft geopend, of nadat de gebruiker op een
t.me een deep link of lid wordt van een groep waarin de bot zich bevindt. Als uw usecase vereist dat u iemand bereikt die nog niet met uw bot heeft geïnteractieerd, is de Bot API geen optie, ongeacht welk framework of welke bibliotheek daarbovenop staat. Bot-API werkt
De gebruiker praat eerst tegen uw bot
Ondersteuningsbots, op commando gestuurde tools, aanmeldingen voor meldingen, chatbots waarnaar vanuit uw product wordt gelinkt. De gebruiker vindt uw bot, start de chat en alles vanaf dat moment is een normale uitwisseling die de Bot API goed afhandelt. Bot-API geblokkeerd
Je moet eerst contact opnemen
Verkoopbenadering, werving, klantberichten gekoppeld aan een bestaande contactlijst, of elke workflow waarbij uw product contact legt met een Telegram-gebruiker. Hiervoor is een echt gebruikersaccount vereist, wat betekent de Telegram User API (MTProto), en niet de Bot API.Vaardighedenmatrix
Wat er daadwerkelijk werkt, endpoint per endpoint
Afgezien van het verschil in de kop, is dit waar elke optie je in de praktijk tegenhoudt. "Telegram User API (raw)" betekent een zelfgebouwde MTProto-client met een bibliotheek zoals Telethon, Pyrogram, GramJS of TDLib. "Unipile" betekent hetzelfde echte gebruikersaccount, verbonden zonder zelf MTProto-code te schrijven.
| Vermogen | Bot-API | Telegram-gebruikers-API (raw) | Eenpaal |
|---|---|---|---|
| Start een gesprek met een gebruiker die nog nooit een bericht heeft gestuurd | Geen | Ja, afhankelijk van de privacy-instellingen van de gebruiker | Ja, dezelfde regel als elk ander Telegram-account |
| Tekstberichten verzenden en ontvangen | Ja, in chats waar de bot deel van uitmaakt | Ja | Ja |
| Berichtgeschiedenis lezen van voordat de bot is toegevoegd | Geen | Ja | Ja |
| Groepsdeelnemerslijst, toevoegen, verwijderen | Beperkt tot de eigen rechten van de bot | Ja, als je het bouwt | Ja, getParticipantsList, addParticipant, removeParticipant |
| Groepsbeheer: goedkeuren, bevorderen, intrekken | Ja, alleen als de bot een beheerder is | Ja, als je het bouwt | Niet ondersteund |
| Kanalen, communities, uitzendingen | Ja, indien toegevoegd als beheerder | Ja | Niet ondersteund |
| Geheime chats | Niet van toepassing | Ja, als je het bouwt | Niet ondersteund |
| Contact, locatie, peiling, evenementbijlagen | Ja | Ja | Niet ondersteund |
| Spraak- en videogesprekken | Geen | Mogelijk, hoge implementatie-inspanning | Niet ondersteund |
| Chatthema, archiveren, chat verwijderen | Niet van toepassing | Ja, als je het bouwt | Niet ondersteund |
| Account-identiteit | Aparte bot-identiteit, zichtbare badge | Echte gebruikersidentiteit, gekoppeld aan telefoonnummer | Echte gebruikersidentiteit, uw bestaande account |
| Sessie- en apparaatbeheer | Op tokens gebaseerd, geen apparaatconcept | Je beheert de MTProto-autorisatiesleutel en 2FA zelf | Beheerd via de functie Apparaten van Telegram |
Start een chat koud
Bot-APIGeen
Gebruikers-API (ruw)Ja, privacygevoelig
EenpaalJa
Berichtgeschiedenis van voor het deelnemen
Bot-APIGeen
Gebruikers-API (ruw)Ja
EenpaalJa
Groepsdeelnemers (ophalen / toevoegen / verwijderen)
Bot-APIBeperkt tot botrechten
Gebruikers-API (ruw)Ja, zelfgebouwd
EenpaalJa, toegewijde eindpunten
Groepsbeheer
Bot-APIJa, als admin bot
Gebruikers-API (ruw)Ja, zelfgebouwd
EenpaalNiet ondersteund
Kanalen, communities, uitzendingen
Bot-APIJa, als beheerder
Gebruikers-API (ruw)Ja
EenpaalNiet ondersteund
Geheime chats
Bot-APINiet van toepassing
Gebruikers-API (ruw)Ja, zelfgebouwd
EenpaalNiet ondersteund
Contact / locatie / peiling / evenement bijlagen
Bot-APIJa
Gebruikers-API (ruw)Ja
EenpaalNiet ondersteund
Spraak- en videogesprekken
Bot-APIGeen
Gebruikers-API (ruw)Mogelijk, grote inspanning
EenpaalNiet ondersteund
Sessie- / apparaatbeheer
Bot-APIOp tokens gebaseerd
Gebruikers-API (ruw)Zelfbeheerde authenticatiesleutel + 2FA
EenpaalDe eigen Apparaten-functie van Telegram
Wat Unipile niet dekt op Telegram
Kanalen, communities en uitzendingen, chatthema, geheime chats, contactpersoon, locatie-, poll- en evenementbijlagen, groepsbeheer (goedkeuren, promoveren, intrekken), chatverwijdering, archivering en spraak- of videogesprekken. Als je project een van deze vereist, dekt alleen een zelfgebouwd Telegram User API-client het volledige oppervlak.
Kanalen, communities en uitzendingen, chatthema, geheime chats, contactpersoon, locatie-, poll- en evenementbijlagen, groepsbeheer (goedkeuren, promoveren, intrekken), chatverwijdering, archivering en spraak- of videogesprekken. Als je project een van deze vereist, dekt alleen een zelfgebouwd Telegram User API-client het volledige oppervlak.
De werkelijke kosten
De werkelijke kosten van het bouwen op MTProto
De Telegram User API is gratis, maar "gratis" dekt alleen de licentie. Het zelf bouwen en onderhouden van een Telegram User API-client brengt reële engineeringkosten met zich mee die een Bot API-integratie nooit heeft. Dit is hoe die kosten er in de praktijk uitzien.
01
Sessie- en auth-sleutelbeheer
MTProto is een binair protocol, geen REST. Je implementeert zelf het TL-schema, de auth key-uitwisseling en slaat de resulterende sessie op. Raak je de sessie kwijt, dan moet de gebruiker zich opnieuw authenticeren vanaf nul. 02
Twee-factorauthenticatie
Accounts met een cloudwachtwoord vereisen het afhandelen van Telegram's op SRP gebaseerde 2FA-proces tijdens het inloggen. Het is nog een toestandsmachine die gebouwd, getest en werkend moet worden gehouden bij elke update van het Telegram-protocol. 03
Eén api_id per telefoonnummer
api_id en api_hash worden uitgegeven op my.telegram.org onder "API-ontwikkelingstools" en vereisen een actief Telegram-account. Telegram staat een enkele api_id per telefoonnummer, wat vorm geeft aan hoe u test- en productiegegevens verstrekt. 04
Accounts onder automatische observatie
Unofficiële clients worden door Telegram onder automatische observatie geplaatst. Flooding, spam en het kunstmatig opblazen van tellers kunnen een permanente ban veroorzaken, wat betekent dat rate-limiting en warm-up jouw verantwoordelijkheid zijn, en niet een standaardinstelling van de bibliotheek.// Het kopiëren en plakken van een voorbeeld api_id van een open source repository
// in plaats van je eigen te registreren op my.telegram.org
Fout: API_ID_PUBLISHED_FLOOD
// Telegram markeert api_id-waarden die in publieke code zijn gepubliceerd.
Elke applicatie die je verzendt heeft zijn eigen api_id / api_hash nodig,
// één per telefoonnummer, anders krijgen uw eindgebruikers deze foutmelding.De derde weg
Koppel een bestaand account, sla de MTProto-build over
De meeste teams willen eigenlijk geen Telegram-client bouwen. Ze willen de functionaliteiten van een echt gebruikersaccount: gesprekken starten, de volledige geschiedenis lezen, groepsdeelnemers beheren, zonder zelf een implementatie van een binair protocol te hoeven bezitten. Dat is wat Unipile's Telegram API is voor.
Maak verbinding via de functie Apparaten van Telegram
Unipile koppelt een bestaand Telegram-gebruikersaccount via de Apparaten-functie van Telegram, hetzelfde mechanisme waarmee u kunt inloggen op Telegram Desktop of Telegram Web. Inloggen gebeurt via een QR-code of via Hosted Auth met
Unipile koppelt een bestaand Telegram-gebruikersaccount via de Apparaten-functie van Telegram, hetzelfde mechanisme waarmee u kunt inloggen op Telegram Desktop of Telegram Web. Inloggen gebeurt via een QR-code of via Hosted Auth met
providers: "TELEGRAM" voor een drop-in verbindingsproces. Geen api_id, geen api_hash, geen MTProto om te schrijven
Je handelt de auth-sleuteluitwisseling, het TL-schema of 2FA nooit zelf af. Het gekoppelde account gedraagt zich als een echte Telegram-gebruiker omdat het er een is, geen bot en geen gesimuleerde client.
Je handelt de auth-sleuteluitwisseling, het TL-schema of 2FA nooit zelf af. Het gekoppelde account gedraagt zich als een echte Telegram-gebruiker omdat het er een is, geen bot en geen gesimuleerde client.
Groepsdeelnemers, via toegewijde eindpunten
deelnemerslijstOphalen, deelnemerToevoegen, deelnemerVerwijderen, blootgesteld via POST, GETen VERWIJDEREN /v2/{account_id}/chats/{chat_id}/participants. Geen aangepaste MTProto-aanroepen om te schrijven voor basisbeheer van lidmaatschap. Sessiestatus gekoppeld aan de lijst met apparaten van Telegram
Als het Unipile-apparaat wordt verwijderd uit de actieve sessies van het account in Telegram, verandert de accountstatus in
Als het Unipile-apparaat wordt verwijderd uit de actieve sessies van het account in Telegram, verandert de accountstatus in
verbroken. De sessielevenscyclus is zichtbaar en voorspelbaar, geen zwarte doos die je in je eentje debugt. // Verbind een bestaand Telegram-gebruikersaccount
// via Hosted Auth, geen MTProto-code vereist
const link = wacht op eenpaal.gehosteAuthenticatie.create({
aanbieders ["TELEGRAM"],
verlooptOp: "2026-12-31T23:59:59.000Z"
});
// De gebruiker scant de QR-code met de Telegram-app
// Accountstatus wordt "verbonden"
// GET /v2/{account_id}/chats/{chat_id}/participants
const leden = wacht op eenpaal.chat.deelnemerslijstOphalen(chatId);account.status: "verbonden"
Dezelfde regels, geen uitzonderingen daarop
Een gekoppeld account is nog steeds een Telegram-account en volgt de eigen limieten van Telegram: vermijd gloednieuwe accounts voor intensief gebruik, voer het volume geleidelijk op en houd minimaal 10 tot 20 seconds aan tussen berichten. Zie de Telegram API-gids en de verstuur bericht handleiding voor de volledige set-up.
Een gekoppeld account is nog steeds een Telegram-account en volgt de eigen limieten van Telegram: vermijd gloednieuwe accounts voor intensief gebruik, voer het volume geleidelijk op en houd minimaal 10 tot 20 seconds aan tussen berichten. Zie de Telegram API-gids en de verstuur bericht handleiding voor de volledige set-up.
Beslissingsboom
Welke is de juiste voor jouw situatie
Drie vragen, in volgorde. Stop bij de eerste die overeenkomt met uw project.
1
Neemt de gebruiker altijd als eerste contact met u op, en hoeft de bot alleen te reageren op commando's en berichten?
->Ondersteuningsbots, opt-in meldingen, opdrachttools waarbij de gebruiker het contact initieert.Bot-API
2
Moet je eerst contact opnemen en heb je ook kanalen, geheime chats, groepsbeheer of oproepen nodig?
->Volledige platformdekking, en je bent bereid om je eigen MTProto-client te bouwen en te onderhouden met Telethon, Pyrogram, GramJS of TDLib.Telegram User-API, zelfgebouwd
3
Moet je eerst contact opnemen, je voordoen als een echt account en in beweging komen zonder MTProto te bezitten?
->Berichten, chatgeschiedenis en groepsdeelnemersbeheer op een gekoppeld gebruikersaccount, waarbij de sessie voor je wordt afgehandeld.Eenpaal
De meeste teams belanden hier
Koppel een echt Telegram-account zonder een client te bouwen
Als je project als eerste contact moet leggen, maar geen kanalen, geheime chats of oproepen nodig heeft, brengt een gekoppeld account via Unipile je daarheen zonder dat je een Telegram User API-implementatie hoeft te onderhouden.
Bouw het met Unipile Koppel een echt Telegram-account zonder een client te bouwen
Als je project als eerste contact moet leggen, maar geen kanalen, geheime chats of oproepen nodig heeft, brengt een gekoppeld account via Unipile je daarheen zonder dat je een Telegram User API-implementatie hoeft te onderhouden.
Telegram Bot API vs Telegram API - Veelgestelde vragen
Veelgestelde vragen over het kiezen tussen de Telegram Bot API en de Telegram User API (MTProto).
De Bot API is een HTTP-interface die een botaccount aanstuurt en een bewust beperkt bereik biedt. De Telegram API, ook wel de Client API genoemd, spreekt het binaire MTProto-protocol en stuurt een echt gebruikersaccount aan met de volledige functionaliteit. Het zijn verschillende accounttypen, geen twee versies van hetzelfde.
Vraag aan wie je moet schrijven. Als je gebruikers je als eerste berichten en een botidentiteit acceptabel is, gebruik dan de Bot API. Als je mensen wilt bereiken die geen contact met je hebben opgenomen, of als een echt persoon wilt optreden, heb je toegang tot een gebruikersaccount nodig.
Nee. De gebruiker moet het gesprek als eerste starten. Dit is de enige beperking die de meeste producten van de Bot API afduwt, en geen enkel eindpunt omzeilt dit.
Nee. De Bot API heeft alleen de bot-token nodig die je van BotFather krijgt. api_id en api_hash komen van my.telegram.org en zijn voor de Client API, waarbij één api_id is toegestaan per telefoonnummer.
Moeilijk genoeg dat bijna niemand het vanaf de grond af aan schrijft. Je behandelt sessiepersistentie, tweefactorauthenticatie, herverbinding en een binair protocol. De meeste teams gebruiken Telethon, Pyrogram, GramJS of TDLib, en beheren nog steeds zelf de sessielevenscyclus.
Het is een andere naam voor de Client API, de MTProto-interface die zich verifieert als een echte Telegram-gebruiker in plaats van een bot.
Ja. Het koppelen van een bestaand account via de Apparaten-functie van Telegram biedt toegang tot het gebruikersaccount zonder MTProto te implementeren. Dat is hoe Unipile Telegram-accounts koppelt, via een QR-code-inlogproces of een gehoste authenticatiestroom.
Heb je nog vragen? Ons team staat klaar om te helpen.