Wir schreiben einen Bot-Chat für VKontakte auf Python mit Longpoll

Jetzt sind Bots alltäglich geworden und befinden sich in jedem Schritt. Wenn Sie Ihren Bot jedoch im sozialen Netzwerk von VKontakte benötigen, ist dies einfach zu implementieren.

Wir werden brauchen:

  1. Python
  2. VK Api
  3. Wunsch

Genau das Richtige für Anfänger


Wie installiere ich Python?
Laden Sie das Installationsprogramm herunter und führen Sie es aus.

Wo soll ich diesen Code schreiben?
Zu einem Textdokument mit der Erweiterung .py

Und was soll ich schreiben?
Ja, auch mit einem Notebook. Persönlich empfehle ich Notepad ++

Und wie läuft man?
Über die Kommandozeile.
python \.py

Wie funktioniert es


Alles ist sehr einfach, in vk api gibt es so etwas wie longpool, es funktioniert so:
Long Polling ist eine Technologie, mit der Sie mithilfe von "langen Abfragen" Daten zu neuen Ereignissen empfangen können. Der Server empfängt die Anforderung, sendet jedoch keine sofortige Antwort darauf, sondern nur, wenn ein Ereignis eintritt (z. B. wenn eine neue Nachricht eintrifft) oder das angegebene Zeitlimit abläuft.
Auf Russisch senden wir eine Anfrage an den Server, und er stößt wiederum VKontakte an, wenn dort etwas passiert. Beispielsweise erhalten wir eine Nachricht, er rennt und erzählt uns davon. Daraus werden wir tanzen.

Technische Umsetzung


Erstens müssen wir im Kontakt beweisen, dass wir wir sind und nicht jemand anderes. Dies geschieht sehr einfach.

 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 

Beachten Sie, dass die Jungs von VK empfehlen, eine Telefonnummer als Login zu verwenden. Andernfalls können Sie auf eine Anti-Bot-Prüfung stoßen, bei der Sie aufgefordert werden, die fehlenden Nummern aus der Telefonnummer einzugeben.

Wenn der Bot in einer Gruppe sitzt, sieht die Autorisierung anders aus.

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


- Was ist ein Token?
- So etwas von Tsiferok und Buchstaben, die Sie in den Gruppeneinstellungen benötigen. Öffnen Sie dazu einfach den Abschnitt "Community-Verwaltung" ("Seite verwalten", wenn Sie eine öffentliche Seite haben), wählen Sie die Registerkarte "Mit API arbeiten" und klicken Sie auf "Zugriffsschlüssel erstellen".

Rufen Sie jetzt Longpool an.

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

Nachrichten enthalten möglicherweise nicht nur den von Ihnen angegebenen Text. Zum Beispiel:

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

Sie können auch Bilder anhängen.

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

Sie können sich viele interessante Dinge einfallen lassen, aber denken Sie selbst darüber nach, und ich sage nur Folgendes: Links können in Teile unterteilt werden. Zum Beispiel:

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

und niemand hat uns verboten, eine Antwort von einem Benutzer am Beispiel von Wikipedia zu erhalten:

 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 zu Beispielen und Dokumentation


Beispiel Bot arbeitet an DuckDuckGo API
VK API Anwendungsfälle (allgemein)
VK API-Dokumentation Eins , Zwei

Darauf werde ich mich von dir verabschieden. Gute Codierung.

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


All Articles