Verwenden Sie Python, um einen WeChat-Roboter zu erstellen

einführen

Einführung

Dieses Programm extrahiert die internen Funktionen von WeChat, lädt dann Python in das Programm und exportiert diese Funktionen dann in Bibliotheksfunktionen, die in Python verwendet werden können.

Wenn das Programm startet, führt es main.py im Verzeichnis py_code aus, ähnlich wie Sie es in der Befehlszeile verwenden python main.py.

Jetzt wird das Py-Skript als Plug-In geladen. Legen Sie das Skript im Plugins-Verzeichnis ab, ignorieren Sie die Skripte, die mit _ beginnen, und laden Sie dann alle anderen Py-Skripte

Plug-in-Skripte sind in zwei Kategorien unterteilt. Py-Dateien, die mit msg beginnen, werden in deal_msg.py [Verarbeitung von Nachrichten] geladen, und andere Skripte werden in main.py geladen. Wenn Sie eine Nachricht erhalten müssen, um etwas zu tun, benennen Sie sie beginnend mit msg, andernfalls benennen Sie sie einfach beiläufig.

Alle von main.py geladenen Skripte werden im selben Thread ausgeführt. Wenn Sie mehrere Threads benötigen, erben Sie bitte threading.Thread im Skript, siehe check_friend.py

Das Programm exportiert eine Funktionsbibliothek, die in Python verwendet werden kann. Der Bibliotheksname ist wxfunction. Spezifische Funktionen finden Sie in der Funktionseinführung unten. Diese Bibliothek ist für andere Sprachen geschrieben und exportiert lediglich die Schnittstelle zur Verwendung durch Python

Habe bereits ein Plugin
  • Überprüfen Sie den Status aller Freunde (blockiert, gelöscht usw.): check_friend.py
  • Überwachen Sie Gruppennachrichten und lösen Sie Schlüsselwortwarnungen aus (Schlüsselwortregeln werden später hinzugefügt): msg_monitor_keyword.py
  • Senden Sie ab und zu eine Nachricht: _send_msg_timing.py
  • Den angegebenen Freunden automatisch antworten: msg_auto_reply.py
  • Speichern Sie Chat-Datensätze in der Postgre-Datenbank: msg_postgre.py
  • Automatische Sammlung
  • Erhalten Sie automatisch Freundschaftsanfragen
  • Chatdateien, Bilder usw. automatisch speichern.
  • Weitere Plug-Ins werden entwickelt
    Fügen Sie hier eine Bildbeschreibung ein
Integrierte Funktionen
  • Speichern Sie alle Dateien, Bilder, Videos, Stimmen und Emoticons
  • Wenn Sie den Speicherpfad ändern möchten, können Sie auf die gespeicherte Codedatei verweisen.
    Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein

Beispiel für das Versenden einer Nachricht

Wenn Sie beispielsweise alle fünf Minuten eine Nachricht senden möchten, lautet der Python-Code wie folgt (nach dem Ändern des Python-Codes müssen Sie die Software schließen und erneut öffnen, damit sie wirksam wird. WeChat muss sich nicht erneut anmelden.)

from threading import Timer

def sendmsg(interval):
    '''每隔interval秒给文件传输助手发一次消息, filehelper是文件传输助手的wxid'''
    wxfunction.SendTextMsg("filehelper", "测试消息!")
    timer = Timer(interval, sendmsg, args=(interval,))
    timer.start()

sendmsg(5*60)

SendTextMsg ist eine vom Programm exportierte Funktion zum Senden von Textnachrichten. Der erste Parameter ist wxid, die einzige intern von WeChat verwendete ID. Jede WeChat-ID verfügt über eine entsprechende wxid, die durch Abrufen der Freundesliste abgerufen werden kann. Der zweite Parameter ist der Inhalt der gesendeten Nachricht

Beispiel für den Empfang einer Nachricht

Wenn Sie beispielsweise eine Antwort von jemandem erhalten und ihm dann eine Nachricht senden möchten, funktioniert die Verarbeitung empfangener Nachrichten wie ein Docking-Roboter. Der Code sieht sich hauptsächlich Deal_msg.py an und die Startfunktion ist wie folgt

