{"id":91161,"date":"2022-10-11T13:43:34","date_gmt":"2022-10-11T18:43:34","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/"},"modified":"2022-10-11T13:43:34","modified_gmt":"2022-10-11T18:43:34","slug":"hur-man-bygger-en-grundlaggande-telegrambot-med-python-3","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/","title":{"rendered":"Hur man bygger en grundl\u00e4ggande telegrambot med Python 3"},"content":{"rendered":"<div>\n<p>Om du \u00e4r en Telegram-anv\u00e4ndare har du s\u00e4kert haft en \u201ckonversation\u201d med en chatbot n\u00e5gon g\u00e5ng.  Med sin fantastiska anpassningsbarhet erbjuder Telegrams bots en m\u00e4ngd olika f\u00f6rdelar \u2014 vare sig det \u00e4r f\u00f6r att automatisera uppgifter eller bara ha lite roligt med spel i din chattgrupp.<\/p>\n<p>\u00c4ven om vissa kanske tycker att det \u00e4r en skr\u00e4mmande uppgift att utveckla en bot, \u00e4r det verkligen inte det.  Med r\u00e4tt planering kan du ha en Telegram-bot ig\u00e5ng p\u00e5 mindre \u00e4n en timme!  S\u00e5 h\u00e4r skapar du en enkel Telegram-bot som visar s\u00f6ta bilder p\u00e5 internetkatter n\u00e4r du uppmanas.<\/p>\n<h2 id=\"getting-started\"><span class=\"ez-toc-section\" id=\"Komma_igang\"><\/span>  Komma ig\u00e5ng<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>F\u00f6r den h\u00e4r handledningen kommer vi att anv\u00e4nda Python 3, python-telegram-bot and requests-biblioteket och TheCatAPI.<\/p>\n<p>Varje bot i Telegram har en unik token som hj\u00e4lper den att kommunicera med Bot API f\u00f6r att kunna anv\u00e4nda appens meddelandegr\u00e4nssnitt.  Bot API, en av Telegrams mest popul\u00e4ra funktioner bland utvecklare, l\u00e5ter dig anv\u00e4nda dess meddelanden som ett gr\u00e4nssnitt.<\/p>\n<p>F\u00f6r att f\u00e5 token, starta en konversation med @BotFather som, som namnet antyder, \u00e4r en officiell bot som l\u00e5ter dig skapa och anpassa dina egna bots.  Du kan komma \u00e5t boten genom att anv\u00e4nda den givna l\u00e4nken eller alternativt s\u00f6ka \u201c@botfather\u201d p\u00e5 Telegram.<\/p>\n<p>V\u00e4l i chatten skapar du din bot genom att skriva <strong>\/newbot<\/strong> kommando.  Forts\u00e4tt att st\u00e4lla in namnet och anv\u00e4ndarnamnet p\u00e5 din bot (vi best\u00e4mde oss f\u00f6r att d\u00f6pa v\u00e5r till @pawsomebot).  Efter detta kommer du att f\u00e5 en token som \u00e4r unik f\u00f6r din bot.<\/p>\n<p>Nu n\u00e4r vi har alla f\u00f6ruts\u00e4ttningar \u00e4r det dags att komma till den sp\u00e4nnande delen!<\/p>\n<h2 id=\"installing-libraries\"><span class=\"ez-toc-section\" id=\"Installera_bibliotek\"><\/span>  Installera bibliotek<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Om du anv\u00e4nder Windows, \u00f6ppna kommandotolken och skriv f\u00f6ljande kommandon:<\/p>\n<pre>pip install python-telegram-bot<br\/>pip install requests<br\/><\/pre>\n<p>Om du anv\u00e4nder macOS eller Linux, anv\u00e4nd f\u00f6ljande kommandon p\u00e5 din terminal ist\u00e4llet.  Dessutom i Linux, se till att du \u00e4r inloggad som anv\u00e4ndare med sudo-privilegier.<\/p>\n<pre>pip3 install python-telegram-bot<br\/>pip3 install requests<\/pre>\n<h2 id=\"writing-the-program\"><span class=\"ez-toc-section\" id=\"Att_skriva_programmet\"><\/span>  Att skriva programmet<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Skapa en ny mapp p\u00e5 din dator och \u00f6ppna den i din favoritredigerare.  Skapa en ny fil och d\u00f6p den till main.py.  Den h\u00e4r filen kommer att inneh\u00e5lla k\u00e4llkoden f\u00f6r din bot.<\/p>\n<p>L\u00e5t oss nu importera biblioteken vi installerade tidigare tillsammans med n\u00e5gra av deras inbyggda funktioner.<\/p>\n<pre>from telegram.ext import Updater, CommandHandler<br\/>import requests<br\/>import re<br\/><\/pre>\n<p>Fl\u00f6det av programmet h\u00e4rifr\u00e5n och ut \u00e4r att komma \u00e5t TheCatAPI, f\u00e5 URL:en till en slumpm\u00e4ssig bild och skicka den bilden till anv\u00e4ndarens chatt.<\/p>\n<p>L\u00e5t oss b\u00f6rja med en funktion f\u00f6r att f\u00e5 bildens URL, vilket kan g\u00f6ras med hj\u00e4lp av modulen f\u00f6rfr\u00e5gningar.  I den h\u00e4r funktionen laddar vi JSON-data f\u00f6r en slumpm\u00e4ssig fil som tillhandah\u00e5lls av TheCatAPI och extraherar dess URL f\u00f6r senare anv\u00e4ndning.  F\u00f6r att titta p\u00e5 formatet f\u00f6r JSON-objektet, g\u00e5 till https:\/\/api.thecatapi.com\/v1\/images\/search i din webbl\u00e4sare.  Du kommer att m\u00e4rka n\u00e5got i stil med detta:<\/p>\n<pre>[{\"breeds\":[],\"id\":\"a8c\",\"url\":\"url.jpg\",\"width\":800,\"height\":533}]<br\/><\/pre>\n<p>L\u00e4gg m\u00e4rke till att JSON-objektet \u00e4r en array som inneh\u00e5ller en ordbok.  Denna ordbok inneh\u00e5ller URL:en med nyckeln \u201curl\u201d.  F\u00f6r att extrahera URL:en m\u00e5ste vi referera till det f\u00f6rsta elementet i arrayen och sedan den relevanta nyckeln.<\/p>\n<pre>def getUrl():<br\/>#obtain a json object with image details<br\/>#extract image url from the json object<br\/>contents = requests.get('https:\/\/api.thecatapi.com\/v1\/images\/search')<br\/>url = contents[0]['url']<br\/>return url<\/pre>\n<p>N\u00e4sta steg m\u00e5ste vi skicka den h\u00e4r bilden till en anv\u00e4ndares chatt.  F\u00f6r detta beh\u00f6ver vi en bild-URL samt det unika ID:t f\u00f6r anv\u00e4ndarens chatt.  L\u00e5t oss skapa en omslagsfunktion f\u00f6r att g\u00f6ra detta.  F\u00f6rst kallar vi <strong>getUrl()<\/strong>.  funktion f\u00f6r att erh\u00e5lla URL:en till en slumpm\u00e4ssig bild\u2014denna URL \u00e4ndras varje g\u00e5ng ditt program itererar genom funktionen.<\/p>\n<p>Detta f\u00f6ljs sedan av att mottagaranv\u00e4ndarens chatt-ID, som definierar botens m\u00e5lplats f\u00f6r meddelanden, och tolka URL:en genom Bot API:s inbyggda <strong>skicka bild() <\/strong>fungera.<\/p>\n<pre>def sendImage(bot, update):<br\/>url = getUrl()<br\/>chat_id = update.message.chat_id<br\/>bot.send_photo(chat_id=chat_id, image=url)<br\/><\/pre>\n<p>F\u00f6r att ta reda p\u00e5 mer om Bot API:s olika inbyggda funktioner och hur de fungerar, k\u00e4nn free f\u00f6r att kolla in Telegrams officiella dokumentation efter denna handledning.<\/p>\n<p>Slutligen, l\u00e5t oss skapa en funktion som kontrollerar botens \u00f6vergripande funktion.  Denna funktion\u2014kallas konventionellt main()\u2014\u00e4r d\u00e4r vi skickar en HTTP-f\u00f6rfr\u00e5gan till Bot API med hj\u00e4lp av token vi fick i b\u00f6rjan av handledningen och sedan definierar hur botens anv\u00e4ndarinteraktion kommer att se ut.  I ett s\u00e5 enkelt fall som v\u00e5rt inneb\u00e4r detta i huvudsak att initiera boten och anropa <strong>sendImage() <\/strong>funktion n\u00e4r anv\u00e4ndaren uppmanas till det.<\/p>\n<pre>def main():<br\/>updater = Updater(\"1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c\")<br\/>#call sendImage() when the user types a command in the telegram chat<br\/>updater.dispatcher.add_handler(CommandHandler('meow',sendImage))<br\/>#start the bot<br\/>updater.start_polling()<br\/>updater.idle()<br\/>if __name__ == '__main__':<br\/>main()<\/pre>\n<p>Ditt slutliga program b\u00f6r se ut s\u00e5 h\u00e4r:<\/p>\n<pre>from telegram.ext import Updater, CommandHandler<br\/>import requests<br\/>import re<br\/>def getUrl():<br\/>#obtain a json object with image details<br\/>#extract image url from the json object<br\/>contents = requests.get('https:\/\/api.thecatapi.com\/v1\/images\/search')<br\/>url = contents[0]['url']<br\/>return url<br\/>def sendImage(bot, update):<br\/>url = getUrl()<br\/>chat_id = update.message.chat_id<br\/>bot.send_photo(chat_id=chat_id, image=url)<br\/>def main():<br\/>updater = Updater(\"1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c\")<br\/>#call sendImage() when the user types a command in the telegram chat<br\/>updater.dispatcher.add_handler(CommandHandler('meow',sendImage))<br\/>#start the bot<br\/>updater.start_polling()<br\/>updater.idle()<br\/>if __name__ == '__main__':<br\/>main()<br\/><\/pre>\n<h2 id=\"your-own-telegram-bot\"><span class=\"ez-toc-section\" id=\"Din_egen_Telegram_Bot\"><\/span>  Din egen Telegram Bot<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Grattis!  Du har byggt din alldeles egna avstressande bot som skickar bilder med \u00f6ppen k\u00e4llkod av de s\u00f6taste internetkatterna n\u00e4r de uppmanas.  Prova att k\u00f6ra ditt program och skriv <strong>\/mjau <\/strong>i din bots chatt f\u00f6r att aktivera den.<\/p>\n<p>\u00c4ven om detta kan vara en enkel bot med begr\u00e4nsad funktionalitet, visar den hur kraftfullt Telegrams botutvecklingsekosystem \u00e4r.  Du kan l\u00e4gga till valfritt antal komplexa subrutiner och funktioner f\u00f6r att f\u00f6rb\u00e4ttra funktionaliteten hos din bot \u2014 the sky\u2019s the limit.  F\u00f6r att ta reda p\u00e5 mer om fantastiska Telegram-bots som bidragsgivare har skapat genom \u00e5ren, kolla in v\u00e5r lista \u00f6ver anv\u00e4ndbara Telegram-bots.<\/p>\n<p>Du kan ocks\u00e5 hitta en m\u00e4ngd olika licensierade program med \u00f6ppen k\u00e4llkod f\u00f6r Telegram-bots p\u00e5 plattformar som GitHub.  De flesta \u00f6ppen k\u00e4llkodslicenser till\u00e5ter dig att anv\u00e4nda, studera, ladda ner eller \u00e4ndra k\u00e4llkoden f\u00f6r ett program.<\/p>\n<h2 id=\"host-your-telegram-bot-online\"><span class=\"ez-toc-section\" id=\"Vard_din_Telegram_Bot_online\"><\/span>  V\u00e4rd din Telegram Bot online<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Nu n\u00e4r du har din bot ig\u00e5ng, f\u00f6rs\u00f6k att st\u00e4nga main.py p\u00e5 din PC och anv\u00e4nd boten p\u00e5 din Telegram Messenger-app.  Svarar den fortfarande p\u00e5 <strong>\/mjau<\/strong> kommando?  Nej, det g\u00f6r det inte.<\/p>\n<p>Som nyb\u00f6rjare kan du bli f\u00f6rvirrad \u00f6ver varf\u00f6r main.py p\u00e5 din PC m\u00e5ste vara ig\u00e5ng n\u00e4r du redan har skapat en bot som k\u00f6rs p\u00e5 internet.  Anledningen till detta \u00e4r att programmet anv\u00e4nder din PC som en lokal server f\u00f6r att skicka HTTP-f\u00f6rfr\u00e5gningar till API:erna som anv\u00e4nds i detta program.<\/p>\n<p>Som s\u00e5dan \u00e4r det varken genomf\u00f6rbart eller bekv\u00e4mt att beh\u00f6va k\u00f6ra programmet varje g\u00e5ng du vill anv\u00e4nda appen.  F\u00f6r att l\u00f6sa det h\u00e4r problemet m\u00e5ste vi ta bort botens beroende av din enhet<\/p>\n<p>Ett s\u00e4tt att g\u00f6ra det \u00e4r att anv\u00e4nda ett billigt kretskort (PCB), som Raspberry Pi, f\u00f6r att s\u00e4tta upp din egen webbserver och anv\u00e4nda den f\u00f6r att k\u00f6ra ditt program.  Det har samma f\u00f6rdelar som att k\u00f6ra programmet p\u00e5 din PC utan kostnaderna f\u00f6r att h\u00e5lla det p\u00e5 hela dagen och natten eftersom PCB tenderar att ha ett betydligt l\u00e4gre energifotavtryck.<\/p>\n<p>Alternativt kan du ocks\u00e5 distribuera ditt program till molnet.  G\u00e5 \u00f6ver till en webbapp-v\u00e4rdplattform som Heroku, AWS, Google Cloud eller Microsoft Azure och v\u00e4lj en prenumeration som passar dina behov b\u00e4st.  Vi rekommenderar att du v\u00e4ljer en free provversion eller prenumeration och uppgradera det n\u00e4r du \u00f6kar omfattningen eller omfattningen av ditt program.<\/p>\n<p>    <strong class=\"section-sub-title\">Om f\u00f6rfattaren<\/strong><\/p>\n<p>            <strong class=\"bio-title\">Yash Chellani (10 publicerade artiklar)<br \/><\/strong><\/p>\n<p>Yash \u00e4r en blivande datavetenskapsstudent som \u00e4lskar att bygga saker och skriva om allt som \u00e4r tekniskt.  I hans free tid, han gillar att spela squash, l\u00e4sa en kopia av den senaste Murakami och jaga drakar i Skyrim.<\/p>\n<p>                            Mer fr\u00e5n Yash Chellani<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Prenumerera_pa_vart_nyhetsbrev\"><\/span>Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>G\u00e5 med i v\u00e5rt nyhetsbrev f\u00f6r tekniska tips, recensioner, free e-b\u00f6cker och exklusiva erbjudanden!<\/p>\n<p>Klicka h\u00e4r f\u00f6r att prenumerera<\/p>\n<\/p><\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/#Komma_igang\" >Komma ig\u00e5ng<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/#Installera_bibliotek\" >Installera bibliotek<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/#Att_skriva_programmet\" >Att skriva programmet<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/#Din_egen_Telegram_Bot\" >Din egen Telegram Bot<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/#Vard_din_Telegram_Bot_online\" >V\u00e4rd din Telegram Bot online<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-bygger-en-grundlaggande-telegrambot-med-python-3\/#Prenumerera_pa_vart_nyhetsbrev\" >Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>Om du \u00e4r en Telegram-anv\u00e4ndare har du s\u00e4kert haft en \u201ckonversation\u201d med en chatbot n\u00e5gon g\u00e5ng. Med sin fantastiska anpassningsbarhet erbjuder Telegrams bots en m\u00e4ngd olika f\u00f6rdelar \u2014 vare sig det \u00e4r f\u00f6r att automatisera uppgifter eller bara ha lite roligt med spel i din chattgrupp. \u00c4ven om vissa kanske tycker att det \u00e4r en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":91162,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[7572,1666,27,163,102,36048,45114],"class_list":["post-91161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar","tag-bygger","tag-grundlaggande","tag-hur","tag-man","tag-med","tag-python","tag-telegrambot"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=91161"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/91162"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=91161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=91161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=91161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}