Egy bot a telegramra a pythonról az első sorból a herokushoz

Egy bot a telegramra a pythonról az első sorból a herokushoz

Ebben a leírásban leírjuk a Python-nál egy egyszerű Telegram botot, és elindítjuk a Heroku szerveren. De először derítsük ki, miért van szükségünk botokra és miért kell írnunk a sajátját.

belépés

Itt van a bot nélküli szabványos algoritmus:

Igen, sokan használják ezt. A bot azonban lehetővé teszi a következő lépéseket:

Kényelmes, nem igaz? És ez csak egy lehetőség.

A távirat lehetővé teszi a felhasználók számára saját botok létrehozását. Válaszoljuk a kérdést: "Miért írhatom a sajátat?" - ez talán a legegyszerűbb módja annak, hogy megértsük, mi az API.

Hűvös, írj botot?

Mindenről rendben. Először regisztrálnia kell a Telegrammal. A webkliens legmegfelelőbb módja annak, hogy megismerkedjen a botok és az API alapelveivel.

Nyissa meg az alkalmazást, keresse meg a @BotFather alkalmazást és indítsa el a beszélgetést. Küldje el a / newbot parancsot, és kövesse az utasításokat. Miután befejezte az első lépéseket, megkapja a következőket:

Valójában ez minden. Ebben a szakaszban a bot teljesen passzív.

Beszélgetni kell a bottal. Írja be a nevét a keresőmezőbe, és kattintson a / start gombra. Küldjön üzenetet, például: "Hello". Ez az első üzenet nagyon fontos, mivel ez lesz az első frissítés, amit a botod fog kapni.

Ha először dolgozol az API-val, akkor a böngésző segít. Nyisson meg egy új lapot, és használja a Telegram API-t a linket követve:

Próbálj meg válaszolni a botodról, ha a chat_id értékben a hívás / getUpdates után kapott értéket helyettesíti (a példánkban - 303262877). Az üzenet szövege bármi lehet. A kérelemnek így kell lennie:

És mikor lesz a kód?

Ha Windows-ot használ, és nincs telepítve a Python, letöltheti a hivatalos webhelyről. A verzió általában nem fontos, de ez a cikk Python 3.x-et fog használni. Ha Linux vagy MacOS van, akkor mindkét verzió (vagy legalább Python 2.x) már telepítve van.

Akkor pipát kell telepítenie. A Python 2.7.9 és Python 3.4 verziókban, valamint a macOS / Linux verziókban már létezik. Ezt ellenőrizheti a pip -version parancs a terminálon. Ha valamilyen oknál fogva nem áll rendelkezésre, akkor a parancs segítségével telepítheti azt:

A fogás az, hogy a Python különböző verziói eltérő pipet használnak. Ha van MacOS, akkor próbálja meg követni a tippeket a Stack túlcsordulással. A Windows esetében letölteni kell a get-pip.py fájlt. nyissa meg a parancssort, lépjen be a letöltött fájlhoz tartozó könyvtárba, és futtassa a parancsot:

A legnehezebb dolog mögött. Telepítse a kérés csomagot pipal:

És most - a kódot

Most, hogy megértette, mi van az API-val és telepítette az összes szükséges eszközt, írunk egy parancsfájlt, amely ellenőrzi a frissítéseket és válaszol az új üzenetekre.

Először a botnak ellenőriznie kell a frissítéseket. Az első üzenet legfrissebbnek tekinthető, de a getUpdates az összes frissítést visszaadja az elmúlt 24 órában. Írjunk egy kis szkriptet, hogy megkapjuk a legújabb frissítést:

A frissítési szótár két elemből áll: ok és eredmények. Érdeklődünk a második rész - a bot által az elmúlt 24 órában beérkezett összes frissítés listája.

A dokumentáció olvasásával többet megtudhat a kérések könyvtáráról. Valójában minden alkalommal, amikor a kiszolgálón tárolt információkat be kell fogadni, frissíteni vagy törölni kell, kérelmet küld, és választ kap.

Most még 2 további funkciót kell hozzáadnia. Az első megkapja a chat_id-et a frissítésből, és a második elküldi az üzenetet.