def run(self):
    while self.event.is_set():
        msg = self.wxfunction.popFromMsgQueue()
        if not msg:
            time.sleep(0.5)
            continue
        msg_data = json.loads(msg)
        msg_struct = ChatMsgStruct(**msg_data)
        self._deal_msg(msg_struct)

Der Code ist sehr einfach. Er fügt eine Nachricht im JSON-Format aus der Nachrichtenwarteschlange des Programms ein, konvertiert sie dann in eine Klasse und verarbeitet sie in der Methode _deal_msg. Der Vorteil der Konvertierung in eine Klasse besteht darin, dass ich die entsprechenden Felder der Nachricht in der Klasse definiert habe. Beim Schreiben von Code kann ich msg_struct.content verwenden, um ihn abzurufen, und der Editor vervollständigt ihn automatisch.

Sie müssen lediglich in der Methode _deal_msg feststellen, ob die wxid des Absenders die Person ist, der Sie antworten möchten, und dann wxfunction.SendTextMsg aufrufen, um ihm eine Nachricht zu senden.

Alle Features

Nachrichten erhalten
  • Freundschaftsnachrichten
  • Gruppennachricht
  • Benachrichtigungsnachrichten (Benachrichtigung über Mitglieder, die der Gruppe beitreten usw.)
  • Öffentlicher Account-Push (kann zur Überwachung öffentlicher Account-Beiträge verwendet werden)
  • Offizielle Kontonachrichten (Nachrichten, die von offiziellen Konten gesendet werden)
  • Freundschaftsanfrage
  • Erinnerungsnachricht zurückziehen
  • Gruppenankündigung
  • Nachricht übertragen
  • Zahlungsnachricht (Sie können eine für die automatische Kartenausstellung schreiben)
  • Live-Erinnerung für die öffentlichen Konten, denen Sie folgen
  • Aufforderung zum Abschluss des Uploads großer Dateien (wenn jemand anderes die Datei sendet)
  • Entdecken Sie selbst weitere Neuigkeiten
  • Auch fehlende Nachrichtentypen können erwähnt werden
Nachricht senden
  • Text senden
  • Bilder senden
  • Datei senden
  • Emoticon senden
  • Visitenkarte verschicken
  • XML-Nachricht senden
  • Sende ein Foto
  • Applet senden
  • Nachricht weiterleiten
Anti-Entzug
  • Integriert (öffnen Sie die Software, sie ist standardmäßig aktiviert und kann nicht ausgeschaltet werden)
gruppenbezogen
  • Holen Sie sich Gruppenmitglieder
  • Holen Sie sich den Spitznamen eines Gruppenmitglieds
  • Gruppenmitglieder löschen
  • Richten Sie Gruppenankündigungen ein
  • Gruppennamen ändern
  • Ändern Sie Ihren Gruppen-Spitznamen
  • Laden Sie Freunde in die Gruppe ein
Freund hinzufügen
  • Der Freundschaftsanfrage zustimmen (falls Python-Code so konfiguriert werden kann, dass er automatisch zustimmt)
  • Überprüfen Sie den Freundesstatus (Informationen zur Verwendung dieser Funktion finden Sie im Plug-in check_friend.py).
  • Suchen Sie nach Freunden (Sie können nach Mobiltelefonnummer oder WeChat-ID suchen)
  • Freund hinzufügen
Geld überweisen und erhalten
  • Übertragungen und Rückübertragungen empfangen (der Case-Python-Code kann so konfiguriert werden, dass er automatisch empfängt)
andere
  • Freundesnotizen ändern
  • Erhalten Sie Freundesdetails
  • Holen Sie sich eine Freundesliste
  • Erhalten Sie relevante Informationen über wxid
CDN-Download
  • Bilder herunterladen
  • Video herunterladen
  • Download-Datei
  • Stimme herunterladen
  • Laden Sie Emoticons herunter
ausstehendes Upgrade
  • Senden Sie eine Angebotsnachricht
  • Eine Nachricht schicken
  • Rede zum Text
  • Holen Sie sich Momente
  • Nachricht als gelesen markiert

Schritte

