Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Habe einen WeChat-Chatbot in Python geschrieben

Habe einen WeChat-Chatbot in Python geschrieben

王林
王林nach vorne
2023-05-04 23:16:052639Durchsuche

Habe einen WeChat-Chatbot in Python geschrieben

In unserem Leben und bei unserer Arbeit können wir oft nicht rechtzeitig auf Nachrichten antworten, insbesondere auf solche mit viel Geschäft. Es wäre schlecht, wenn Kunden uns Nachrichten senden und wir nicht antworten, aber das tun wir nicht So viel Energie, ständig zu antworten, können uns intelligente Roboter in dieser Zeit helfen, viele Probleme zu lösen.

Wie beim E-Commerce-Kundendienst, als Administrator einer großen QQ-Gruppe/WeChat-Gruppe oder wenn wir Spiele spielen, hängen Sie einfach das Skript auf, der Roboter antwortet automatisch auf Ihre Nachricht und Sie werden Ihre Freundin nicht beleidigen eine Weile, haha ​​Ha ha!

Heute werde ich Ihnen einen Trick beibringen, um einen intelligenten WeChat-Chat-Roboter (Turing) zu implementieren. Sie müssen sich keine Sorgen mehr machen, dass Sie von Kunden beschimpft werden, wenn Sie nicht auf Nachrichten antworten.

1. Wirkung

Nachdem ich mich mit meinem eigenen WeChat angemeldet habe (links), habe ich es mit dem WeChat meines Assistenten getestet, nachdem der Roboter meinen WeChat übernommen hat:

Habe einen WeChat-Chatbot in Python geschrieben


2. Projektidee

Die Gesamtidee ist in der folgenden Abbildung dargestellt:

Habe einen WeChat-Chatbot in Python geschrieben 3. Code-Analyse

1. Module installieren und importieren

Die beiden hier zu verwendenden sind das Itchat-Modul und das Requests-Modul ein wesentlicher Schritt, und das Projekt läuft auf Basis dieser beiden Module. Die Installationsmethode ist sehr einfach. Drücken Sie einfach die Fenstertaste + R, um das Befehlsfenster aufzurufen, und geben Sie dann den zu installierenden Befehl ein. Um beispielsweise das itchat-Modul zu installieren, geben Sie einfach pip install itchat ein. Öffentliches WeChat-Konto durchsuchen: Linux-Technologie-Fan, Antwort: Linux-Empfangsinformationen.

Habe einen WeChat-Chatbot in Python geschriebenZur Erinnerung: Die beiden Module werden separat installiert. Nachdem Sie das eine installiert haben, installieren Sie das andere.

Nachdem die Installation abgeschlossen ist, können wir das Modul direkt in den Code importieren:

<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span><br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">requests</span>

2. Beantragen Sie den Turing-Roboter

Der Roboter für dieses Projekt ist ein fertiger Turing-Roboter. Wir müssen zu Turing gehen Registrieren Sie sich auf der offiziellen Website und geben Sie dann den Hintergrund ein, um einen Roboter zu erstellen. Jeder Roboter verfügt über eine API, die wir verwenden werden.

Habe einen WeChat-Chatbot in Python geschriebenFür Turing Robot gab es früher eine kostenlose Version und eine Testversion. Jetzt sind nur 100 Nachrichtenantworten pro Tag möglich, aber es ist für Tester verfügbar.

Habe einen WeChat-Chatbot in Python geschriebenTuring kann auch personalisierte Antworten auf Schlüsselwörter bereitstellen, die im „Private Corpus“ im Hintergrund eingestellt werden können.

3. Implementieren Sie die Roboterfunktion

Zusätzlich zur URL für den Zugriff auf die Website müssen Sie auch bestimmen, welcher Roboter aufgerufen wird, da zu diesem Zeitpunkt möglicherweise mehrere Roboter im Hintergrund arbeiten Verwenden Sie einen Roboter, um die zu sendende Nachricht abzurufen, und verwenden Sie dann die Post-Methode, um die Anforderung zu senden, die URL der Website, die API des Roboters und die zu sendende Nachricht zu senden und schließlich den Text im Wörterbuch zu extrahieren. und schließlich die Daten zurückgeben.

<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">get_response</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">msg</span>):<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiUrl</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"http://www.tuling123.com/openapi/api"</span> <span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#要访问的网站</span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#key:机器人的key,info:要发送的消息</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span>{<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'key'</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">KEY</span>,<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'info'</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">msg</span>,<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'userid'</span>:<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"WeChat-robot"</span>}<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#发送请求:</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">r</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">requests</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">post</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiUrl</span>,<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>)<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">r</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"text"</span>]

4. Implementieren Sie die WeChat-Funktion

Wenn uns jemand eine Nachricht sendet, rufen wir die oben zurückgegebenen Daten ab. Woher wissen Sie also, ob Ihnen jemand eine Nachricht sendet? Zu diesem Zeitpunkt können wir den von itchat bereitgestellten Dekorator @itchat.msg_register () verwenden, um diese Funktion zu realisieren und dann die oben beschriebene Roboterfunktion aufzurufen und schließlich die Informationen des Roboters oder des Absenders zurückzugeben.

Warum müssen Sie die Absenderinformationen hinzufügen und vor dem Senden kopieren? Dies soll verhindern, dass der Roboter aufgrund von Netzwerk- und anderen Problemen nicht antwortet. Zu diesem Zeitpunkt wird jeder, der uns eine Nachricht sendet, automatisch mit derselben Nachricht antworten, um zu verhindern, dass er während des Chats nicht reagiert.

<span style="color: rgb(31, 127, 154); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(31, 127, 154); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">msg_register</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">content</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">TEXT</span>)<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">tuling_reply</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>):<br><span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>)<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#用户的信息包含给你发的消息</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"Text"</span>]<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#用户发你的信息</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return_user</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">get_response</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"Text"</span>])<br><span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return_user</span>)<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return_user</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">or</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user</span>

5. QR-Code und Schleifenprogramm öffnen

Wenn das Programm ausgeführt wird, müssen wir einen QR-Code öffnen, damit wir den Code scannen und uns anmelden können. Gleichzeitig müssen wir dies sicherstellen Das Programm wird immer ausgeführt, andernfalls wird das Programm nur einmal ausgeführt. Diese beiden Funktionen werden in Itchat bereitgestellt. Verwenden Sie sie einfach direkt.

<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">auto_login</span>()<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#扫码登录</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">run</span>()<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#循环执行</span>


Das Obige ist die Codeanalyse dieses WeChat-Chatbots. Ich weiß nicht, dass die kostenpflichtige Version stärker ist 20 Zeilen überschreiten.

Das obige ist der detaillierte Inhalt vonHabe einen WeChat-Chatbot in Python geschrieben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen