Hogyan írjunk egy táviratot bot gyakorlati útmutató

Ebben a cikkben adok egy példát írásban online bot segítségével Python és a Django keretrendszer. Azaz, mi „mosott le” egy teljes értékű web-alapú alkalmazás, amely forog a távoli gépen, és parancsokat fogadni a felhasználóktól. Minden forráskód elérhető a GitHub én tárolóból.
Leíró dokumentáció a folyamat kölcsönhatás botoktól távirat van. Annak érdekében, hogy ne újra feltalálni a kereket, találtam egy jó Python könyvtár, amely megvalósítja az összes alapvető funkciót botok - telepot. Amint azt korábban említettük, annak érdekében, hogy szolgálja a felhasználók számára a robot, akkor dolgozzon ki egy webes alkalmazás segítségével a Django keretrendszer.
Hogyan hozzunk létre egy bot távirat?
Kezdeni, meg kell regisztrálni a jövőnkbe távirat bot. Ez úgy történik, az alábbiak szerint:

- A mi bot, én választottam a nevet PythonPlanetBot, mivel a fő funkció elemzés RSS feed Mezei Python Planet és a szállítási információt a legújabb üzenetét :)

Miután létrehozott egy bot, keresse meg a sort a szövegben:
Használja ezt a jelzőt, hogy hozzáférjen a HTTP API:
Majd a az úgynevezett token, ami által manipulálni a bot. Amellett, hogy a funkciók létrehozása távirat bot, BotFather is számos egyéb lehetőség:
és így tovább. Teljes leírás a rendelkezésre álló parancsok látható az első képen.
Első kódoló
Amint azt korábban említettük, fogunk írni egy webes alkalmazás Django. De érdemes megjegyezni, hogy ez nem feltétlenül szükséges. Ezt megteheti a szokásos Python script, bár ebben az esetben meg kell időközönként lekérdezi távirat új kérések bot felhasználók számára (getUpdates módszer), és egyre nagyobb az eltolás, így a legfrissebb adatok ismétlések nélkül. A távirat van két egymást kölcsönösen kizáró eljárások megszerzésére irányuló parancs / üzeneteit a bot.
- Az API módszer hívás getUpdates
- telepítése Webhook
Tehát vissza a python könyvtár dolgozni távirat - telepot. A mai napig, a legutóbbi változatai 6.7. Telepítse a virtuális környezetben python virtualenv:
A legegyszerűbb lehetőség kölcsönhatás távirat bot Python az alábbiak szerint:
Változó token hozzárendelése token kapott érték létrehozása bot segítségével BotFather. Ennek eredményeként, a kivégzés után ezeket a parancsokat, van:
Gratulálunk! Felhívtuk a legegyszerűbb API kérés getMe, amely visszaadja tájékoztatás a hajó: felhasználónév, id, first_name.
Azt add, hogy robotunk én névjegyzékébe, és elküldi neki az első szabványos parancs / Start

A folyamat a kommunikáció távirat bot történik HTTPS; Felhasznált adatok JSON. getUpdates módszer ad egy listát / tömb típusú objektumok frissítése. Belül Update üzenet az objektumot. A szokásos bot velünk folytatott kommunikációja valóban érdekli az a tárgy, üzenet, amelyben azt olvassuk a szöveget attribútumot, amely tárolja a szöveget küldött bot és chat létesítmény, amely információkat a felhasználó kezdeményezi a kommunikációt a távirat bot. Van is egy paraméter update_id, amely arra szolgál, mint az eltolás paraméter a hívás getUpdates módszer. Ezt update_id + 1 visszatér az összes üzenetet kapott, miután az utolsó update_id, míg az összes korábbi üzenet törlődik.
Szakaszában az írás egy egyszerű bot távirat nekünk ezeket a kihívásokat elég. Kezdjük alkalmazások Django szolgálni a felhasználókat.
Egy egyszerű függvény értelmezési RSS feed Planet Python így néz ki:
Itt én vagyok a python kéréseket a könyvtár dolgozni HTTP Legegyszerűbb formájában, anélkül, hibakezelés. Django „csillapító” a következő:
CommandReceiveView vár POST kérés önmagában értelmezi azt, és választ, az előre meghatározott parancs. Teljes Django alkalmazás megtalálható ezen a linken. Meg kell jegyezni, a kódot kell használni egy másik API hívás - sendmessage. Ez a módszer az üzenetet küldi, hogy a megadott felhasználó a chat_id és az üzenet szövegét. Chat_id - egy egyedi azonosítót egy chat és a felhasználó között a bot (az azonosítót, a válasz a kérelemre getUpdates). A távirat botok egy korlátozás, nem tudnak üzenetet küldeni a felhasználóknak, akik korábban nem kezdeményezett beszélgetés vele. Úgy látszik, ez azért történt, hogy ne állítsanak tömeg Javascriptet.
Tehát a Django webes alkalmazás fut. Hogyan kezdődik, hogy teszteljék a bot? És minden nagyon egyszerű - szükség van, hogy szimulálja a cselekvések távirat-szolgáltatás. Ehhez szükségünk van a HTTP kliens és a test a kérelmet. HTTP kliens használja a Chrome nevű plugint Postman. és mi a kérelmet szervezet közvetlenül a kapott adatok segítségével API hívást getUpdates.
Elindítása után a runserver, URL, amelyre küldeni a kérelmet az alábbiak szerint:
ahol BOT_TOKEN - ez a záloga bot. Lásd screenshot:

És nézzük csapatot küldeni takarmány lista híreket Planet Python:


A screenshotok látható, hogy a bot megfelelő választ adni a parancsot, hogy sorolja fel az elmúlt 10 üzenetét.
A következő lépés az, hogy telepíteni a Django alkalmazás a távoli gépen, és az azt követő hívás setWebhook átvitelére szolgáló eljárás egy URL-t kell küldeni a POST kérés a távirat-szolgáltatás, valahányszor egy bot parancsok számára. Ez lesz szó a következő cikkben.

A csatorna több mint 1000 tagot számlál, így csatlakozzon hozzánk, és akkor - DevBrain