Vorbereitung
  1. Installieren Sie eine bestimmte Version (3.9.6.32) von WeChat in einem beliebigen Verzeichnis
  2. Installieren Sie die angegebene python-3.8.10.exe in einem beliebigen Verzeichnis. Wenn Sie es nicht verstehen, können die Installationsoptionen immer die Standardoptionen sein.
  3. Bearbeiten Sie die Konfigurationsdatei und ändern Sie hauptsächlich das WeChat-Installationsverzeichnis und das Python-Installationsverzeichnis
  4. Öffnen Sie die Software wxrobot.exe, klicken Sie auf der Softwareoberfläche auf „Hilfe“, um WeChat zu starten und sich anzumelden (wenn Sie keine Nachrichten abhören können, müssen Sie WeChat mit Administratorrechten ausführen, bevor Sie die Software ausführen).

Tipp 1: Die Python-Version muss nicht die angegebene Version 3.8.10 sein. Neuere Versionen sollten verwendbar sein, sie müssen jedoch 32-Bit-Python sein. Tipp 2: Sie müssen keine
Software verwenden, um WeChat zu starten. Sie können auch klicken die Verknüpfung, um es selbst zu starten. Allerdings müssen sowohl die Software als auch WeChat im Administratormodus ausgeführt werden. Andernfalls kann die Software die Programme anderer Benutzer nicht steuern.

Einführung in alle Funktionen

getSelfWxid

Funktionsprototyp: def getSelfWxid() -> str: ...
Funktion: Rufen Sie die wxid des WeChat ab, bei dem Sie sich angemeldet haben

getWeChatFilePath

Funktionsprototyp: def getWeChatFilePath() -> str: ...
Funktion: Abrufen des Speicherpfads von WeChat-Dateien (der Standardspeicherpfad von WeChat-Dateien in der Dateiverwaltung der WeChat-Einstellungen)

GetUsers

Funktionsprototyp: def GetUsers() -> List[dict]: ...
Funktion: Rufen Sie die aktuell angemeldete wxid, WeChat-ID und den Spitznamen ab

GetContactList

Funktionsprototyp: def GetContactList() -> List[list]: ...
Funktion: Liste der Freunde und Gruppen abrufen

popFromMsgQueue

Funktionsprototyp: def popFromMsgQueue() -> Union[str, None]: ...
Funktion: Pop eine Nachricht aus der Warteschlange für empfangene Nachrichten, der Nachrichtentyp ist JSON-String

SendTextMsg

Funktionsprototyp: def SendTextMsg(wxid:str, text:str) -> int: ...
Funktion: Textnachricht senden
Parameter:

  1. wxid: die wxid der anderen Partei
  2. Text: Textinhalt gesendet
SendXmlMsg

Funktionsprototyp: def SendXmlMsg(wxid:str, xml:str, dtype:int) -> int: ...
Funktion: XML-Nachricht senden, der Typ der empfangenen Nachricht ist 49, Sie sollten in der Lage sein, die XML-Datei herunterzunehmen und erneut zu senden. Es wurde nur das Versenden offizieller Account-Artikel getestet
. Parameter:

  1. wxid: die wxid der anderen Partei
  2. xml: XML-Inhalt gesendet
  3. dtype: Der Typ in XML kann aus XML analysiert werden
SendEmotionMsg

Funktionsprototyp: def SendEmotionMsg(wxid:str, path:str) -> int: ...
Funktion: Emoticon-Paket senden
Parameter:

  1. wxid: die wxid der anderen Partei
  2. Pfad: der absolute Pfad des Emoticon-Pakets, das ein unverschlüsseltes Emoticon-Paket oder ein verschlüsseltes Emoticon-Paket unter FileStorage\CustomEmotion sein kann
SendCardMsg

Funktionsprototyp: def SendCardMsg(wxid:str, xml:str) -> int: ...
Funktion: Visitenkarte eines Freundes senden. Sie können die folgende Funktion auch verwenden, um sie direkt über die wxid des Freundes zu senden.
Parameter:

  1. wxid: die wxid der anderen Partei
  2. xml: Die XML-Daten der Visitenkarte. Sie können sie zuerst senden und dann in der empfangenen Nachricht ausdrucken, um sie anzuzeigen.
SendCardMsgByWxid

Funktionsprototyp: def SendCardMsg(wxid:str, cardWxid:str) -> int: ...
Funktion: Visitenkarte eines Freundes senden
Parameter:

  1. wxid: die wxid der anderen Partei
  2. cardWxid: Die WXID des Freundes, die gesendet werden soll
SendPatMsg

