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
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.
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
- Installieren Sie eine bestimmte Version (3.9.6.32) von WeChat in einem beliebigen Verzeichnis
- 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.
- Bearbeiten Sie die Konfigurationsdatei und ändern Sie hauptsächlich das WeChat-Installationsverzeichnis und das Python-Installationsverzeichnis
- Ö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:
- wxid: die wxid der anderen Partei
- 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:
- wxid: die wxid der anderen Partei
- xml: XML-Inhalt gesendet
- dtype: Der Typ in XML kann aus XML analysiert werden
SendEmotionMsg
Funktionsprototyp: def SendEmotionMsg(wxid:str, path:str) -> int: ...
Funktion: Emoticon-Paket senden
Parameter:
- wxid: die wxid der anderen Partei
- 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:
- wxid: die wxid der anderen Partei
- 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:
- wxid: die wxid der anderen Partei
- cardWxid: Die WXID des Freundes, die gesendet werden soll
SendPatMsg
Funktionsprototyp: def SendPatMsg(roomid:str, wxid:str) -> int: ...
Funktion: Eine PaiPai-Nachricht senden
Parameter:
- roomid: Gruppen-ID
- wxid: wxid der Person, die das Foto macht
SendImageMsg
Funktionsprototyp: def SendImageMsg(wxid:str, path:str) -> int: ...
Funktion: Bilder senden
Parameter:
- wxid: …
- Pfad: Absoluter Pfad des gesendeten Bildes
SendFileMsg
Funktionsprototyp: def SendFileMsg(wxid:str, path:str) -> int: ...
Funktion: Datei senden
Parameter:
- wxid: …
- Pfad: Absoluter Pfad der gesendeten Datei
SendAppMsg
Funktionsprototyp: def SendAppMsg(wxid:str, gappid:str) -> int: ...
Funktion: Mini-Programmnachricht senden
Parameter:
- wxid: …
- 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:
- wxid: …
- localid: das Localid-Feld in der Nachricht
BearbeitenBemerkung
Funktionsprototyp: def EditRemark(wxid:str, remark:str) -> int: ...
Funktion: Notizen eines Freundes bearbeiten
Parameter:
- wxid: …
- Bemerkung: Bemerkungsinhalt
RecvTransfer
Funktionsprototyp: def RecvTransfer(wxid:str, transferid:str, transcationid:str) -> int: ...
Funktion: Übertragungsparameter empfangen
:
- wxid: …
- transferid: kann aus der XML der Übertragungsnachricht extrahiert werden
- 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:
- wxid: …
- transferid: kann aus der XML der Übertragungsnachricht extrahiert werden
- 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:
- roomid: Gruppen-ID
GetChatRoomMemberNickname
Funktionsprototyp: def GetChatRoomMemberNickname(roomid:str, wxid:str) -> str: ...
Funktion: Gruppenmitglieds-Spitznamen abrufen
Parameter:
- roomid: Gruppen-ID
- 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:
- wxid: Die wxid des abzurufenden Spitznamens
DelChatRoomMembers
Funktionsprototyp: def DelChatRoomMembers(roomid:str, wxid:str) -> int: ...
Funktion: Gruppenmitglieder löschen
Parameter:
- roomid: Gruppen-ID
- wxid: Die wxid der Person, die gelöscht werden soll
SetChatRoomAnnouncement
Funktionsprototyp: def SetChatRoomAnnouncement(roomid:str, content:str) -> int: ...
Funktion: Gruppenansage einstellen
Parameter:
- roomid: Gruppen-ID
- Inhalt: Ankündigungsinhalt, nur Textinhalte werden unterstützt
SetChatRoomName
Funktionsprototyp: def SetChatRoomName(roomid:str, name:str) -> int: ...
Funktion: Gruppennamen ändern
Parameter:
- roomid: Gruppen-ID
- Name Name
SetChatRoomMyNickname
Funktionsprototyp: def SetChatRoomMyNickname(roomid:str, name:str) -> int: ...
Funktion: Ändern Sie Ihren eigenen Gruppen-Spitznamen.
Parameter:
- roomid: Gruppen-ID
- 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:
- roomid: Gruppen-ID
- 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:
- localid: Localid der Nachricht
- 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:
- localid: Localid der Nachricht
- 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:
- localid: Localid der Nachricht
- 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
:
- v3: …
- v4: …
- 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:
- 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:
- wxid: …
Freund suchen
Funktionsprototyp: def SearchFriend(phone:str) -> dict: ...
Funktion: Suche nach Benutzern über WeChat-ID oder Mobiltelefonnummer
Parameter:
- 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