Spring til indhold

Løsninger · Bots

En VPS til en Telegram-bot

En bot bruger under hundrede megabyte i tomgang og tilbringer sit liv med at vente, så maskinen er næsten aldrig begrænsningen: U1-1 til $6.90 om måneden kører en ordentligt. Det, der reelt afgør din regning, er medier, og om du kører din egen Bot API-server. Begge dele er regnestykker, og begge står nedenfor.

Beslutningen bag beslutningen

Webhook eller long polling

Dette, ikke planen, afgør, om din bot har brug for et domæne, et certifikat og en åben port.

Long polling

Din bot forbinder udad til Telegram og venter på opdateringer. Intet domæne, intet TLS-certifikat, ingen port åben mod internettet, og det virker bag NAT. Det er den hurtigste måde at få noget op at køre på, og det er en udmærket permanent løsning for de fleste bots.

Webhook

Telegram forbinder sig til dig. Kræver en offentlig adresse, et gyldigt certifikat og en åben port (det kan alle planer her), og til gengæld er der ingen polling-løkke, og den skalerer bedre under reel belastning. Skift, når belastning eller latens tilsiger det, ikke før.

Regnestykket

Hvor mange bots en plan reelt kan rumme

Bots = (RAM − 300 MB operativsystem) ÷ hvad én bot bruger. De to kolonner er en tilstandsløs kommandobot og en med ORM, scheduler og cache.

Kapacitet til botprocesser og månedlig trafikkvote for hver plan, med aktuelle priser
PlanRAMLette botsTunge botsTrafikPrisUdrul
U1-1Én bot, publikum af enhver størrelse1 GB124Unmetered$6.90Udrul
C1-1-25Én bot, med trafikmåling men billig1 GB1241 TB$9.90Udrul
GL2-4Flere bots, eller en bot med database4 GB6325Unmetered$11.90Udrul
BD-8En selvhostet Bot API-server8 GB1315232 TB$12.90Udrul

Antallet af brugere, din bot har, indgår ikke i regnestykket, fordi det ikke er en del af problemet: Telegram giver din proces opdateringer én ad gangen i stedet for at åbne en forbindelse pr. bruger. Det, der ændrer svaret, er tilstand, du selv holder: en stor cache, en database i processen, en model.

Tallet, der afgør regningen

Medier, ikke hukommelse

Gennemsnitlig filstørrelse × beskeder pr. dag × 30. Begge retninger tæller: en modtaget fil er også trafik.

Månedlig trafik efter beskedtype ved hundrede, fem tusind og halvtreds tusind beskeder om dagen
Hvad botten flytter100/dag5,000/dag50,000/dag
Kun tekstEn kommando og et svar. Reelt gratis.< 1 GB< 1 GB3 GB
FotosEt komprimeret billede, sendt og modtaget.< 1 GB44 GB439 GB
Talebeskeder og korte videoerDen typiske belastning for en community-bot.9 GB439 GB4.3 TB
Dokumenter og lange videoerTelegrams egen downloadgrænse for en almindelig bot.59 GB2.9 TB28.6 TB

Den ene ting, der ændrer maskinen

En bot på det offentlige Bot API kan downloade filer på op til 20 MB og uploade op til 50 MB (Telegrams grænser, ikke vores), og filerne rører aldrig din disk. Kører du din egen Bot API-server, bliver loftet 2 GB, og hver fil lander på din server. Det er dér, disk og trafik holder op med at være bagateller: BD-8 giver dig 100 GB SSD og 32 TB for $12.90, hvilket er den profil, der passer. Gør du ikke det, så betal ikke for det.

Helt ærligt

Det, vi selv ville købe

Vi kører selv en Telegram-bot. Dette er den maskine, vi ville sætte den på.

Til én bot

U1-1 · $6.90/md.

1 kerne, 1 GB, 15 GB SSD og ingen trafikmåler, så en bot, der uventet begynder at flytte medier, ikke kan give dig en uventet regning. Kør botten under systemd med Restart=always, så er den eneste tilbageværende måde, den kan gå ned på, din egen kode. Vokser du ud af den, består flytning af en bot i at kopiere en mappe og et token.