Funktionsprototyp: def SendPatMsg(roomid:str, wxid:str) -> int: ...
Funktion: Eine PaiPai-Nachricht senden
Parameter:

  1. roomid: Gruppen-ID
  2. wxid: wxid der Person, die das Foto macht
SendImageMsg

Funktionsprototyp: def SendImageMsg(wxid:str, path:str) -> int: ...
Funktion: Bilder senden
Parameter:

  1. wxid: …
  2. Pfad: Absoluter Pfad des gesendeten Bildes
SendFileMsg

Funktionsprototyp: def SendFileMsg(wxid:str, path:str) -> int: ...
Funktion: Datei senden
Parameter:

  1. wxid: …
  2. Pfad: Absoluter Pfad der gesendeten Datei
SendAppMsg

Funktionsprototyp: def SendAppMsg(wxid:str, gappid:str) -> int: ...
Funktion: Mini-Programmnachricht senden
Parameter:

  1. wxid: …
  2. Gappid: Eine ID wie gh_xxxxxxxx@app kann an ein kleines Programm weitergeleitet werden, und die darin enthaltene XML-Datei ist es
Nachricht weiterleiten

Funktionsprototyp: def ForwardMessage(wxid:str, localid:int) -> int: ...
Funktion: Nachricht weiterleiten
Parameter:

  1. wxid: …
  2. localid: das Localid-Feld in der Nachricht
BearbeitenBemerkung

Funktionsprototyp: def EditRemark(wxid:str, remark:str) -> int: ...
Funktion: Notizen eines Freundes bearbeiten
Parameter:

  1. wxid: …
  2. Bemerkung: Bemerkungsinhalt
RecvTransfer

Funktionsprototyp: def RecvTransfer(wxid:str, transferid:str, transcationid:str) -> int: ...
Funktion: Übertragungsparameter empfangen
:

  1. wxid: …
  2. transferid: kann aus der XML der Übertragungsnachricht extrahiert werden
  3. transcationid: kann aus der XML-Datei der Übertragungsnachricht extrahiert werden
RückerstattungTransfer

Funktionsprototyp: def RefundTransfer(wxid:str, transferid:str, transcationid:str) -> int: ...
Funktion: Rückübertragung
Parameter:

  1. wxid: …
  2. transferid: kann aus der XML der Übertragungsnachricht extrahiert werden
  3. transcationid: kann aus der XML-Datei der Übertragungsnachricht extrahiert werden
GetChatRoomMembers

Funktionsprototyp: def GetChatRoomMembers(roomid:str) -> str: ...
Funktion: Alle Gruppenmitglieder einer bestimmten Gruppe abrufen
Parameter:

  1. roomid: Gruppen-ID
GetChatRoomMemberNickname

Funktionsprototyp: def GetChatRoomMemberNickname(roomid:str, wxid:str) -> str: ...
Funktion: Gruppenmitglieds-Spitznamen abrufen
Parameter:

  1. roomid: Gruppen-ID
  2. wxid: Die wxid des abzurufenden Spitznamens
GetUserInfoJsonByCache

Funktionsprototyp: def GetUserInfoJsonByCache(wxid:str) -> str: ...
Funktion: Ruft den Spitznamen eines Benutzers ab, der ein Freund oder ein Gruppenmitglied sein kann
. Parameter:

  1. wxid: Die wxid des abzurufenden Spitznamens
DelChatRoomMembers

Funktionsprototyp: def DelChatRoomMembers(roomid:str, wxid:str) -> int: ...
Funktion: Gruppenmitglieder löschen
Parameter:

  1. roomid: Gruppen-ID
  2. wxid: Die wxid der Person, die gelöscht werden soll
SetChatRoomAnnouncement

Funktionsprototyp: def SetChatRoomAnnouncement(roomid:str, content:str) -> int: ...
Funktion: Gruppenansage einstellen
Parameter:

  1. roomid: Gruppen-ID
  2. Inhalt: Ankündigungsinhalt, nur Textinhalte werden unterstützt
SetChatRoomName

Funktionsprototyp: def SetChatRoomName(roomid:str, name:str) -> int: ...
Funktion: Gruppennamen ändern
Parameter:

  1. roomid: Gruppen-ID
  2. Name Name
SetChatRoomMyNickname

