Criar um bot Python Telegram e implantá-lo em uma máquina virtual

Quem precisa de chatbots?

O mercado de chatbot na Rússia está crescendo em um ritmo vertiginoso e deve crescer 30% ao ano nos próximos três anos. Em 2020, o número de solicitações de chatbots aumentou 17% em relação a 2019. Os bots de voz estão em grande demanda, o número de solicitações por eles quadruplicou. Em 2021, espera-se que o número de solicitações de bots de bate-papo cresça em 15-20% de organizações do setor público, educação, medicina, logística, varejo e comércio eletrônico, empresas industriais e de mineração.





Degraus

  1. Nós criamos nosso bot de telegramas





  2. Nós escrevemos o código para nossas tarefas e testamos seu desempenho





  3. Escolhendo um serviço de máquina virtual confiável





  4. Transferimos nosso bot para uma máquina virtual para seu trabalho posterior.





  5. Configuramos o funcionamento contínuo do bot.





Etapa 1. Criando um bot no Telegram

Descreverei as três primeiras etapas da forma mais sucinta possível, pois existem muitos artigos sobre esse assunto e geralmente isso não causa dificuldades para os usuários. Para criar um bot, precisamos escrever BotFather





Etapa 2. Vamos escrever um chatbot simples e testá-lo.

Para o trabalho, usaremos a biblioteca telebot, que pode ser instalada usando o seguinte comando:





$ pip install pytelegrambotapi







Para instalar outras bibliotecas, se você não se limitar às funcionalidades básicas, Deus o ajudará.





Vamos escrever um bot simples que nos enviará em resposta a vários emojis suas cópias PNG desfocadas:





import telebot
import PIL
from PIL import Image
from requests import get

#   
bot = telebot.TeleBot('1653707062:AAHxX29RP5HY-nVb21SSD8ZRbKpxKseSyS4')

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, '  Emoji,    .)
                     
@bot.message_handler(content_types=['text'])
def send_text(message):
    if message.text.lower() == '  ':
        img = open('   1.png', 'rb')
        
        bot.send_document(message.chat.id, img) 
    elif message.text.lower() == '  ':
        img = open('   2.png', 'rb')
        bot.send_document(message.chat.id, img)    
   
    else:
        bot.send_message(message.chat.id, ',       Emoji')

bot.polling()
#    ,      habr
      
      



Nosso bot está pronto, agora falta testá-lo. Siga o link enviado por BotFather





, . : , . - .





3. !

?

( ) — , (, , ). . , , , .





24 7





?

. , . , , .





:





  • Mail cloud solutions - 3000 . . ( )





  • Yandex.Cloud - 2000 . .





  • Google Cloud Platform - 300$ .





, .





.

, - .





.

SSH. , ssh-.





:





$ ssh-keygen







Enter. . public-key .pub. « »





.





:





ssh -i ~/.ssh/ ubuntu@ IP







: ssh -i ~/.ssh/my_key ubuntu@22.222.222.222







:





, , .





  • Python. :





$ sudo apt update
$ sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
$ wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
$ tar -xf Python-3.8.5.tgz
$ cd Python-3.8.5
$ ./configure --enable-optimizations
$ make  # ~15 
$ sudo make altinstall
$ cd /home

      
      



  • :





    $ python3.8 -m pip install --upgrade pip 
    $ pip install virtualenv
    $ mkdir 
    $ cd 
    $ virtualenv venv
    $ source venv/bin/activate
    $ python -V
    $ deactivate
    
          
          



  • Redis-server:





    $ sudo apt install redis-server
    $ redis-cli
    
          
          



, Redis-server, «ping»





PONG, , !





  • . CyberDuck





SFTP, IP , !! ssh-, .





  • , Python, . . .





  • , , .





    $ cd /home//  #    
    $ source venv/bin/activate  #  
    $ pip install -r requirements.txt  #  
    $ python main.py  #  
    
          
          



, , deactivate. . .





5. .

: nano /lib/systemd/system/.service







[Unit]
Description=  
After=network.target

[Service]
EnvironmentFile=/etc/environment
ExecStart=/home//venv/bin/python main.py
ExecReload=/home//venv/bin/python main.py
WorkingDirectory=/home//
KillMode=process
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

      
      



CTRL+O -> Enter -> CTRL+X . .





  • : , .





    sudo systemctl enable 
    sudo systemctl start 
    
          
          



! 24/7, , . - , , . , «sudo» ( )





PS: O tópico de telegramas de bot se tornou muito interessante e relevante recentemente, então ficarei feliz em ouvir críticas sãs sobre meu primeiro artigo neste momento. Se você tiver alguma idéia para escrever novos, ficarei feliz em ouvi-los.





Quero dar um exemplo do meu trabalho conjunto com um amigo na criação de um bot que pode fazer assinaturas eletrônicas em 2 segundos: Telegrama: Entre em contato com @Facsimile_bot








All Articles