O intuito desse artigo é mostrar de forma simples como fazer um bot no Telegram. Para isso, vamos montar, passo a passo, o assistente virtual que será responsável por consultar uma API e nos retornar quantas pessoas estão no espaço, quem são elas, e em qual espaçonave elas se encontram.
Para acompanhar o tutorial, é recomendado ter uma noção básica de Python.
Por Caio Zovaro, Desenvolvedor da Sinch.
Primeiramente, para criar nosso assistente virtual, nós utilizaremos a ajuda de um outro bot, que auxilia na produção de novos bots, bem como na edição de bots existentes. O nome dele é BotFather.
Para iniciar uma conversa com ele basta procurarmos por @BotFather no Telegram, enviarmos o comando /start e este comando retornará uma lista com todos os comandos que o BotFather é capaz de executar.
Entre eles, temos o /newbot, que é o comando necessário para criarmos nosso novo assistente virtual. Utilizando este comando, o BotFather fará duas perguntas básicas:
1 – Como o bot vai se chamar?
2 – Qual será o username do bot?
Respondendo esses questionamentos, o BotFather nos retornará uma mensagem contendo o access token do bot. Copie este access token e vamos armazená-lo.
Tendo o Access Token em mãos, vamos armazená-lo em um variável de ambiente, para que ele possa ser acessado através do nosso script Python. Para isso, basta digitar o seguinte comando no terminal:
export SPACE_BOT_TOKEN=”Access Token aqui” Pronto, agora já temos nosso Access Token armazenado e podemos acessá-lo através do nosso script.
A fim de facilitar a implementação, vamos utilizar uma biblioteca chamada pyTelegramBotAPI. Esta API possui decoratorsI que facilitam nosso trabalho na hora de identificarmos qual tipo de tratamento devemos dar a cada mensagem enviada pelo usuário. Instale a biblioteca com o pip: pip3 install pyTelegramBotAPI. Agora, vamos começar a implementação. Primeiramente, devemos inicializar nosso bot utilizando a API:
Aqui, fazemos os imports necessários e, depois, inicializamos o assistente virtual com um comando simples na linha 7.
Em seguida, vamos criar duas funções: uma de apresentação do bot e outra para retornarmos ao usuário quantas pessoas estão no espaço neste exato momento.
Assim, as linhas 10 e 17 temos os decorators que, neste caso específico, estão indicando ao nosso bot quais funções devem ser executadas dependendo do comando que o usuário utilizar.
Além disso, a função send_start_message na linha 11 envia uma mensagem simples ao usuário explicando o que o bot faz. Em seguida, a função send_people, na linha 17, envia para o usuário a quantidade de pessoas que estão no espaço e quem são elas. Para isso, utilizamos duas funções auxiliares. Vamos dar uma olhada nelas.
Aqui, temos na linha 34 a função get_people responsável por buscar as informações na API Open Notify. Ao mesmo tempo, a função get_reply_message, na linha 22, monta a mensagem a ser endereçada ao usuário utilizando as informações da função get_people. Por último, precisamos apenas ativar o polling do nosso bot para que ele fique aguardando mensagens do usuário. Para fazer isso, basta uma linha de código.
Pronto! Nosso código está feito. Agora basta rodar este script e conversar com o bot. Vamos dar uma olhada como ficaram as respostas do bot aos nossos comandos.
Como resultado, neste artigo aprendemos a criar um assistente virtual simples que consulta uma API. Porém, essa é só uma pequena demonstração do que os bots do Telegram são capazes de fazer. Qualquer dúvida, crítica ou sugestão sobre Bot no Telegram podem me procurar pelo LinkedIn ou entrar em contato com nossos especialistas.
Quando você visita um site, ele pode armazenar ou recuperar informações em seu navegador, principalmente na forma de cookies. Essas informações podem ser sobre você, suas preferências ou seu dispositivo e são usadas principalmente para que o site funcione como você espera. Em geral, as informações não o identificam diretamente, mas podem proporcionar uma experiência mais personalizada na internet. Como respeitamos seu direito à privacidade, você pode optar por não permitir alguns tipos de cookies. Clique nos títulos das diferentes categorias para saber mais e alterar nossas configurações padrão. Entretanto, o bloqueio de alguns tipos de cookies pode afetar sua experiência no site e os serviços que podemos oferecer.
Declaração de cookies
Esses cookies são necessários para o funcionamento do site e não podem ser desativados em nossos sistemas. Em geral, eles são definidos apenas em resposta a ações feitas por você que equivalem a uma solicitação de serviços, como a configuração de suas preferências de privacidade, seu acesso ou o preenchimento de formulários. Você pode configurar seu navegador para bloquear ou alertá-lo sobre esses cookies, mas algumas partes do site não funcionarão.
Esses cookies não armazenam nenhuma informação de identificação pessoal.
Detalhes do cookie
Subgrupo de cookies | Cookies | Cookies usados |
---|---|---|
eu5.mm.sdi.sinch.com | ASP.NET_SessionId | Primeira Parte |
community.sinch.com | AWSALB , LiSESSIONID | Primeira Parte |
appengage.sinch.com | dd_cookie_test_ | Primeira Parte |
tickets.sinch.com | atlassian.xsrf.token , JSESSIONID | Primeira Parte |
cockpit2.sinch.com | SESSION | Primeira Parte |
engage.sinch.com | instapage-variant-xxxxxxxx | Primeira Parte |
dashboard.sinch.com | cookietest | Primeira Parte |
brand.sinch.com | PHPSESSID , AWSALBCORS | Primeira Parte |
sinch.com | __cf_bm , OptanonConsent , TEST_AMCV_COOKIE_WRITE , OptanonAlertBoxClosed , onesaasCookieSettings, QueryString, functional-cookies, performance-cookies, targeting-cookies, social-cookies lastExternalReferrer, lastExternalReferrertime, cookies, receive-cookie-deprecation _gdvisitor, _gd_session, _gcl_au, _fbp, _an_uid, _utm_zzses, lpv | Primeira Parte |
mediabrief.com | __cf_bm | Terceiros |
recaptcha.net | _GRECAPTCHA | Terceiros |
cision.com | __cf_bm | Terceiros |
techtarget.com | __cf_bm | Terceiros |
Esses cookies nos permitem contar as visitas e as fontes de tráfego para que possamos medir e melhorar o desempenho do nosso site. Eles nos ajudam a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo site. Todas as informações coletadas por esses cookies são agregadas e, portanto, anônimas.
Se você não permitir esses cookies, não saberemos quando você visitou nosso site e não poderemos monitorar seu desempenho.
Detalhes do cookie
Subgrupo de cookies | Cookies | Cookies usados |
---|---|---|
community.sinch.com | ValueSurveyVisitorCount | Primeira Parte |
buzz.sinch.com | instap-spid.8069 , instap-spses.8069 | Primeira Parte |
appengage.sinch.com | _dd_s | Primeira Parte |
sinch.com | AMP_TLDTEST , rl_page_init_referrer , rl_trait , _vis_opt_s , __q_state_dp56h9oqwhna9CoL , cb_user_id , __hstc , rl_anonymous_id , rl_user_id , initialTrafficSource , _vwo_uuid , _vwo_uuid_v2 , rl_page_init_referring_domain , _hjIncludedInSessionSample_xxx , apt.uid , __hssrc , test_rudder_cookie , cb%3Atest , __hssc , rl_group_trait , _hjAbsoluteSessionInProgress , _vwo_referrer , _vwo_sn , _vis_opt_test_cookie , _hjFirstSeen , _hjTLDTest , _hjSession_xxxxxx , s_sq , _vwo_ds , rl_group_id , _vis_opt_exp_n_combi , s_cc , _gclxxxx , cb_anonymous_id , cb_group_id , apt.sid , rl_session , _uetvid , AMP_899c7e29a9 , _hjSessionUser_xxxxxx | Primeira Parte |
brand.sinch.com | AMP_TEST | Primeira Parte |
engage.sinch.com | no-cache , instap-spses.85bb , instap-spid.85bb | Primeira Parte |
www.sinch.com | d-a8e6 , s-9da4 | Primeira Parte |
nr-data.net | JSESSIONID | Terceiros |
sinch-en.newsroom.cision.com | _ga, _gid | Terceiros |
sinch.in | _ga_xxxxxxxxxx, _gat_UA-XXXXXX-X, _gid, _ga | Terceiros |
g.fastcdn.co | instap-spses.85bb | Terceiros |
hello.learn.mailjet.com | pardot, visitor_id, visitor_id##### | Terceiros |
www.googletagmanager.com | userId | Terceiros |
hello.learn.mailgun.com | visitor_id#####, visitor_id | Terceiros |
dev.visualwebsiteoptimizer.com | _vwo_ssm | Terceiros |
box.com | box_visitor_id | Terceiros |
app.box.com | z, cn | Terceiros |
sinch-tfn.paperform.co | laravel_session | Terceiros |
go.sinch.in | visitor_id#####, visitor_id | Terceiros |
Qualified | __q_local_form_debug | Third party |
Rudderstack | rudder.inProgress, rudder.3156dd1f-7029-4600-ae54-baf147d9af20.queue, rudder.3156dd1f-7029-4600-ae54-baf147d9af20.ack, rudder.3156dd1f-7029-4600-ae54-baf147d9af20.reclaimStart, rudder.3156dd1f-7029-4600-ae54-baf147d9af20.reclaimEnd, | Third party |
6sense | _6senseCompanyDetauls, _6signalTTL | Third party |
Appcues | apc_local_id, apc_user | Third party |
Esses cookies podem ser definidos em nosso site por nossos parceiros de publicidade. Eles podem ser usados por essas empresas para criar um perfil de seus interesses e mostrar anúncios relevantes em outros sites. Eles não armazenam diretamente informações pessoais, mas se baseiam na identificação exclusiva de seu navegador e dispositivo de internet.
Se você não permitir esses cookies, receberá anúncios menos direcionados.
Detalhes do cookie
Subgrupo de cookies | Cookies | Cookies usados |
---|---|---|
investors.sinch.com | visitor_id | Primeira Parte |
community.sinch.com | VISITOR_BEACON , LithiumVisitor | Primeira Parte |
sinch.com | _uetsid , ajs_user_id , _gcl_aw , ajs_group_id , AMCV_ , __utmzzses , _fbp , _gcl_au , AMCVS_ | Primeira Parte |
go.latam.sinch.com | visitor_id##### , pardot | Primeira Parte |
linkedin.com | li_gc, bcookie, lidc, AnalyticsSyncHistory, UserMatchHistory, li_sugr | Terceiros |
pi.pardot.com | lpv151751, pardot | Terceiros |
hsforms.com | _cfuvid | Terceiros |
google.com | CONSENT | Terceiros |
sinch.in | _gclxxxx, _gcl_au | Terceiros |
www.linkedin.com | bscookie | Terceiros |
bing.com | MUID, MSPTC | Terceiros |
www.facebook.com | Terceiros | |
hello.learn.mailgun.com | pardot | Terceiros |
www.youtube.com | TESTCOOKIESENABLED | Terceiros |
dev.visualwebsiteoptimizer.com | uuid | Terceiros |
g2crowd.com | __cf_bm | Terceiros |
pardot.com | visitor_id#####, visitor_id | Terceiros |
tracking.g2crowd.com | _session_id | Terceiros |
hubspot.com | __cf_bm, _cfuvid | Terceiros |
doubleclick.net | test_cookie, IDE | Terceiros |
youtube.com | CONSENT, VISITOR_PRIVACY_METADATA, VISITOR_INFO1_LIVE | Terceiros |
go.sinch.in | pardot | Terceiros |
liadm.com | lidid | Terceiros |
www.google.com | _GRECAPTCHA | Terceiros |
Esses cookies permitem que o site ofereça funcionalidade e personalização aprimoradas. Elas podem ser definidas por nós ou por provedores terceirizados cujos serviços adicionamos às nossas páginas. Se você não permitir esses cookies, alguns ou todos esses serviços poderão não funcionar corretamente.
Detalhes do cookie
Subgrupo de cookies | Cookies | Cookies usados |
---|---|---|
portal.sinch.com | pnctest | Primeira Parte |
partner.appengage.sinch.com | _dd_s | Primeira Parte |
investors.sinch.com | Primeira Parte | |
community.sinch.com | LithiumUserInfo , LithiumUserSecure | Primeira Parte |
tickets.sinch.com | selectedidp | Primeira Parte |
engage.sinch.com | ln_or | Primeira Parte |
cockpit2.sinch.com | CSRF-TOKEN , NG_TRANSLATE_LANG_KEY | Primeira Parte |
sinch.com | apt.temp-xxxxxxxxxxxxxxxxxx , hubspotutk , ajs%3Acookies , cf_clearance , ajs%3Atest , __tld__ , __q_domainTest , pfjs%3Acookies , ajs_anonymous_id | Primeira Parte |
auth.appengage.sinch.com | AUTH_SESSION_ID , KEYCLOAK_3P_COOKIE , KEYCLOAK_3P_COOKIE_SAMESITE , KC_RESTART , AUTH_SESSION_ID_LEGACY | Primeira Parte |
www.recaptcha.net | _GRECAPTCHA | Terceiros |
boxcdn.net | __cf_bm | Terceiros |
d2oeshgsx64tgz.cloudfront.net | cookietest | Terceiros |
sinch-np.paperform.co | XSRF-TOKEN, laravel_session | Terceiros |
vimeo.com | __cf_bm, vuid | Terceiros |
sinch-ca-sc.paperform.co | XSRF-TOKEN, laravel_session | Terceiros |
box.com | site_preference | Terceiros |
app.box.com | bv | Terceiros |
sinch-tfn.paperform.co | XSRF-TOKEN | Terceiros |
cision.com | cf_clearance | Terceiros |
Esses cookies são definidos por uma série de serviços de mídia social que adicionamos ao site para permitir que você compartilhe nosso conteúdo com seus amigos e redes. Eles são capazes de rastrear seu navegador em outros sites e criar um perfil de seus interesses. Isso pode afetar o conteúdo e as mensagens que você vê em outros sites que visita. Se você não permitir esses cookies, talvez não consiga usar ou ver essas ferramentas de compartilhamento.
Detalhes do cookie
Subgrupo de cookies | Cookies | Cookies usados |
---|---|---|
community.sinch.com | ln_or | Primeira Parte |
sinch.in | _fbp | Terceiros |
youtube-nocookie.com | CONSENT | Terceiros |
youtube.com | YSC | Terceiros |