Spørgsmål

Hvad folk spørger om, før de køber.

Hvor meget RAM har en Telegram-bot brug for?
Langt mindre, end der normalt sælges. En bot er en langlivet proces, der bruger næsten al sin tid på at vente: en tilstandsløs kommandobot ligger omkring 60 MB, og en med ORM, scheduler og cache er nærmere 150 MB. Når operativsystemet har taget sine cirka 300 MB, har en maskine med 1 GB stadig plads til 4 tunge bots eller 12 lette. Antallet af BRUGERE spiller næsten ingen rolle, fordi Telegram leverer opdateringer én ad gangen til din proces, ikke en forbindelse pr. bruger. Det, der ændrer svaret, er tilstand, du selv holder i hukommelsen: en stor cache, en database i processen, en model.
Webhook eller long polling?
Long polling til at starte med, webhooks når det betyder noget. Med long polling åbner din bot en udgående forbindelse til Telegram og venter: den kræver hverken domæne, certifikat eller åben port, så den virker bag NAT og er den hurtigste måde at få noget op at køre på. Med en webhook forbinder Telegram sig til DIG, så den kræver en offentlig adresse, et gyldigt TLS-certifikat og en port åben mod internettet, og til gengæld fjerner den polling-løkken helt og skalerer bedre, når botten virkelig har travlt. Begge kører fint på den mindste maskine her. Den ærlige grund til at skifte er belastning eller latens, ikke mode.
Hvad er grænserne for filstørrelse?
Telegrams egne grænser, ikke vores: en bot, der bruger den offentlige Bot API, kan downloade filer på op til 20 MB og uploade op til 50 MB. Kører du din egen Bot API-server, løftes grænsen til 2 GB, og vigtigere: filerne havner på din servers disk i stedet for at passere gennem Telegrams. Det er den ene ændring, der reelt ændrer, hvilken maskine du har brug for. Pludselig betyder disk og trafik noget, og derfor sætter tabellen ovenfor BD-8 ud for den række og ikke ud for de andre.
Løber jeg tør for båndbredde?
En tekstbot, aldrig. En mediebot, muligvis, og det er værd at bruge tredive sekunder på regnestykket: gennemsnitlig filstørrelse × beskeder pr. dag × 30. Halvtreds tusind talebeskeder om dagen à 3 MB er omkring 4.3 TB om måneden, hvilket overstiger kvoten på de fleste billige planer og er langt fra de 32 TB på BD-8, eller linjen uden trafikmåling, hvor spørgsmålet slet ikke opstår. Begge retninger tæller: en fil, som din bot modtager, og en fil, den sender, er begge trafik.
Hvordan holder jeg botten kørende, når jeg lukker terminalen?
En systemd-unit, ikke en screen-session. Skriv en lille servicefil med Restart=always, aktivér den, og botten kommer igen efter et nedbrud og efter en genstart, uden at du skal være vågen. Det er den hyppigste enkeltårsag til, at en bot "går ned" på en VPS, og det er ikke et hostingproblem: en proces, der er startet manuelt, dør med den SSH-session, der startede den. Docker med en restart-politik gør det samme, hvis du hellere vil pakke det sådan.
Kan jeg køre flere bots på én server?
Ja, og det bør de fleste. Hver er en separat proces med sin egen systemd-unit og sit eget token; de deler maskinen, databasen hvis du vil, og intet andet. Regnestykket i tabellen er præcis dette spørgsmål: en maskine med 4 GB rummer 25 tunge bots, før hukommelsen bliver begrænsningen. Hold dem på separate porte og separate brugere, hvis de er til forskellige personer.
Hvilken region skal botten køre i?
Hvor som helst dine brugere kan nå, og hvor din latens til Telegram er rimelig: botten taler med Telegrams infrastruktur, ikke direkte med dine brugere, så den sædvanlige regel om "tæt på dit publikum" betyder mindre her end for et website. Hvis botten også leverer et webdashboard eller et API til de samme brugere, så vælg regionen ud fra det i stedet. Er du i tvivl, så udrul pr. time i to regioner, mål, og slet den, der taber: $0.0113 i timen gør det til et billigt eksperiment.