Nous écrivons un chat bot pour VKontakte sur python en utilisant longpoll

Maintenant, les bots sont devenus monnaie courante et sont à chaque étape, mais si vous avez besoin de votre bot sur le réseau social VKontakte, cela est facile à mettre en œuvre.

Nous aurons besoin de:

  1. Python
  2. VK Api
  3. Désir

Eh bien, juste pour les débutants


Comment installer Python?
Téléchargez , exécutez le programme d'installation.

Où écrire ce code?
Vers un document texte avec l'extension .py

Et quoi écrire?
Oui, même avec un ordinateur portable. Personnellement, je recommande Notepad ++

Et comment courir?
Via la ligne de commande.
python \.py

Comment ça marche?


Tout est très simple, dans vk api il y a une telle chose, appelée longpool ça fonctionne comme ceci:
L'interrogation longue est une technologie qui vous permet de recevoir des données sur de nouveaux événements à l'aide de «requêtes longues». Le serveur reçoit la demande, mais ne lui envoie pas de réponse immédiatement, mais uniquement lorsqu'un événement se produit (par exemple, un nouveau message arrive) ou que le délai spécifié expire.
En russe, nous envoyons une demande au serveur et, à son tour, pousse VKontakte si quelque chose se passe là-bas, par exemple, nous recevons un message, il s'exécute et nous en parle. De là, nous danserons.

Implémentation technique


Premièrement, nous devons prouver en contact que nous sommes nous, et personne d'autre. Cela se fait très simplement.

 import vk_api import requests session = requests.Session() login, password = ' , email  ', ' ' vk_session = vk_api.VkApi(login, password) try: vk_session.auth(token_only=True) except vk_api.AuthError as error_msg: print(error_msg) return 

Remarque, les gars de VK recommandent d'utiliser un numéro de téléphone comme identifiant. sinon, vous pouvez exécuter un contrôle anti-bot, celui où vous êtes invité à entrer les numéros manquants du numéro de téléphone.

Si le bot s'assoit en groupe, alors l'autorisation est différente.

 import requests import vk_api vk_session = vk_api.VkApi(token='      ') 


- Qu'est-ce qu'un jeton?
- Une telle chose de tsiferok et de lettres que vous devez obtenir dans les paramètres du groupe. Pour ce faire, il suffit d'ouvrir la section "Gestion de communauté" ("Gérer la page" si vous avez une page publique), sélectionnez l'onglet "Travailler avec l'API" et cliquez sur "Créer une clé d'accès".

Appelez maintenant longpool.

 from vk_api.longpoll import VkLongPoll, VkEventType longpoll = VkLongPoll(vk_session) vk = vk_session.get_api() for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: # longpoll,    : if event.text == '  ' or event.text == '  ': #    if event.from_user: #    vk.messages.send( #  user_id=event.user_id, message=' ' ) elif event.from_chat: #    vk.messages.send( #  chat_id=event.chat_id, message=' ' ) 

Les messages peuvent non seulement contenir le texte que vous spécifiez. Par exemple:

 import datetime vk.messages.send( user_id=event.user_id, message=' : ' + str(now.strftime("%H:%M")) ) 

Vous pouvez également joindre des photos.

 attachments = [] from vk_api import VkUpload upload = VkUpload(vk_session) image_url = '  ' image = session.get(image_url, stream=True) photo = upload.photo_messages(photos=image.raw)[0] attachments.append( 'photo{}_{}'.format(photo['owner_id'], photo['id']) ) vk.messages.send( user_id=event.user_id, attachment=','.join(attachments), message=' ' ) 

Vous pouvez trouver beaucoup de choses intéressantes, mais pensez-y vous-même, et je dirai simplement que: les liens peuvent être divisés en parties. Par exemple:

 image_url = 'http://.com/uploads/' + event.text + '.png' 

et personne ne nous a interdit de recevoir une réponse d'un utilisateur sur l'exemple de Wikipedia:

 import wikipedia #  wikipedia.set_lang("RU") if event.text == '' or event.text == '' or event.text == '' or event.text == '' or event.text == 'Wikipedia' or event.text == 'wikipedia' or event.text == 'Wiki' or event.text == 'wiki': #          ...  wiki if event.from_user: #   KC vk.messages.send( user_id=event.user_id, message=' ' # " " ) elif event.from_chat: #    vk.messages.send( chat_id=event.chat_id, message=' ' # " " ) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: # longpoll if event.from_user: vk.messages.send( #    user_id=event.user_id, message='   : \n' + str(wikipedia.summary(event.text)) # "   "      api Wikipedia     ) break #   elif event.from_chat: #    vk.messages.send( chat_id=event.chat_id, message='   : \n' + str(wikipedia.summary(event.text)) # "   "      api Wikipedia     ) break #   continue 

Liens vers des exemples et de la documentation


Exemple de bot travaillant sur l'API DuckDuckGo
Cas d'utilisation de l'API VK (général)
Documentation de l'API VK One , Two

Sur ce, je vais vous dire au revoir. Bon codage.

Source: https://habr.com/ru/post/fr428507/


All Articles