Funktionsprototyp: def SetChatRoomMyNickname(roomid:str, name:str) -> int: ...
Funktion: Ändern Sie Ihren eigenen Gruppen-Spitznamen.
Parameter:

  1. roomid: Gruppen-ID
  2. Name Name
ChatRoomMembers hinzufügen

Funktionsprototyp: def AddChatRoomMembers(roomid:str, wxid:str) -> int: ...
Funktion: Prozess „Freunde einladen“. Diese Schnittstelle unterstützt nur Gruppen mit weniger als 40 Personen.
Parameter:

  1. roomid: Gruppen-ID
  2. wxid: Wxid eines Freundes
DownloadImageFromCdnByLocalid

Funktionsprototyp: def DownloadImageFromCdnByLocalid(localid:int, file_path:str) -> int: ...
Funktion: Laden Sie das Bild einer bestimmten Bildnachricht in den angegebenen Pfad herunter.
Parameter:

  1. localid: Localid der Nachricht
  2. file_path: Der Pfad ist im Allgemeinen das WeChat-Verzeichnis und wird dann entschlüsselt und kopiert. Weitere Informationen finden Sie im Python-Beispiel
DownloadFileFromCdnByLocalid

Funktionsprototyp: def DownloadFileFromCdnByLocalid(localid:int, file_path:str) -> int: ...
Funktion: Laden Sie eine Dateinachricht in den angegebenen Pfad herunter.
Parameter:

  1. localid: Localid der Nachricht
  2. file_path: Der Pfad ist normalerweise das WeChat-Verzeichnis und wird dann kopiert. Weitere Informationen finden Sie im Python-Beispiel
DownloadVideoFromCdnByLocalid

Funktionsprototyp: def DownloadVideoFromCdnByLocalid(localid:int, file_path:str) -> int: ...
Funktion: Laden Sie eine Videonachricht auf den angegebenen Pfad herunter.
Parameter:

  1. localid: Localid der Nachricht
  2. file_path: Der Pfad ist normalerweise das WeChat-Verzeichnis und wird dann kopiert. Weitere Informationen finden Sie im Python-Beispiel
AddFriendByWxidOrV3

Funktionsprototyp: def AddFriendByV3V4(v3:str, v4:str, addType:int) -> int: ...
Funktion: Zustimmen und anfordern. v3, v4 und addType sind alle in der Nachrichten-XML der Freundschaftsanfrage enthalten. Spezifische Felder finden Sie im Python-Beispiel. Parameter
:

  1. v3: …
  2. v4: …
  3. addType: Der hinzuzufügende Typ. Wenn er beispielsweise über wxid hinzugefügt wird, ist er 6, wenn er über die Visitenkarte hinzugefügt wird, ist er 17.
getVoiceByMsgid

Funktionsprototyp: def getVoiceByMsgid(msgid:str) -> str: ...
Funktion: Rufen Sie die Sprachdatei über msgid ab. Das erhaltene Format ist slik. Es muss in ein gängiges Audioformat wie MP3 konvertiert werden, bevor es abgespielt werden kann
. Parameter:

  1. msgstr: msgstr in der Audio-Nachricht
CheckFriendStatus

Funktionsprototyp: def CheckFriendStatus(wxid:str) -> dict: ...
Funktion: Freundesstatus erkennen, blockieren, löschen usw. Kann zum Erkennen von Zombie-Followern verwendet werden. Es wird empfohlen, das Intervall zwischen Anrufen zu erhöhen. Möglicherweise wird eine Aufforderung zum Hinzufügen eines Freundes angezeigt. Dies ist normal und kann von der anderen Partei nicht gesehen werden
. Parameter:

  1. wxid: …
Freund suchen

Funktionsprototyp: def SearchFriend(phone:str) -> dict: ...
Funktion: Suche nach Benutzern über WeChat-ID oder Mobiltelefonnummer
Parameter:

  1. Telefon: WeChat-ID oder Mobiltelefonnummer, nach der gesucht werden soll

Holen Sie sich meine wxid

Funktionsprototyp: Funktion: Holen Sie sich den wxid- Rückgabewert def GetMyWxid() -> dict: ...
des Entwicklers : kanadeblisst

Je suppose que tu aimes

Origine blog.csdn.net/Qwertyuiop2016/article/details/133210509
conseillé
Classement