Wechaty ist ein Konversations-RPA-SDK, das den Prozess der Erstellung von Chatbots vereinfacht. Es ist wie ein Schweizer Taschenmesser für die Chatbot-Entwicklung und bietet eine universelle Schnittstelle zu verschiedenen Messaging-Plattformen wie WhatsApp, WeChat und mehr. Bei Wechaty schreiben Sie Ihren Bot-Code einmal und er läuft auf jeder der unterstützten Plattformen. Das bedeutet, dass Sie sich auf die Schaffung ansprechender Gesprächserlebnisse konzentrieren können, ohne sich über die zugrunde liegende Komplexität der APIs jeder Plattform Gedanken machen zu müssen. Es ist Open Source, einfach zu bedienen und wird von einer lebendigen Community unterstützt, die Ihnen gerne dabei hilft, Ihre Chatbot-Ideen zum Leben zu erwecken.
Wechaty ist ein RPA-SDK (Robotic Process Automation) für Chatbot-Hersteller, mit dem Sie einen Bot in sechs Zeilen JavaScript, Python, Go und Java erstellen können, mit plattformübergreifender Unterstützung, einschließlich Linux, Windows, MacOS und Docker.
?️ https://wechaty.js.org
https://github.com/Wechaty/wechaty
? https://github.com/Wechaty/wechaty/issues
https://github.com/Wechaty/wechaty-getting-started
? https://hub.docker.com/r/wechaty/wechaty
„Wechaty ist eine großartige Lösung; ich glaube, dass es viel mehr Benutzer geben wird, die es erkennen.“ Link
— @Gcaufy, Tencent-Ingenieur, Autor von WePY„太好用,好用的想哭“
— @xinbenlv, Google Engineer, Gründer von HaoShiYou.org„好用到哭“ – Link
– @bigbrother666sh, Schöpfer von NPC DMLink „最好的微信开发库“.
— @Jarvis, Baidu-IngenieurLink „Wechaty让运营人员更多的时间思考如何进行活动策划、留存用户,商业变现“.
— @lijiarui, Gründer und CEO von Juzi.BOT.„Wenn Sie js kennen ... probieren Sie Wechaty. Es ist einfach zu bedienen.“
— @Urinx Uri Lee, Autor von WeixinBot (Python)„Wechaty ist ein gutes Projekt; ich hoffe, dass es weitergeführt werden kann! Deshalb wurde ich Mitwirkender im offenen Kollektiv.“
- @Einfach
Weitere Informationen finden Sie im Wiki:Voice Of Developer
Wechaty wird in vielen ChatBot-Projekten von Tausenden von Entwicklern verwendet. Um mit anderen Entwicklern zu sprechen, scannen Sie den QR-Code unten und treten Sie unserer Wechaty-Entwickler-Community bei.
Scannen Sie jetzt, denn auch andere Wechaty-Entwickler möchten mit Ihnen sprechen!
Wechaty hat in den letzten Jahren bereits viele Vorträge gehalten und viele Blogs erstellt; Hier sind alle Wechaty-Ressourcen:
import { WechatyBuilder } from 'wechaty'
const wechaty = WechatyBuilder . build ( ) // get a Wechaty instance
wechaty
. on ( 'scan' , ( qrcode , status ) => console . log ( `Scan QR Code to login: ${ status } nhttps://wechaty.js.org/qrcode/ ${ encodeURIComponent ( qrcode ) } ` ) )
. on ( 'login' , user => console . log ( `User ${ user } logged in` ) )
. on ( 'message' , message => console . log ( `Message: ${ message } ` ) )
wechaty . start ( )
Hinweis: Wechaty erfordert Node.js-Version >= 16
Dieser Bot kann nach der Anmeldung durch den Scan alle Nachrichten an der Konsole protokollieren.
Sie finden die offiziellen Beispiele von Wechaty unter examples/ding-dong-bot.ts und mehr in unserem Beispielverzeichnis.
Wir haben ein Wechaty-Starter-Repository für Anfänger mit der einfachsten Einstellung. Nach dem clone
, npm install
und npm start
funktioniert es sofort.
Wenn Sie neu bei Wechaty sind und es zum ersten Mal ausprobieren möchten, möchten wir Ihnen dringend empfehlen, mit diesem Repository zu beginnen und es als Startvorlage für Ihr Projekt zu verwenden.
Andernfalls speichern Sie bitte das obige Beispiel „Der kürzeste ChatBot-Code der Welt: 6 Zeilen JavaScript“ in einer Datei mit dem Namen bot.js
bevor Sie es entweder mit NPM oder Docker ausführen können.
npm init
npm install wechaty
# create your first bot.js file, you can copy/paste from the above "The World's Shortest ChatBot Code: 6 lines of JavaScript"
# then:
node bot.js
Wechaty Docker unterstützt sowohl JavaScript als auch TypeScript. Um TypeScript zu verwenden, schreiben Sie einfach in TypeScript und speichern Sie es mit dem Erweiterungsnamen
.ts
. Eine Kompilierung ist nicht erforderlich, da wir es mitts-node
ausführen.
2.1. Führen Sie JavaScript aus
# for JavaScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.js
2.2. Führen Sie TypeScript aus
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
Erfahren Sie mehr über Wechaty Docker im Wiki:Docker.
Wechaty ist sehr leistungsfähig, da es über verschiedene Protokolle laufen kann. Sie können das Protokoll angeben, indem Sie die Umgebungsvariable WECHATY_PUPPET
auf einen anderen Puppet-Anbieter setzen.
Wenn Sie das Webprotokoll nicht verwenden können, können Sie andere Protokolle anwenden, indem Sie der Anleitung hier folgen: https://github.com/wechaty/wechaty/wiki/Support-Developers Wir stellen ein kostenloses Token zur Verfügung, um Entwickler beim Aufbau eines wertvollen WeChat-Chatbots zu unterstützen.
Derzeit unterstützen wir folgende Puppenanbieter:
Protokoll | Puppenanbieter | Umgebungsvariable |
---|---|---|
Web | Puppenspieler | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
Windows | PuppetWorkPro | export WECHATY_PUPPET=wechaty-puppet-service |
Verspotten | PuppetMock | export WECHATY_PUPPET=wechaty-puppet-mock |
Web | PuppetWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | PuppetRock | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | PuppetPadLocal | export WECHATY_PUPPET=wechaty-puppet-service |
Windows | PuppetDonut | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | export WECHATY_PUPPET=wechaty-puppet-padpro | |
iPad | export WECHATY_PUPPET=wechaty-puppet-padchat | |
iPad | export WECHATY_PUPPET=wechaty-puppet-padplus | |
Mac | export WECHATY_PUPPET=wechaty-puppet-macpro | |
Windows | export WECHATY_PUPPET=wechaty-puppet-service |
Erfahren Sie mehr über Wechaty Puppet im Puppet Wiki:
Lesen Sie die vollständige Dokumentation unter Wechaty Official API Reference
Wechaty
Haupt-Bot-Klasse.
Ein Bot
ist eine Wechaty-Instanz, die eine bestimmte Wechaty-Marionette steuert.
new Wechaty(options?: WechatyOptions)
options.name?: string
mit dem Namen dieses Bots (optional)options.puppet?: string
Wählen Sie aus, welchen Puppet-Anbieter wir verwenden möchten. muss einer der folgenden sein:options.puppetOptions?: PuppetOptions
-Optionen für den Puppet-Anbieter.Wechaty | API | Beschreibung |
---|---|---|
Ereignis | login | Wird ausgegeben, nachdem die Bot-Anmeldung vollständig erfolgreich war |
Ereignis | logout | wird ausgegeben, nachdem sich der Bot abgemeldet hat |
Ereignis | friendship | Wird ausgegeben, wenn jemand eine Freundschaftsanfrage sendet |
Ereignis | message | wird ausgegeben, wenn eine neue Nachricht vorliegt |
Ereignis | room-join | emittieren, wenn jemand einem Raum beitritt |
Ereignis | room-topic | wird ausgegeben, wenn jemand das Raumthema wechselt |
Ereignis | room-leave | emittieren, wenn jemand den Raum verlässt |
Ereignis | room-invite | wird ausgegeben, wenn eine Raumeinladung vorliegt |
Ereignis | scan | wird ausgegeben, wenn der Bot Ihnen einen QR-Code zum Scannen zeigen muss |
Verfahren | start(): Promise<void> | Starten Sie den Bot |
Verfahren | stop(): Promise<void> | Stoppen Sie den Bot |
Verfahren | logonoff(): boolean | Bot-Anmeldestatus |
Verfahren | logout(): Promise<void> | Melden Sie den Bot ab |
Verfahren | currentUser(): ContactSelf | Holen Sie sich den angemeldeten Bot-Kontakt |
Verfahren | say(text: string): Promise<void> | Lassen Sie den Bot text zu sich selbst sagen |
Contact
Alle Wechat-Kontakte (Freunde/Nicht-Freunde) werden als Kontakt gekapselt.
Kontakt | API | Beschreibung |
---|---|---|
statisch | find(query: string): Promise<null | Contact> | Kontakt nach Namen oder Alias suchen. Wenn das Ergebnis mehr als eins ist, wird das erste zurückgegeben. |
statisch | findAll(query: string): Promise<Contact[]> | Finden Sie den Kontakt anhand seines name oder alias |
statisch | load(query: string): Contact | Nehmen Sie Kontakt per ID auf |
Eigentum | id: readonly string | Kontakt-ID erhalten |
Verfahren | sync(): Promise<void> | Erzwingen Sie das Neuladen der Daten für den Kontakt und synchronisieren Sie die Daten erneut von der Low-Level-API |
Verfahren | say(text: string): Promise<void | Message> | Text, Kontakt oder Datei an Kontakt senden, die vom Bot gesendete Nachricht zurücksenden (nur puppet-padplus wird unterstützt). |
Verfahren | self(): boolean | Überprüfen Sie, ob der Kontakt selbst erfolgt |
Verfahren | name(): string | Holen Sie sich den Namen von einem Kontakt |
Verfahren | alias(): Promise<string> | Holen Sie sich den Alias für einen Kontakt |
Verfahren | alias(newAlias: string): Promise<void> | Legen Sie den Alias für einen Kontakt fest oder löschen Sie ihn |
Verfahren | friend(): boolean | Überprüfen Sie, ob der Kontakt ein Freund ist |
Verfahren | type(): ContactType | Gibt den Typ des Kontakts zurück |
Verfahren | province(): string | Holen Sie sich die Region „Provinz“ von einem Kontakt |
Verfahren | city(): string | Holen Sie sich die Region „Stadt“ von einem Kontakt |
Verfahren | avatar(): Promise<FileBox> | Holen Sie sich den Avatar-Bilddatei-Stream |
Verfahren | gender(): ContactGender | Geschlecht von einem Kontakt erhalten |
ContactSelf
Die Klasse ContactSelf
ist eine Erweiterung von Contact
.
KontaktSelbst | API | Beschreibung |
---|---|---|
Verfahren | avatar(file: FileBox): Promise<void> | Avatar für Bot festlegen |
Verfahren | qrcode(): Promise<string> | Holen Sie sich den QR-Code für den Bot |
Verfahren | signature(text: string): Promise<void> | Signatur für Bot festlegen |
Friendship
Senden und empfangen Sie Freundschaftsanfragen und Freundschaftsbestätigungsereignisse.
Freundschaft | API | Beschreibung |
---|---|---|
statisch | add(contact: Contact, hello?: string): Promise<void> | Senden Sie eine Einladung an einen Freund, um Kontakt aufzunehmen |
Verfahren | accept(): Promise<void> | Nimm eine Freundschaftsanfrage an |
Verfahren | hello(): string | Holen Sie sich die Hallo-Zeichenfolge aus einer Freundschaftseinladung |
Verfahren | contact(): Contact | Holen Sie sich den Kontakt durch Freundschaft |
Verfahren | type(): FriendshipType | Geben Sie den Freundschaftstyp zurück (unbekannt, bestätigen, empfangen, verifizieren) |
Message
Alle Wechat-Nachrichten werden als Nachricht gekapselt.
Nachricht | API | Beschreibung |
---|---|---|
statisch | find(query: string): Promise<null | Message> | Finde die Nachricht im Cache und gib die erste zurück |
statisch | findAll(query: string): Promise<Message[]> | Suchen Sie nach Nachrichten im Cache und geben Sie eine Nachrichtenliste zurück |
Verfahren | from(): Contact | Den Absender einer Nachricht ermitteln |
Verfahren | to(): Contact | Ermitteln Sie das Ziel der Nachricht |
Verfahren | room(): null | Room | Holen Sie sich den Raum aus der Nachricht. (Wenn sich die Nachricht nicht in einem Raum befindet, wird null zurückgegeben.) |
Verfahren | text(): string | Holen Sie sich den Textinhalt der Nachricht |
Verfahren | say(text: string): Promise<void | Message> | Antworten Sie auf eine Text-, Mediendatei- oder Kontaktnachricht an den Absender und senden Sie die Nachricht zurück, die der Bot gesendet hat (wird nur puppet-padplus unterstützt). |
Verfahren | type(): MessageType | Holen Sie sich den Typ aus der Nachricht |
Verfahren | self(): boolean | Überprüfen Sie, ob eine Nachricht von Ihnen selbst gesendet wurde |
Verfahren | mention(): Contact[] | Erhalten Sie die erwähnte Kontaktliste in der Nachricht. |
Verfahren | mentionSelf(): boolean | Überprüfen Sie, ob eine Nachricht selbst erwähnt wird |
Verfahren | forward(to: Contact): Promise<void> | Leiten Sie die empfangene Nachricht weiter |
Verfahren | age(): number | die Anzahl der Sekunden seit der Erstellung |
Verfahren | date(): Date | die Zeit, in der es erstellt wurde |
Verfahren | toFileBox(): Promise<FileBox> | Extrahieren Sie die Mediendatei aus der Nachricht und legen Sie sie in der FileBox ab. |
Verfahren | toContact(): Promise<Contact> | Erhalten Sie eine Share Card der Nachricht |
Room
Alle Wechat-Räume (Gruppen) werden als Raum gekapselt.
Zimmer | API | Beschreibung |
---|---|---|
statisch | create(contactList: Contact[], topic?: string): Promise<Room> | einen neuen Raum erstellen |
statisch | find(query: string): Promise<null | Room> | Versuchen Sie, einen Raum per Filter zu finden. Wenn Sie viele erhalten, geben Sie das erste zurück. |
statisch | findAll(query: string): Promise<Room[]> | Finden Sie alle Kontakte in einem Raum |
statisch | load(query: string): Room | Laden Sie den Raum nach Raum-ID |
Eigentum | id: readonly string | |
Ereignis | join | emittieren, wenn jemand einem Raum beitritt |
Ereignis | topic | wird ausgegeben, wenn jemand das Raumthema wechselt |
Ereignis | leave | emittieren, wenn jemand den Raum verlässt |
Ereignis | invite | Wird ausgegeben, wenn eine Raumeinladung empfangen wird |
Verfahren | sync(): <Promise<void> | Neuladen der Daten für den Raum erzwingen, Daten von der Low-Level-API erneut synchronisieren. |
Verfahren | say(text: string): Promise<void | Message> | Senden Sie Text, Mediendatei, Kontaktkarte oder Text mit Erwähnung @Erwähnung des Kontakts im Raum und senden Sie die vom Bot gesendete Nachricht zurück (wird nur puppet-padplus unterstützt). |
Verfahren | add(contact: Contact): Promise<void> | Kontakt in einem Raum hinzufügen |
Verfahren | del(contact: Contact): Promise<void> | Einen Kontakt aus dem Raum löschen |
Verfahren | quit(): Promise<void> | Bot verließ den Raum selbst |
Verfahren | topic(): Promise<string> | Holen Sie sich das Thema aus dem Raum |
Verfahren | topic(newTopic: string): Promise<void> | SET-Thema aus dem Raum |
Verfahren | announce(text: string): Promise<void> | SET/GET-Ankündigung aus dem Raum |
Verfahren | qrcode(): Promise<string> | Holen Sie sich den QR-Code des Raums aus dem Raum, den Sie als Scan verwenden und dem Raum beitreten können. |
Verfahren | alias(contact: Contact): Promise<string> | Geben Sie den Zimmer-Alias des Kontakts im Raum zurück |
Verfahren | roomAlias(contact: Contact): Promise<string | null> | Identisch mit Funktionsalias |
Verfahren | has(contact: Contact): Promise<boolean> | Überprüfen Sie, ob der Raum contact hat |
Verfahren | memberAll(query?: string): Promise<Contact[]> | Finden Sie alle Kontakte oder mit einem bestimmten Namen in einem Raum |
Verfahren | member(query: string): Promise<null | Contact> | Finden Sie alle Kontakte in einem Raum. Wenn Sie viele erhalten, geben Sie den ersten zurück. |
Verfahren | memberList():Promise<Contact[]> | Holen Sie sich alle Raummitglieder aus dem Raum |
Verfahren | owner(): null | Contact | Rufen Sie den Besitzer des Raums ab. |
RoomInvitation
zum KlassenzimmerRaumeinladung annehmen
Raumeinladung | API | Beschreibung |
---|---|---|
Verfahren | accept(): Promise<void> | Raumeinladung annehmen |
Verfahren | inviter(): Contact | Holen Sie sich den Einladenden aus der Raumeinladung |
Verfahren | roomTopic(): Promise<string> | Holen Sie sich das Raumthema aus der Raumeinladung |
Verfahren | date(): Promise<Date> | die Zeit, in der es erstellt wurde |
Verfahren | age(): Promise<number> | die Anzahl der Sekunden seit der Erstellung |
Wechaty wird vollautomatisch durch Unit- und Integrationstests getestet, mit Continuous Integration & Continuous Delivery (CI/CD)-Unterstützung durch CI wie Travis, Shippable und Appveyor.
Um Wechaty zu testen, führen Sie Folgendes aus:
npm test
Erfahren Sie mehr über die Tests im Wiki:Tests
Das Erstellen und Veröffentlichen eines Wechaty-Plugins ist einfach. Stellen Sie Ihr Modul einfach als Funktion bereit, die einen Parameter benötigt: wechaty. Wenn Ihr Plugin von Wechaty importiert wird, wird es sich selbst als Argument übergeben, und Sie können daher jede Konfiguration hinzufügen, die Wechaty unterstützt.
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
Die config
ist vorhanden, damit der Benutzer Anpassungen an Ihr Plugin übergeben kann. Bei der Dokumentation Ihres Wechaty-Plugins legen Sie dem Benutzer Ihre unterstützte Konfiguration dar.
Sehen:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
Weiteren eingebetteten HTML-/Markdown-Code erhalten Sie von Wiki:Badge
Pull Request kann gerne hinzugefügt werden!
Erfahren Sie mehr über Projekte mit Wechaty im Wiki:Projekte mit Wechaty
Die beste Vorgehensweise für die Ausführung von Wechaty Docker/NPM ist die Verwendung eines VPS (Virtual Private Server) außerhalb Chinas, wodurch Sie Stunden Zeit sparen können, da npm install
und docker pull
reibungslos und problemlos ablaufen.
Die folgenden VPS-Anbieter werden vom Wechaty-Team verwendet und sie haben in der Produktion perfekt funktioniert. Über den folgenden Link können Sie in wenigen Minuten eines erhalten. Außerdem können Sie dadurch Wechaty unterstützen, da Sie von uns empfohlen werden.
Standort | Preis | RAM | Zahlung | Anbieter |
---|---|---|---|---|
Singapur | 5 $ | 512 MB | Paypal | DigitalOcean |
Japan | 5 $ | 1 GB | Paypal | Linode |
Korea | 10 $ | 1 GB | Alipay, Paypal | Netdedi |
Singapur | 3,5 $ | 512 MB | Alipay, Wechat | Vultr |
Im Jahr 2017 ...
Huans Alltag/Arbeit hängt davon ab, dass zu viel auf Wechat gechattet wird.
Können Sie sich das vorstellen? Er lag im Sterben...
Daher brauche ich dringend einen unermüdlichen Bot, der rund um die Uhr auf Wechat für mich arbeitet und die wichtigste Nachricht überwacht/filtert. Es hebt beispielsweise eine Diskussion hervor, die die SCHLÜSSELWÖRTER enthält, denen er nachgehen möchte (insbesondere in einem lauten Raum). ;-)
Schließlich wurde es für Huans persönliche Studienzwecke des automatischen Testens entwickelt.
Dieses Projekt existiert dank aller Menschen, die dazu beitragen. [Beitragen].
Vielen Dank an alle unsere Unterstützer! [Unterstützer werden]
Unterstützen Sie dieses Projekt, indem Sie Sponsor werden. Hier erscheint Ihr Logo mit einem Link zu Ihrer Website. [Sponsor werden]
Wir arbeiten an der Reduxifizierung des Wechaty-Ökosystems für die Anwendung des CQRS-Musters.
Zweite Beta-Version von Wechaty, mit allen Ökosystem-npm-Modulen mit Version v1.10 (wechaty-puppet, wechaty-puppet-service usw.)
So zitieren Sie dieses Projekt in Veröffentlichungen:
@misc { Wechaty ,
author = { Huan Li, Rui Li } ,
title = { Wechaty: Conversational SDK for Chatbot Makers } ,
year = { 2016 } ,
publisher = { GitHub } ,
journal = { GitHub Repository } ,
howpublished = { url{https://github.com/wechaty/wechaty} } ,
}