Ne feledje, hogyan kombináltuk a paramétereket. és . Ezt ugyanúgy teheti meg, ha a kérés csomagban a get / post funkciók második kiegészítő paraméterét hozzáadja a szótárhoz.

A szkript készen áll, de ez nem tökéletes. A fő hátrány az, hogy minden alkalommal, amikor azt akarjuk, hogy a bot küldjön üzenetet, futtatni kell. Javítsuk meg ezt. Annak érdekében, hogy a bot meghallgassa a szervert és frissítéseket fogadhasson, futtatni kell a fő hurokot. Új soron, importkérések után. add az idő import alvásból. Ezután cserélje ki az utolsó két sort a következő kóddal:

Bár 1 másodperces időkorlátot adtunk hozzá, a fenti példa csak képzési célokra használható, mert gyakori lekérdezést használ. Ez rossz hatással van a Telegram szerverekre, így kerülni kell őket. Két másik módja van a frissítések frissítéséhez az API-n keresztül - hosszú lekérdezések és webes fülek segítségével. Ha a getUpdates paranccsal történő frissítés módszerét használjuk paraméterek nélkül, akkor a lekérdezések túl gyakran fordulnak elő.

Most a botnak jól kell működnie, de még javítható. Letesszük az összes funkciót egy osztályban. Úgy néz ki, mint ez:

Az utolsó érintés - kijelentjük a változókat és megtanítjuk a botot tisztességes módon. Tegye úgy, hogy a bot naponta egyszer üdvözölje, és a kifejezésnek a napszaktól kell függenie. Ehhez a következő kódot kell hozzáadnia a szkripthez:

Most javíthatja a botot ahogy szeretné. Megadhatja például a médiafájlok küldését vagy a saját gombjainak hozzáadását.

Állítson be egy demót

A végső lépés a bot telepítése a kiszolgálón. Bizonyára nincs meg, és nem akarsz vásárolni - de ez nem feltétlenül szükséges. Most sok ingyenes felhő megoldás van, amiből kiválasztjuk a Heroku-t.

MacOS és Windows rendszereken manuálisan kell letölteni és telepítenie. És ne felejts el regisztrálni a Heroku-ra.

Most meg kell tisztítanod a fájlokat. Hozzon létre egy új mappát, és menjen hozzá a terminál vagy a parancssorba. Inicializálása virtuálisval:

A név nem számít, de a legjobb, ha intuitív. Menj a my_env mappába.

Most meg kell hajlítani a git adattárat. Írja be a következő parancsot:

Helyezze a szkriptet a git clone parancs futtatásához kapott mappába.

Visszatérés a my_env mappába és indítása virtualenv:

Ha sikeresen elindította a virtualenv-et. a parancssori promptnak meg kell kezdődnie (my_env).

Menjen a repository mappába, és telepítse újra a request modult:

Most létrehoznia kell a Heroku függőség listáját. Könnyű. írja:

Hozzon létre egy Procfile-t. Ebben a fájlban meg kell adni az utasításokat a szkripthez való munkához. A fájlnév Proxynak kell lennie (Procfile.windows a Windows esetében). Nincs más kiterjesztés. A fájl tartalmának így kell lennie (cserélje ki a my_bot-ot a szkript nevével):

Adja hozzá a __init__.py fájlt a mappához. Lehet üres, de ott kell lennie.

Küldje el a követelést az adattár módosításaival:

Most telepítsd a botot a Heroku-ra. Használhatja a vezérlőpultot is a webhelyen, de mindent megteszünk a konzolon keresztül. Ha problémákat tapasztal, olvassa el ezt a kézikönyvet.

Csak azokat a műveleteket vegye figyelembe, amelyek szükségesek az alkalmazás telepítéséhez. MacOS vagy Windows operációs rendszert használva telepítse a parancssori felületet a kézikönyv követésével.

Ha Ubuntust használja, használja a következő parancsokat:

Ha hibák jelentkeznek, ellenőrizze, hogy vannak-e az összes függőség.

Most futtassa a következő parancsokat:

Mostantól az alkalmazásnak a Heroku kiszolgálón kell futnia. Ha valami elromlik, ellenőrizze a naplókat az alábbiak szerint:

Kapcsolódó cikkek