Como implantar bot Python Telegram usando Webhooks no Google Cloud Platform
Em vez do prefácio

- Escreva um bot de telegrama. Agora, até crianças em idade escolar escrevem ”, ela disse.
"E por que não", pensei então ("Bem, bem", eu diria agora).
Sentamos em Bean e tomamos uma xícara de café e discutimos as possibilidades de testar idéias com modelos de inteligência artificial em um círculo próximo e não muito de amigos. Lena, minha ex-colega e, em todos os aspectos, não uma loira que acabara de se formar em magistratura, raciocinou da seguinte maneira. Ao criar um bot, você pode economizar tempo e energia na interface, concentrando-se no núcleo com o aprendizado de máquina. Você deve admitir que era impossível resistir a essa lógica de “desportista, membro do Komsomol e simplesmente linda” naquela linda manhã de domingo. Está resolvido. Bot de telegrama significa bot de telegrama.
Primeiro, entrei no Google e encontrei um grande número de links "como fazer um bot em 30 minutos". Isso me inspirou tanto que não fui além dos nomes e comecei a criar um kernel. Na primeira aproximação, tive que escrever um sistema de processamento de consultas de pesquisa usando PNL (processamento de linguagem natural). Escrever o kernel levou algum tempo bastante razoável (no entanto, a experiência da Coca-Cola não pode ser embebedada). Alguns dias depois, eu estava pronto para agrupar a primeira versão de teste do kernel em alguns outros comandos de envio e recebimento em algumas horas, executando tudo isso no Telegram para o benefício de meus amigos. Mas lá estava.
De repente, um monte de problemas surgiu. Depois de passar alguns dias pesquisando na Internet e conversando com colegas da loja, percebi que o óbvio não é óbvio e outra "instrução" não vai doer. Então este artigo apareceu.
Em vez de entrada. Bibliotecas
Existem várias bibliotecas Python para bots de telegrama. O próprio telegrama refere-se a três deles: python-telegram-bot , pyTelegramBotAPI , AIOGram . Links para essas bibliotecas e exemplos em outros idiomas podem ser encontrados no site do Telegram aqui . Obviamente, ainda existe a API do Telegram . No decorrer de minhas experiências, tentei duas variantes da API do Telegram e do pyTelegramBotAPI. E enquanto parou no segundo.
Em geral, as impressões das bibliotecas são as seguintes. Todos são muito parecidos, o que não é surpreendente. Python-telegram-bot, me pareceu, tem a melhor documentação de todas, embora o trabalho tenha parado (espero estar enganado). Pode-se observar que o trabalho continua no pyTelegramBotAPI, uma nova funcionalidade aparece. AIOGram parece mais jovem e mais verde. No último, eu não gostei, em vez da documentação nos webhooks, havia um link para o site do Telegram. Mas tudo flui, tudo muda. E a escolha final ainda precisa ser feita.
Não voltaremos ao problema das bibliotecas neste artigo.
Quanto ao código do bot em si, como já observei, existem muitos manuais na Internet dedicados à criação de programas simples e mais complexos. Para os fins deste artigo, isso não tem princípios. Vamos dar uma definição definitiva de dois exemplos do github oficial do pyTelegramBotAPI:
- Bot de telegrama usando polling ;
- Bot de telegrama usando webhook .
Os tópicos mais controversos dos bots de telegrama são certificados ssl, webhooks e diploing. Em torno disso e concentre nossa atenção. Abaixo, darei instruções passo a passo que permitirão que você coloque seu bot de telegrama em um dos melhores serviços de nuvem do mundo da maneira mais simples e confiável no menor tempo (pelo menos no primeiro ano). A criação de certificados SSL, seu registro no Telegram e outros assuntos relacionados também serão destacados. Se necessário, explicarei por que usamos essa ou aquela opção, essas ou aquelas equipes.
Polling vs Webhook

