Nós escrevemos um chat de bot para o VKontakte em python usando longpoll

Agora os bots tornaram-se comuns e estão a cada passo, mas se você precisar do seu bot na rede social VKontakte, isso será fácil de implementar.

Vamos precisar de:

  1. Python
  2. VK Api
  3. Desejo

Bem, ideal para iniciantes


Como instalar o Python?
Baixe , execute o instalador.

Onde escrever esse código?
Para um documento de texto com a extensão .py

E o que escrever?
Sim, mesmo com um notebook. Pessoalmente, eu recomendo o Notepad ++

E como correr?
Através da linha de comando.
python \.py

Como isso funciona?


Tudo é muito simples, no vk api existe uma coisa chamada longpool, funciona assim:
A pesquisa longa é uma tecnologia que permite receber dados sobre novos eventos usando "consultas longas". O servidor recebe a solicitação, mas não envia uma resposta imediatamente, mas somente quando ocorre um evento (por exemplo, uma nova mensagem chega) ou o tempo limite especificado expira.
Em russo, enviamos uma solicitação ao servidor e ele, por sua vez, cutuca VKontakte se algo acontecer lá, por exemplo, recebemos uma mensagem, ele executa e nos conta sobre isso. A partir disso, vamos dançar.

Implementação técnica


Primeiro, precisamos provar em contato que somos nós, e não mais ninguém. Isso é feito de maneira muito simples.

 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 

Observe que os funcionários da VK recomendam o uso de um número de telefone como login. caso contrário, você poderá executar uma verificação anti-bot, aquela em que é solicitado que você digite os números ausentes do número de telefone.

Se o bot estiver em um grupo, a autorização parecerá diferente.

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


- O que é um token?
- Uma coisa do tsiferok e das letras que você precisa obter nas configurações do grupo. Para fazer isso, basta abrir a seção "Gerenciamento da comunidade" ("Gerenciar a página" se você tiver uma página pública), selecione a guia "Trabalhar com API" e clique em "Criar chave de acesso".

Agora ligue para 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=' ' ) 

As mensagens podem não apenas conter o texto que você especificar. Por exemplo:

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

Você também pode anexar fotos.

 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=' ' ) 

Você pode inventar muitas coisas interessantes, mas pense por conta própria, e vou apenas dizer: os links podem ser divididos em partes. Por exemplo:

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

e ninguém nos proibiu de receber uma resposta de um usuário no exemplo da 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 

Links para exemplos e documentação


Exemplo de bot trabalhando na API DuckDuckGo
Casos de uso da API VK (geral)
Documentação da API VK Um , Dois

Por isso vou dizer adeus a você. Boa codificação.

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


All Articles