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: