Kuidas Telegrami botti majutada
Sellel lehel
Telegrami bot vastab ainult siis, kui selle kood töötab. Kui ehitad selle oma sülearvutis, jääb see vait hetkel, mil sülearvuti magama läheb — nii et varem või hiljem vajab iga bot kodu, mis on alati sees.
See juhend katab kogu tee: boti loomine BotFatheriga, valik pollingu ja webhookide vahel, töötav näide Pythonis ja JavaScriptis, Telegrami seatud piirangud ja reeglid ning kuidas hoida botti võrgus 24/7.
1. samm: loo bot BotFatheriga
- Ava Telegramis @BotFather ja saada
/newbot. - Anna botile kuvatav nimi ja seejärel kasutajanimi: 5 kuni 32 märki, ladina tähed, numbrid ja alakriipsud, lõpuga
bot— näiteksmy_shop_helper_bot. - BotFather vastab tokeniga, mis näeb välja nagu
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Igaüks, kellel see on, juhib sinu botti, seega hoia seda koodist eemal ja ära seda kunagi jaga. Kui see lekib, saada BotFatherile/token, et saada uus.
Veel kaks BotFatheri käsku, mida tasub teada: /setcommands lisab käskude loendi, mida kasutajad näevad / trükkimisel, ja /setprivacy määrab, mida bot gruppides näeb. Vaikimisi on privaatsusrežiim sees, nii et grupis saab bot ainult talle mõeldud käske ja vastuseid oma sõnumitele — kui sa ei tee teda administraatoriks.
Polling või webhookid?
Bot saab oma sõnumid Telegramilt ühel kahest viisist — mitte kunagi mõlemal korraga:
| Long polling | Webhook | |
|---|---|---|
| Kuidas see töötab | Bot küsib ühe avatud ühenduse kaudu Telegramilt pidevalt uusi sõnumeid | Telegram saadab iga uuenduse sinu HTTPS-aadressile |
| Vajab | Ainult väljuvat internetiühendust | Domeeni, kehtivat sertifikaati ja porti 443, 80, 88 või 8443 |
| Sobib kõige paremini | Peaaegu igale botile ja seda on kõige lihtsam majutada | Väga koormatud bottidele või serverless-platvormidele |
Alusta pollinguga. See ei vaja domeeni, sertifikaati ega avatud porti ning iga teek toetab seda. Kui tokenile on kunagi webhook seatud, kutsu esmalt välja deleteWebhook — polling ei tööta, kuni webhook on aktiivne.
Pollingut kasutavad botid töötavad HytHosti botimajutuses ilma domeeni või avatud porti seadistamata — Python või Node.js alates €0.89/kuu.
Vaata botimajutuse pakette2a. samm: bot Pythonis (python-telegram-bot)
python-telegram-bot 22 vajab Python 3.10 või uuemat. Paigalda see käsuga pip install python-telegram-bot ja loo bot.py:
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Hi! Send me a message and I will echo it.")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(update.message.text)
def main() -> None:
application = Application.builder().token(os.environ["TELEGRAM_TOKEN"]).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()
Teine populaarne valik Pythonis on aiogram 3, samuti Python 3.10 või uuema jaoks.
2b. samm: bot JavaScriptis (grammY)
grammY on aktiivselt hooldatav Telegrami raamistik Node.js jaoks. Käivita npm install grammy ja loo bot.js:
const { Bot } = require("grammy");
const bot = new Bot(process.env.TELEGRAM_TOKEN);
bot.command("start", (ctx) => ctx.reply("Welcome! Up and running."));
bot.on("message:text", (ctx) => ctx.reply(ctx.message.text));
process.once("SIGINT", () => bot.stop());
process.once("SIGTERM", () => bot.stop());
bot.start();
Vanemad juhendid kasutavad Telegrafi, millest pole alates 2024. aasta veebruarist uut versiooni ilmunud; uue boti jaoks on grammY kindlam valik.
Telegrami piirangud ja reeglid bottidele
Piirangud Telegrami boti-KKK põhjal:
- Umbes üks sõnum sekundis ühes vestluses, 20 sõnumit minutis grupis ja kokku umbes 30 sõnumit sekundis.
- Failid: bot saab saata kuni 50 MB ja alla laadida kuni 20 MB.
- Korraga tohib pollingut teha ainult üks boti koopia. Teine saab vea Conflict: terminated by other getUpdates request — kasuta testimiseks eraldi tokenit.
Reeglid: Telegrami tingimused botiarendajatele keelavad rämpsposti ja soovimatud sõnumid ning kiiruspiirangutest möödahiilimise. Botil peab olema privaatsuspoliitika (kui sa oma ei kirjuta, kehtib Telegrami standardpoliitika) ja see peab kasutaja soovil tema andmed kustutama. Isikliku konto automatiseerimine boti asemel — nn userbot — on hoopis midagi muud ja Telegram blokeerib kontod, mida kasutatakse üleujutamiseks või rämpspostiks.
Telegrami boti majutus HytHostis
Meie botimajutuse paketid käitavad nii Telegrami kui ka Discordi botte:
- Vali pakett ja runtime — Python python-telegram-boti või aiogrami jaoks, Node.js grammY jaoks. Vali vahekaardil Startup Python 3.10 või uuem või praegune Node.js.
- Laadi oma kood üles failihalduri või SFTP kaudu koos failiga
requirements.txtvõipackage.json. - Pane token faili
.envvõi keskkonnamuutujasse, mitte koodi. - Käivita see. Pollinguga ei vaja bot domeeni ega avatud porti; kui see kokku jookseb, taaskäivitab paneel selle.
Mida meie reeglid lubavad: ametlikule Bot API-le ehitatud botid BotFatheri tokeniga. Keelatud: userbotid, mis automatiseerivad isiklikku kontot, soovimatud massisõnumid, kasutajate või gruppide andmete kraapimine ning botid, mis laadivad alla ja levitavad meediat ilma selle õigusteta. Bot, mis neid reegleid rikub, peatatakse.
Paketid sisaldavad MySQL-andmebaasi ja varukoopiaid. Teed ka Discordi botti? Vaata juhendit kuidas teha Discordi botti.
Hoia oma Telegrami botti võrgus 24/7 ilma oma arvutita: Pythoni või Node.js botimajutus alates €0.89/kuu, taaskäivitused hinnas.
Vaata botimajutuse paketteKorduma kippuvad küsimused
Saad seda tasuta oma arvutis käitada, kuid see läheb võrgust välja iga kord, kui arvuti magama läheb või taaskäivitub. Tasuta pilvepaketid peatavad sageli jõudeolevad rakendused või piiravad nende kasutust. Võrgus püsiva boti jaoks on väike tasuline majutus usaldusväärne valik.
Polling peaaegu igale botile: see ei vaja domeeni, sertifikaati ega avatud porti. Webhookid sobivad väga koormatud bottidele või serverless-platvormidele ja vajavad HTTPS-i pordil 443, 80, 88 või 8443. Üks token ei saa kasutada mõlemat korraga.
Saada @BotFatherile /token ja vali bot, et saada uus token, seejärel uuenda seda kõikjal, kus bot töötab. Hoia tokenit keskkonnamuutujas või .env-failis, mitte kunagi koodis, mida jagad.
Kaks boti koopiat teevad sama tokeniga pollingut, näiteks üks sinu arvutis ja teine serveris. Peata üks neist ja kasuta testimiseks eraldi botti ja tokenit.
Väga vähe. Tüüpiline Pythoni või Node.js bot, mis vastab käskudele, töötab tavaliselt hästi 512 MB peal; botid, mis töötlevad pilte või hoiavad mälus suuri andmemahte, vajavad rohkem.
Sinu Telegrami bot, võrgus 24/7
HytHosti botimajutus käitab sinu Pythoni või Node.js Telegrami botti automaatsete taaskäivituste, MySQL-andmebaasi ja varukoopiatega — alates €0.89/kuu.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursKas see juhend oli abiks?