Créer un bot Python Telegram et le déployer sur une machine virtuelle

Qui a besoin de chatbots?

Le marché des chatbots en Russie se développe à un rythme effréné et devrait croître de 30% par an au cours des trois prochaines années. En 2020, le nombre de demandes de chatbots a augmenté de 17% par rapport à 2019. Les robots vocaux sont très demandés, le nombre de demandes les concernant a quadruplé. En 2021, le nombre de demandes de chatbots devrait augmenter de 15 à 20% de la part d'organisations du secteur public, de l'éducation, de la médecine, de la logistique, de la vente au détail et du commerce électronique, des entreprises industrielles et minières.





Pas

  1. Nous créons notre robot de télégramme





  2. Nous écrivons le code de nos tâches et testons ses performances





  3. Choisir un service de machine virtuelle fiable





  4. Nous transférons notre bot sur une machine virtuelle pour ses travaux ultérieurs.





  5. Nous mettons en place le fonctionnement continu du bot.





Étape 1. Création d'un bot dans Telegram

Je décrirai les trois premières étapes aussi brièvement que possible, car il existe de nombreux articles sur ce sujet et généralement cela ne pose aucune difficulté pour les utilisateurs. Pour créer un bot, nous devons écrire BotFather





Étape 2. Écrivons un chatbot simple et testons-le.

Pour le travail, nous utiliserons la bibliothèque telebot, qui peut être installée à l'aide de la commande suivante:





$ pip install pytelegrambotapi







Pour installer d'autres bibliothèques, si vous n'êtes pas limité aux fonctionnalités de base, Dieu vous aidera.





Écrivons un robot simple qui nous enverra en réponse à divers Emoji leurs copies PNG floues:





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
      
      



Notre bot est prêt, il reste maintenant à le tester. Suivez le lien envoyé par 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 Le sujet des télégrammes de bot est devenu très intéressant et pertinent ces derniers temps, je serai donc heureux d'entendre des critiques sensées à propos de mon premier article en ce moment. Si vous avez des idées pour en écrire de nouvelles, je serai ravie de les entendre.





Je veux donner un exemple de mon travail conjoint avec un ami sur la création d'un bot capable de faire des signatures électroniques en 2 secondes: Télégramme: Contact @Facsimile_bot








All Articles