Om du är en Telegram-användare har du säkert haft en “konversation” med en chatbot någon gång. Med sin fantastiska anpassningsbarhet erbjuder Telegrams bots en mängd olika fördelar — vare sig det är för att automatisera uppgifter eller bara ha lite roligt med spel i din chattgrupp.
Även om vissa kanske tycker att det är en skrämmande uppgift att utveckla en bot, är det verkligen inte det. Med rätt planering kan du ha en Telegram-bot igång på mindre än en timme! Så här skapar du en enkel Telegram-bot som visar söta bilder på internetkatter när du uppmanas.
Komma igång
För den här handledningen kommer vi att använda Python 3, python-telegram-bot and requests-biblioteket och TheCatAPI.
Varje bot i Telegram har en unik token som hjälper den att kommunicera med Bot API för att kunna använda appens meddelandegränssnitt. Bot API, en av Telegrams mest populära funktioner bland utvecklare, låter dig använda dess meddelanden som ett gränssnitt.
För att få token, starta en konversation med @BotFather som, som namnet antyder, är en officiell bot som låter dig skapa och anpassa dina egna bots. Du kan komma åt boten genom att använda den givna länken eller alternativt söka “@botfather” på Telegram.
Väl i chatten skapar du din bot genom att skriva /newbot kommando. Fortsätt att ställa in namnet och användarnamnet på din bot (vi bestämde oss för att döpa vår till @pawsomebot). Efter detta kommer du att få en token som är unik för din bot.
Nu när vi har alla förutsättningar är det dags att komma till den spännande delen!
Installera bibliotek
Om du använder Windows, öppna kommandotolken och skriv följande kommandon:
pip install python-telegram-bot
pip install requests
Om du använder macOS eller Linux, använd följande kommandon på din terminal istället. Dessutom i Linux, se till att du är inloggad som användare med sudo-privilegier.
pip3 install python-telegram-bot
pip3 install requests
Att skriva programmet
Skapa en ny mapp på din dator och öppna den i din favoritredigerare. Skapa en ny fil och döp den till main.py. Den här filen kommer att innehålla källkoden för din bot.
Låt oss nu importera biblioteken vi installerade tidigare tillsammans med några av deras inbyggda funktioner.
from telegram.ext import Updater, CommandHandler
import requests
import re
Flödet av programmet härifrån och ut är att komma åt TheCatAPI, få URL:en till en slumpmässig bild och skicka den bilden till användarens chatt.
Låt oss börja med en funktion för att få bildens URL, vilket kan göras med hjälp av modulen förfrågningar. I den här funktionen laddar vi JSON-data för en slumpmässig fil som tillhandahålls av TheCatAPI och extraherar dess URL för senare användning. För att titta på formatet för JSON-objektet, gå till https://api.thecatapi.com/v1/images/search i din webbläsare. Du kommer att märka något i stil med detta:
[{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]
Lägg märke till att JSON-objektet är en array som innehåller en ordbok. Denna ordbok innehåller URL:en med nyckeln “url”. För att extrahera URL:en måste vi referera till det första elementet i arrayen och sedan den relevanta nyckeln.
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
Nästa steg måste vi skicka den här bilden till en användares chatt. För detta behöver vi en bild-URL samt det unika ID:t för användarens chatt. Låt oss skapa en omslagsfunktion för att göra detta. Först kallar vi getUrl(). funktion för att erhålla URL:en till en slumpmässig bild—denna URL ändras varje gång ditt program itererar genom funktionen.
Detta följs sedan av att mottagaranvändarens chatt-ID, som definierar botens målplats för meddelanden, och tolka URL:en genom Bot API:s inbyggda skicka bild() fungera.
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
För att ta reda på mer om Bot API:s olika inbyggda funktioner och hur de fungerar, känn free för att kolla in Telegrams officiella dokumentation efter denna handledning.
Slutligen, låt oss skapa en funktion som kontrollerar botens övergripande funktion. Denna funktion—kallas konventionellt main()—är där vi skickar en HTTP-förfrågan till Bot API med hjälp av token vi fick i början av handledningen och sedan definierar hur botens användarinteraktion kommer att se ut. I ett så enkelt fall som vårt innebär detta i huvudsak att initiera boten och anropa sendImage() funktion när användaren uppmanas till det.
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Ditt slutliga program bör se ut så här:
from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Din egen Telegram Bot
Grattis! Du har byggt din alldeles egna avstressande bot som skickar bilder med öppen källkod av de sötaste internetkatterna när de uppmanas. Prova att köra ditt program och skriv /mjau i din bots chatt för att aktivera den.
Även om detta kan vara en enkel bot med begränsad funktionalitet, visar den hur kraftfullt Telegrams botutvecklingsekosystem är. Du kan lägga till valfritt antal komplexa subrutiner och funktioner för att förbättra funktionaliteten hos din bot — the sky’s the limit. För att ta reda på mer om fantastiska Telegram-bots som bidragsgivare har skapat genom åren, kolla in vår lista över användbara Telegram-bots.
Du kan också hitta en mängd olika licensierade program med öppen källkod för Telegram-bots på plattformar som GitHub. De flesta öppen källkodslicenser tillåter dig att använda, studera, ladda ner eller ändra källkoden för ett program.
Värd din Telegram Bot online
Nu när du har din bot igång, försök att stänga main.py på din PC och använd boten på din Telegram Messenger-app. Svarar den fortfarande på /mjau kommando? Nej, det gör det inte.
Som nybörjare kan du bli förvirrad över varför main.py på din PC måste vara igång när du redan har skapat en bot som körs på internet. Anledningen till detta är att programmet använder din PC som en lokal server för att skicka HTTP-förfrågningar till API:erna som används i detta program.
Som sådan är det varken genomförbart eller bekvämt att behöva köra programmet varje gång du vill använda appen. För att lösa det här problemet måste vi ta bort botens beroende av din enhet
Ett sätt att göra det är att använda ett billigt kretskort (PCB), som Raspberry Pi, för att sätta upp din egen webbserver och använda den för att köra ditt program. Det har samma fördelar som att köra programmet på din PC utan kostnaderna för att hålla det på hela dagen och natten eftersom PCB tenderar att ha ett betydligt lägre energifotavtryck.
Alternativt kan du också distribuera ditt program till molnet. Gå över till en webbapp-värdplattform som Heroku, AWS, Google Cloud eller Microsoft Azure och välj en prenumeration som passar dina behov bäst. Vi rekommenderar att du väljer en free provversion eller prenumeration och uppgradera det när du ökar omfattningen eller omfattningen av ditt program.
Om författaren
Yash Chellani (10 publicerade artiklar)
Yash är en blivande datavetenskapsstudent som älskar att bygga saker och skriva om allt som är tekniskt. I hans free tid, han gillar att spela squash, läsa en kopia av den senaste Murakami och jaga drakar i Skyrim.
Mer från Yash Chellani
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
