我们使用longpoll在python上为VKontakte编写了机器人聊天程序

现在,机器人已变得司空见惯,并且步步为营,但是如果您在VKontakte社交网络上需要您的机器人,那么这很容易实现。

我们将需要:

  1. 巨蟒
  2. VK Api
  3. 欲望

好吧,只适合初学者


如何安装Python?
下载 ,运行安装程序。

在哪里写这段代码?
到扩展名为.py的文本文档

那要写什么呢?
是的,即使是笔记本也可以。 我个人建议使用记事本++

以及如何运行?
通过命令行。
python \.py

如何运作?


一切都很简单,在vk api中有一个叫做longpool的东西, 它的工作方式如下:
长轮询是一项允许您使用“长查询”接收有关新事件的数据的技术。 服务器接收到请求,但不会立即发送响应,而仅在事件发生(例如,新消息到达)或指定的超时时间到时才发送响应。
用俄语,我们向服务器发送一个请求,然后,如果那里发生了某些事情,他反过来戳VKontakte,例如,我们收到一条消息,他运行并告诉我们。 由此我们将跳舞。

技术实施


首先,我们需要证明自己是我们自己,而不是其他任何人。 这非常简单。

 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 

请注意,VK的人员建议使用电话号码作为登录名。 否则,您可能会遇到反机器人检查,即要求您输入电话号码中缺少的数字的检查。

如果漫游器将坐在一个组中,则授权看起来会有所不同。

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


-什么是代币?
-您需要在分组设置中获取来自tsiferok和字母的信息。 为此,只需打开“社区管理”部分(如果有公共页面,则打开“管理页面”),选择“使用API​​”选项卡,然后单击“创建访问密钥”。

现在致电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=' ' ) 

邮件可能不仅包含您指定的文本。 例如:

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

您还可以附加图片。

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

您可以想出很多有趣的事情,但是请自己考虑一下,我只是说:链接可以分为几部分。 例如:

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

而且没有人禁止我们接受用户对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 

链接到示例和文档


使用DuckDuckGo API的示例机器人
VK API用例(常规)
VK API文档

为此,我将告别您。 良好的编码。

Source: https://habr.com/ru/post/zh-CN428507/


All Articles