Se não fosse o confronto entre pesquisa versus webhook e algumas dificuldades (parcialmente inventadas) com webhook, este artigo não seria necessário. Como isso é de fundamental importância, vejamos com mais detalhes.
O que é um bot e como ele se comunica com o Telegram? Obviamente, um bot é um programa que roda no seu computador ou servidor. E a comunicação com o Telegram ocorre enviando e recebendo mensagens. E se tudo estiver claro com o envio de mensagens, uma opção é enviar (o endereço "onde" sabemos). Existem duas opções para receber mensagens de bot do Telegram.
A primeira é uma pesquisa (tradução literal da palavra pesquisa) do servidor Telegram para mensagens do bot. A segunda é uma “caixa de correio” com um endereço IP (o webhook pode ser traduzido como uma armadilha da web), para a qual as mensagens do servidor Telegram chegam.
A analogia mais simples com o correio real. Deixar correio (agência postal) é o servidor Telegram e você é o seu bot. Então, no primeiro caso (sondagem), você precisa ir ao correio para obter correspondência. E se você deseja receber mensagens sem demora, não precisará ir, mas literalmente corre sem parar. Como entendemos, é proibido viver no correio aguardando mensagens! No segundo caso, você informa aos correios o seu endereço residencial e aguarda uma correspondência calma em casa, tomando chá ou fumando bambu.
Obviamente, para uma pessoa, a primeira opção parece a mais grave. Mas, falando entre nós, se corrermos atrás de mensagens que enviamos um pedaço de ferro com um código, não devemos nos importar. E assim seria, se não fosse por um problema. De tempos em tempos, o correio (o servidor Telegram) às vezes fecha para o almoço e depois se move. E em sua primeira opção (pesquisa), ocorre uma tragédia, que no mundo real dos bots termina com pairar e fracassar.
No segundo caso, a “caixa de correio” com o endereço (webhook) não acontece. Porque nem você, nem seu bot, não vão a lugar algum, apenas esperam. E você não se importa para onde os correios se mudaram, porque o carteiro traz correspondência para você.
Assim, em termos de quantidade de código (veja o link acima), a primeira opção parece mais simples. E o segundo é mais lógico, mas mais difícil. Para sua implementação, você precisa obter um endereço, confirmar sua autenticidade e aumentar o servidor da Web, para o qual as mensagens do Telegram chegarão.
Obviamente, para a primeira opção, é possível adicionar manipulação de exceção ao código. Por exemplo, se o email estiver fechado, aguarde e aguarde. Mas a Internet afirma que todos os mesmos robôs com pesquisas são apenas para jogar.
No começo, não acreditava que o problema fosse tão sério. E ele optou pela pesquisa, sugerindo que um dia eu a reescreverei nos webhooks. Mas isso não funcionou. No meu computador doméstico com o macOS, o bot funcionou sem problemas por uma hora e duas (é claro, com uma VPN) e não travou. Mas assim que o transferi para o servidor em nuvem no Linux, ele não funcionou por 20 minutos. Tentei resolver esse problema de maneiras e configurações diferentes, mas recebi apenas um código de erro diferente. Selawy, este é o Telegram. Tendo perdido um dia, tive que pegar webhooks, sem demora. No final, eu queria lançar o bot no servidor agora, e não em um ano.
Reescrevendo código no webhook
O webhook não é tão assustador quanto é pintado.
Se você já possui um código bot com sondagem, não será difícil copiá-lo para o webhook. Compare os códigos dos exemplos da biblioteca pyTelegramBotAPI. Você encontrará a interseção do código. As linhas 13-25 do primeiro exemplo são iguais às linhas 56-67 do segundo exemplo . Esta é uma unidade lógica responsável pelo processamento de comandos, mensagens e respostas. Nesse caso, o exemplo é muito simples, mas reflete a essência principal.
Assim, o bloco lógico do bot deve ser mantido inalterado, e o restante deve ser alterado usando o código banal de cópia / cópia fora do bloco lógico do segundo exemplo (ou seja, as linhas de cópia 1-55 e 70-87). Se você observar o código que está copiando, poderá descobrir facilmente que, usando a biblioteca aiohttp, seu bot instala um servidor http e começa a escutar a porta alocada para essa porta, enquanto o módulo ssl Python é responsável pela criptografia e pelos certificados. Além do aiohttp, existem outras bibliotecas semelhantes, cujos exemplos podem ser encontrados aqui .
Então Temos um bot com webhook. Resta fazer o upload para o servidor e executar, recebendo simultaneamente dados para preencher os valores vazios no código API_TOKEN, WEBHOOK_HOST, WEBHOOK_PORT, WEBHOOK_SSL_CERT, WEBHOOK_SSL_PRIV. Por trás de cada um desses valores há um determinado procedimento com um significado secreto.
Registrar bot no Telegram
Vamos começar com o token de bot. Para obtê-lo, acesse o messenger Telegram e conecte-se ao bot @BotFather. Digite o comando “/ newbot”. Em resposta, o BotFather nos pede para inserir o nome e o nome de usuário do nosso bot e envia um token cobiçado no formato “712308912: DLGSteczdUnPdnNYLzNikaGOhome7l9q3vova” (é claro, você terá um nome diferente). Salvamos o token, não o mostramos a ninguém. No código, atribuímos à variável API_TOKEN.
Onde postar? Heroku vs Google Cloud Platform
Algumas palavras sobre o tormento de escolher um serviço de nuvem. Existem muitos exemplos na Internet em que os robôs de telegrama estão hospedados no Heroku. Heroku é uma plataforma PaaS (plataforma como serviço). Você carrega o código no GitHub e, a partir daí, no Heroku . E seu bot começa a funcionar imediatamente. Não há necessidade de instalar o servidor, Python e bibliotecas, tudo já foi feito para você. Pelo menos, idealmente. Essa solução também foi recomendada por um de meus amigos. Mas eu recusei.
Pelo que entendi, a principal mensagem das recomendações do Heroku em muitos manuais de "bot de 30 minutos" é a disponibilidade de um plano tarifário gratuito no Heroku. Mas, se você observar atentamente, esse plano é muito limitado e não permitirá a implantação de um bot gratuito que funcionaria dia e noite.
Ao contrário do Heroku, o Google Cloud Platform (GCP) oferece um ano inteiro de trabalho gratuito em todos os serviços dentro de US $ 300. Por esse valor para o ano, muitas coisas que você pode tentar. Na minha opinião, este é um presente maravilhoso, especialmente para quem está envolvido em ciência de dados. E, é claro, o GCP também é PaaS, uma lista completa de serviços está aqui . Existem soluções sem servidor, como no Heroku. Eu escolhi um caminho mais conservador para ter mais controle no futuro, a saber, a solução de servidor do Compute Engine no GCP.
Plataforma de nuvem do Google
Projeto, instância, ip estático, porta
Crie um projeto e servidor
Vamos ao GCP, selecione "Começar de graça" e siga as instruções. Se fizermos tudo certo, teremos uma conta no valor de US $ 300 e até o primeiro projeto criado. Selecionamos este projeto ou criamos outro no menu superior, o que não é difícil. E depois vá para a guia "Compute Engine / VM Instance" no menu lateral que é aberto.
Clique em "CREATE INSTANCE" e selecione a configuração do servidor, por exemplo, conforme mostrado na captura de tela abaixo. Você pode escolher uma micro configuração e, em seguida, custará apenas US $ 4 por mês. Você também pode embaralhar, os fundos serão debitados de um presente do Google por US $ 300.
Como resultado, chegamos.
Tornando o endereço IP estático
Na coluna "IP externo", vemos o endereço que direcionamos para a variável WEBHOOK_HOST em nosso bot (neste exemplo, é 35.224.231.90). Mais tarde, receberemos um certificado SSL neste endereço. Se você pretende usar o bot por um longo período de tempo (mesmo se alterar o servidor no GCP), recomendo que este endereço IP esteja estático para salvá-lo ao alternar de uma instância para outra. Isso é feito na seção "VPC / endereços IP externos".
Alteramos o campo "Tipo" de "Efêmero" para "Estático", atribuindo um nome a um endereço estático para que você não se confunda mais tarde se tiver uma dúzia de endereços IP posteriormente.
Porta aberta
Para que o webhook funcione corretamente, precisamos abrir a porta na qual o Telegram baterá. Atualmente (julho de 2019), o Telegram suporta as seguintes portas: 443, 80, 88, 8443. Mais detalhes, você pode ver o guia completo do Telegram nos webhooks aqui . Abriremos a porta 8443. Em nosso bot, esse valor já está atribuído à variável WEBHOOK_PORT. Resta configurar a regra de firewall no GCP para nossa instância do webhook-bot. Como fazer isso? Vá para a guia "Regras da VPC / Firewall" e clique em "CRIAR REGRA DO FIREWALL".
E crie uma regra, conforme mostrado na captura de tela abaixo.
Nós nos conectamos ao servidor, instalamos bibliotecas
Isso conclui a configuração básica do servidor no Google Cloud Platform. Temos uma conta no GCP, criamos um projeto, criamos um servidor (instância) baseado no Ubuntu 19.04 como parte do projeto, reservamos um endereço IP e abrimos a porta 8443.
Ainda resta pouco. Espero que possamos fazer sem uma descrição detalhada da parte de instalação do Python e das bibliotecas. Portanto, brevemente.
Vá para a guia GCP "Compute Engine / VM Instance" e, no campo "Connect", clique em "SSH".
Um terminal deve abrir no seu computador local com acesso à instância no GCP. Este é um ambiente normal do Ubuntu. Instale conda ou virtualenv , crie um ambiente virtual e instale o Python 3 com as principais bibliotecas. Além disso, instalamos as bibliotecas necessárias para a operação do nosso bot:
pip install pyTelegramBotAPI
pip install aiohttp
Após a instalação, não feche o terminal, precisamos dele.
Obtendo um certificado SSL autoassinado para IP
Devo dizer que na Internet o tópico dos certificados SSL para o Telegram é um horror sólido. Como Mikhail Lermontov disse a esse respeito:
“Cavalos misturados, pessoas,
E voleios de mil armas
Fundido em um longo uivo ... "
Se você ler o que eles escrevem na Internet, acontece que, se o bot não funcionar com webhooks, os certificados recebidos incorretamente serão os culpados. E, no entanto, eles não podem ser registrados no ip. Em geral, o Telegram não aceita certificados autoassinados. E mesmo que ele aceite o certificado, isso não significa que seu bot funcionará e o Telegram nem enviará um erro.
Essas são histórias de horror. Por que estou escrevendo isso? Além do fato de que essas histórias de horror me custaram outro dia perdido, eu até tive que pular assistindo "O Hobbit". Meu bot inicialmente se recusou a trabalhar em webhooks. Isso aconteceu devido aos meus erros ao colocá-lo no servidor (então eu não sabia disso). Mas, devido às histórias de horror acima, eu estava procurando o problema que não estava lá, focando em resolver problemas com certificados SSL que não estavam lá. Mas ganhei uma experiência inestimável. Registrei certificados para os próximos anos, tanto em nomes de domínio quanto em ip, autoassinados e pagos, na forma de dois arquivos e na forma de quatro. Eu descobri quais certificados entram e como fazer cadeias deles. Espero que isso seja útil.
Uma coisa é boa, você não precisa pisar neste ancinho, eu já fiz isso por você. Admito plenamente que, como não há "fumaça sem fogo", havia uma razão para tais histórias de horror. Mas para o dia atual, a situação parece ter se acalmado.
No momento, receberemos um certificado SSL da maneira mais conveniente para nós, nomeadamente no IP (e não no nome de domínio), autoassinado (ou seja, de graça) e custando apenas uma linha sem sites.
No terminal (que ainda não fechamos), prepare um diretório separado no qual salvaremos o arquivo de certificado e a chave privada. Vá para este diretório e chame o seguinte comando a partir dele.
$ openssl req -newkey rsa:2048 -sha256 -nodes -keyout url_private.key -x509 -days 3560 -out url_cert.pem
Em resposta, você receberá solicitações para preencher vários campos simples. Preencha-os no exemplo abaixo. Mas, é claro, indique corretamente o código do seu país, região, cidade, nome da empresa (se houver), substitua seu IP e seu email.
Como resultado, você obterá dois arquivos no diretório a partir do qual você executou este comando. Um arquivo url_cert.pem é o seu certificado e a segunda chave privada é url_private.key. No código bot, as variáveis WEBHOOK_SSL_CERT e WEBHOOK_SSL_PRIV são alocadas para elas, respectivamente. Não se esqueça de inserir caminhos de acesso a esses arquivos junto com os nomes. Baixe cópias e guarde-as para referência futura.
Não feche o terminal.
Registrar webhook no Telegram
Registrando um webhook com um certificado autoassinado
Talvez esta seja a parte mais interessante de "O que o Telegram dirá?". Sem preâmbulos, basta dirigir o seguinte comando ao seu terminal. Substitua o endereço IP pelo seu; não toque na porta 8443. Insira o token recebido do BotFather entre "/ bot" e "/ setWebhook") em vez de YOUR-TOKEN. Execute o comando no diretório em que os certificados estão armazenados.
$ curl -F "url=https://35.224.231.90:8443" -F "certificate=@url_cert.pem" https://api.telegram.org/botYOUR-TOKEN/setWebhook
Se tudo estiver correto, você receberá no terminal uma mensagem concisa do Telegram de que o webhook está instalado.
Registrando um webhook com o certificado "correto"
Se você não tiver um certificado autoassinado, poderá instalar o webhook com o seguinte comando diretamente do navegador.
https://api.telegram.org/botYOUR-TOKEN/setWebhook?url=https://YOUR.DOMAIN:8443/YOUR-TOKEN/
Observe que seu token é indicado duas vezes. Além disso, é importante que YOUR.DOMAIN seja especificado conforme mostrado no certificado. Por exemplo. Registrei o domínio mydreem.com, o registrador me emitiu um certificado SSL para o domínio www.mydreem.com. Em vez de YOUR.DOMAIN, você precisa especificar o último www.mydreem.com.
Como verificar se o webhook está instalado?
Você pode verificar se o webhook está instalado no navegador com o seguinte comando:
https://api.telegram.org/botYOUR-TOKEN/getWebhookInfo
Isso funciona para todos os casos. Em resposta, você deve obter algo assim, caso o webhook esteja instalado e o bot esteja executando:
{"ok":true,"result":{"url":"https://35.224.231.90:8443/712308912:DLGSteczdUnPdnNYLzNikaGOhome7l9q3vova/","has_custom_certificate":true,"pending_update_count":0,"max_connections":40}}
Ou assim, quando o webhook está instalado, mas o bot não funciona (não está em execução):
{"ok":true,"result":{"url":"https://35.224.231.90:8443/712308912:DLGSteczdUnPdnNYLzNikaGOhome7l9q3vova/","has_custom_certificate":true,"pending_update_count":2,"last_error_date":1564506964,"last_error_message":"Connection refused","max_connections":40}}
Como redefinir o webhook?
Às vezes, pode ser necessário alterar o certificado do bot, por exemplo, no caso de mudar para outro servidor (domínio). Em seguida, o token permanece e o certificado é alterado (o webhook é reinstalado). Ou torna-se necessário executar o bot não no webhook, mas na pesquisa (se o webhook estiver instalado, a pesquisa não funcionará). Nos dois casos, um comando que "redefine" o webhook é útil:
https://api.telegram.org/botYOUR-TOKEN/setWebhook
Agora está tudo pronto para carregar o código no servidor e iniciar o bot. Se você é um mestre do jogo na linha de comando com dez dedos, não será difícil para você. E em um minuto seu bot funcionará. Caso contrário, a próxima seção ajudará a facilitar um pouco a tarefa de carregar / baixar arquivos no servidor e gerenciá-los.
Cloud Shell ou "Drop Dead Beautiful"
É difícil para mim, como pessoa longe da administração do sistema, entender por que, na era do triunfo da inteligência artificial, ainda nos comunicamos com os servidores de linha de comando como nos velhos tempos no computador da UE / SM. Suponha que haja razões desconhecidas para meros mortais. Então, um fenômeno como o Cloud Shell no GCP deve ser aceito com grande alegria. Essa ferramenta permite, embora com muletas, mas para facilitar um pouco o trabalho dos não iniciados. Embora possa causar danos se você não conhecer algumas das nuances.
O Cloud Shell fornece acesso aos recursos da nuvem na linha de comando diretamente do navegador. Você pode fácil gerencie seus projetos e recursos sem instalar o Google Cloud SDK ou outras ferramentas em seu sistema (as duas últimas frases são retiradas da página deles, elas são "facilmente" riscadas por mim). Como gerenciar seus projetos a partir da linha de comando pode ser encontrado aqui . Mas o principal para nós não é isso. Inicie o Cloud Shell (veja o gif abaixo, retirado do google).
Você está conectado ao Cloud Shell. Agora, se você clicar no botão em forma de lápis, o "editor de texto da versão beta" será aberto.
No menu "Ajuda / Sobre", você pode descobrir que é "theia-editor-for-cloudshell-preview 0.0.1". No final do artigo, não vou me aprofundar nos recursos de trabalho com este editor. Vou destacar apenas pontos-chave. Este não é apenas um editor para vários idiomas (verificado apenas com Python), mas também um gerenciador de arquivos. Você pode organizar facilmente o compartilhamento de arquivos entre o Cloud Shell e o computador local. Você pode transferir arquivos e diretórios dentro do espaço do Cloud Shell com o mouse.
Observe que não escrevi em nenhum lugar acima do que, usando o editor, você pode editar e gerenciar arquivos no seu servidor (instância). Mas mesmo isso é suficiente para facilitar nossa vida. E mais sobre isso abaixo. E agora vou lhe contar uma coisa importante sobre o Cloud Shell. Isso deve ser entendido para não entrar na bagunça, como aconteceu comigo.
O Cloud Shell é um servidor baseado no Debian com 5 GB de espaço em disco e 1.7 GB de RAM. Alguns softwares já estão pré-instalados nele (incluindo Python). O Cloud Shell pode ser facilmente confundido com a sua instância, instale o condda nele, crie um ambiente e execute o bot. E, se o bot estiver pesquisando, ele funcionará. Se estiver no webhook, não funcionará, porque todas as portas no Cloud Shell estão fechadas! E quantas não abrem portas na instância, elas não aparecerão no Cloud Shell.
Devido à minha inexperiência juvenil e descuido, caí nessa armadilha e tentei entender por um longo tempo por que o Telegram não vê meu bot com um webhook. Então fiquei muito chateado. Mas a esposa se aqueceu e os filhos tranquilizaram, e este artigo apareceu.
A propósito, o Cloud Shell existe fora do espaço e do tempo (uma piada próxima à verdade). Se você excluir todas as instâncias e projetos de sua casa, seu Cloud Shell continuará existindo por mais 120 dias com tudo o que você carregou. Não confunda isso com o backup de seus servidores.
Então Previsto, depois armado. E agora podemos falar sobre comodidades e conhecer alguns comandos úteis.
Por exemplo, se você quiser usar o Cloud Shell como um terminal para acessar seu servidor (por exemplo, webhook-bot), será necessário ativar sua instância na linha de comando:
$ gcloud compute ssh webhook-bot --zone us-central1-a
Depois disso, você se encontra na linha de comando do seu servidor. Você pode retornar ao Cloud Shell com o comando "exit". Suponha que você queira copiar alguns arquivos do Cloud Shell para uma instância. Para fazer isso, no prompt de comando do Cloud Shell (não uma instância), digite o seguinte comando:
$ gcloud compute scp --recurse ~/telebot/my_favorite_robot.py webhook-bot:~/telebot --zone us-central1-a
Se você alterar a fonte com o destino, ocorrerá a cópia da instância para o Cloud Shell. No exemplo abaixo, copiamos o arquivo “ex1.py” do diretório “/ examples” do servidor “webhook-bot” para o diretório “/ telebot2” do Cloud Shell:
$ gcloud compute scp --recurse webhook-bot:~/examples/ex1.py --zone us-central1-a ~/telebot2
Esses e outros comandos de compartilhamento de arquivos podem ser encontrados aqui . Você pode trocar não apenas arquivos, mas também diretórios inteiros. Como resultado, obtemos o seguinte esquema que facilita nossa vida. No computador local, copiamos os arquivos clicando em alguns botões do mouse no Cloud Shell através do gerenciador de arquivos do editor “theia-editor-for-cloudshell-preview 0.0.1”. E então redirecionamos isso para o nosso servidor (instância) com a linha de comando. Se precisarmos editar algo rapidamente, podemos fazê-lo no mesmo editor no Cloud Shell e fazer upload de arquivos com o mesmo comando para o servidor. Acontece rapidamente.
Acredito que existem maneiras mais elegantes e convenientes de trocar e gerenciar arquivos para um servidor em nuvem no GCP em todos os aspectos (sem a instalação de programas adicionais no computador local). Talvez através do Cloud Storage . Francamente, passei apenas algumas horas pesquisando e testando esse problema. Portanto, ficaria muito grato se você compartilhar suas idéias ou soluções de trabalho nos comentários.
Então Carregamos os arquivos no servidor (instância). E, se você ainda não lançou o bot, é hora de fazer isso acessando o terminal do servidor, ativando o ambiente virtual necessário e digitando um comando como “python my_webhook_bot.py”. Tudo deve funcionar. Para que o bot continue funcionando quando o terminal estiver fechado, ele precisa ser iniciado em segundo plano. Por exemplo, "nohup python my_webhook_bot.py &". A questão de como tirar o processo de segundo plano e concluí-lo, deixo para você, a menos que você já saiba.
Conclusão
Espero que este artigo tenha sido útil para você, ajudou a economizar tempo e a evitar os erros que cometi ao escrever um bot de telegrama com webhooks e colocá-lo no servidor. Tudo o que foi descrito no artigo, eu passei por mim e, no momento em que escrevi, de julho a agosto de 2019, funcionou exatamente assim. Quero expressar uma gratidão especial a Mikhail Krutikov por navegar em conjunto nas extensões dos serviços do GCP e por ajudar a realizar uma série de verdades importantes. Estou aberto a perguntas, discussões e serei grato pelo conselho nos comentários deste artigo. Ou sinta-se à vontade para me escrever no Telegram @Eduard_Lanchev .
Até o último momento, estava em aberto a questão de saber se eu deveria dar um link para o meu bot de telegrama. Amigos me convenceram de que valia a pena. Você pode conversar com meu bot em @AelitaSoccerBot . O bot está no começo da jornada e ainda resta muito trabalho a ser feito. Portanto, escreva, se algo estiver errado, escreva se você deseja compartilhar sua experiência ou dar conselhos. Minha gratidão não terá limites dentro de limites razoáveis. Nota Até o final de 2019, o bot foi desativado devido à falta de tempo para seu suporte e desenvolvimento.
E, no final, gostaria de desejar sucesso a todos os botovods e meus colegas, datacientistas!
Links úteis
- API de bot de telegrama
- Exemplos de código de bot
- python-telegram-bot
- pyTelegramBotAPI
- AIOGram
- ssl - wrapper TLS / SSL para objetos de soquete
- Heroku
- Plataforma de nuvem do Google
- Mecanismo de computação do Google
- Guia Maravilhoso de Marvin para Todas as Coisas Webhook
- Conda
- Virtualenv
- Concha de nuvem
- A ferramenta de linha de comando gcloud compute
- Transferindo arquivos usando a ferramenta de linha de comando gcloud
- Armazenamento na nuvem do Google