longpollを使用して、PythonでVKontakteのチャットボットを作成します。

現在、ボットは一般的になり、あらゆる段階にありますが、VKontakteソーシャルネットワークでボットが必要な場合は、簡単に実装できます。



必要なもの:



  1. Python
  2. VK Api
  3. 欲望


まあ、初心者にはちょうどいい



Pythonのインストール方法は?
ダウンロード 、インストーラーを実行します。



このコードを書く場所は?
拡張子が.pyのテキストドキュメントへ



そして何を書く?
はい、ノートブックでも。 個人的には、 メモ帳++をお勧めします



そして、実行方法は?
コマンドラインから。

python \.py







どのように機能しますか?



すべてが非常にシンプルです。vkapiには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ドキュメントOneTwo



これで私はあなたに別れを告げます。 良いコーディング。



All Articles