Wechaty est un SDK RPA conversationnel qui simplifie le processus de création de chatbots. C'est comme un couteau suisse pour le développement de chatbots, fournissant une interface universelle à diverses plateformes de messagerie telles que WhatsApp, WeChat, etc. Avec Wechaty, vous écrivez le code de votre bot une seule fois et il s'exécute sur toutes les plateformes prises en charge. Cela signifie que vous pouvez vous concentrer sur la création d'expériences conversationnelles engageantes sans vous soucier des complexités sous-jacentes de l'API de chaque plateforme. Il est open source, facile à utiliser et soutenu par une communauté dynamique prête à vous aider à donner vie à vos idées de chatbot.
Wechaty est un SDK RPA (Robotic Process Automation) pour les créateurs de chatbots qui peut vous aider à créer un bot en 6 lignes de JavaScript, Python, Go et Java, avec une prise en charge multiplateforme incluant Linux, Windows, MacOS et 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 est une excellente solution ; je pense qu'il y aurait beaucoup plus d'utilisateurs qui la reconnaîtraient." lien
— @Gcaufy, ingénieur Tencent, auteur de WePY"太好用,好用的想哭"
— @xinbenlv, ingénieur Google, fondateur de HaoShiYou.org"好用到哭"——你们对得起这个评价! lien
— @bigbrother666sh, créateur de《社长不见了》剧本杀 NPC DMLien "最好的微信开发库"
— @Jarvis, ingénieur BaiduLien « Wechaty
— @lijiarui, fondateur et PDG de Juzi.BOT."Si vous connaissez js... essayez Wechaty. C'est facile à utiliser."
— @Urinx Uri Lee, auteur de WeixinBot (Python)"Wechaty est un bon projet ; j'espère qu'il pourra continuer ! C'est pourquoi je suis devenu contributeur dans un collectif ouvert."
- @Simple
Pour en savoir plus, consultez Wiki : Voice Of Developer
Wechaty est utilisé dans de nombreux projets ChatBot par des milliers de développeurs. Pour parler avec d'autres développeurs, scannez le code QR ci-dessous et rejoignez notre communauté de développeurs Wechaty .
Scannez maintenant car d'autres développeurs Wechaty veulent aussi parler avec vous !
Wechaty a déjà tenu de nombreuses conférences et publié de nombreux blogs ces dernières années ; voici toutes les ressources wechaty :
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 ( )
Remarque : Wechaty nécessite la version Node.js >= 16
Ce bot peut enregistrer tous les messages sur la console après la connexion par analyse.
Vous pouvez trouver les exemples officiels de Wechaty sur examples/ding-dong-bot.ts et plus encore dans notre répertoire d'exemples.
Nous avons un référentiel de démarrage Wechaty pour les débutants avec le réglage le plus simple. Cela fonctionnera immédiatement après avoir clone
& npm install
& npm start
.
Si vous êtes nouveau sur Wechaty et que vous souhaitez l'essayer pour la première fois, nous vous recommandons fortement de partir de ce référentiel et de l'utiliser comme modèle de démarrage pour votre projet.
Sinon, veuillez enregistrer l'exemple ci-dessus du code ChatBot le plus court au monde : 6 lignes d'exemple JavaScript dans un fichier nommé bot.js
avant de pouvoir utiliser NPM ou Docker pour l'exécuter.
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 prend en charge à la fois JavaScript et TypeScript. Pour utiliser TypeScript, écrivez simplement en TypeScript et enregistrez avec le nom d'extension
.ts
, pas besoin de compiler car nous utilisonsts-node
pour l'exécuter.
2.1. Exécuter JavaScript
# for JavaScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.js
2.2. Exécuter TypeScript
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
Apprenez-en davantage sur Wechaty Docker sur Wiki:Docker.
Wechaty est très puissant et peut fonctionner sur différents protocoles. Vous pouvez spécifier le protocole en définissant la variable d'environnement WECHATY_PUPPET
sur un autre fournisseur de marionnettes.
Si vous ne pouvez pas utiliser le protocole Web, vous pouvez appliquer d'autres protocoles en suivant les instructions ici : https://github.com/wechaty/wechaty/wiki/Support-Developers Nous fournissons un jeton gratuit pour aider les développeurs à créer un chatbot WeChat précieux.
Actuellement, nous prenons en charge les fournisseurs de marionnettes suivants :
Protocole | Fournisseur de marionnettes | Variable d'environnement |
---|---|---|
Web | MarionnetteMarionnette | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
Fenêtres | PuppetWorkPro | export WECHATY_PUPPET=wechaty-puppet-service |
Se moquer | MarionnetteMock | export WECHATY_PUPPET=wechaty-puppet-mock |
Web | MarionnetteWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | MarionnetteRock | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | PuppetPadLocal | export WECHATY_PUPPET=wechaty-puppet-service |
Fenêtres | MarionnetteDonut | 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 | |
Fenêtres | export WECHATY_PUPPET=wechaty-puppet-service |
Apprenez-en davantage sur Wechaty Puppet sur le wiki Puppet :
Lisez la documentation complète sur la référence officielle de l'API Wechaty
Wechaty
Classe de robot principale.
Un Bot
est une instance Wechaty qui contrôle une marionnette Wechaty spécifique.
new Wechaty(options?: WechatyOptions)
options.name?: string
du nom de ce bot (facultatif)options.puppet?: string
sélectionnant le fournisseur de marionnettes que nous souhaitons utiliser. doit être l'un des :options.puppetOptions?: PuppetOptions
pour le fournisseur de marionnettes.Wechaty | API | Description |
---|---|---|
événement | login | émettre après la connexion du bot avec succès |
événement | logout | émettre après la déconnexion du bot |
événement | friendship | émettre lorsque quelqu'un envoie une demande d'ami au bot |
événement | message | émettre quand il y a un nouveau message |
événement | room-join | émettre lorsque quelqu'un rejoint une pièce |
événement | room-topic | émettre quand quelqu'un change de sujet de pièce |
événement | room-leave | émettre quand quelqu'un quitte la pièce |
événement | room-invite | émettre quand il y a une invitation à une salle |
événement | scan | émettre lorsque le bot doit vous montrer un code QR à scanner |
méthode | start(): Promise<void> | démarrer le bot |
méthode | stop(): Promise<void> | arrêter le robot |
méthode | logonoff(): boolean | statut de connexion du bot |
méthode | logout(): Promise<void> | déconnecter le bot |
méthode | currentUser(): ContactSelf | obtenir le contact du bot connecté |
méthode | say(text: string): Promise<void> | laisser le robot se dire text |
Contact
2e classeTous les contacts WeChat (amis/non-amis) seront encapsulés en tant que contact.
Contact | API | Description |
---|---|---|
statique | find(query: string): Promise<null | Contact> | rechercher le contact par nom ou alias, si le résultat est supérieur à un, renvoyer le premier. |
statique | findAll(query: string): Promise<Contact[]> | trouver un contact par name ou alias |
statique | load(query: string): Contact | prendre contact par identifiant |
propriété | id: readonly string | obtenir l'identifiant du contact |
méthode | sync(): Promise<void> | forcer le rechargement des données pour le contact, synchroniser à nouveau les données de l'API de bas niveau |
méthode | say(text: string): Promise<void | Message> | envoyer un texte, un contact ou un fichier au contact, renvoyer le message envoyé par le bot (uniquement puppet-padplus pris en charge). |
méthode | self(): boolean | vérifier si le contact est lui-même |
méthode | name(): string | obtenir le nom d'un contact |
méthode | alias(): Promise<string> | obtenir l'alias d'un contact |
méthode | alias(newAlias: string): Promise<void> | définir ou supprimer l'alias d'un contact |
méthode | friend(): boolean | vérifie si le contact est un ami |
méthode | type(): ContactType | renvoie le type du contact |
méthode | province(): string | obtenir la région 'province' auprès d'un contact |
méthode | city(): string | obtenir la région « ville » à partir d'un contact |
méthode | avatar(): Promise<FileBox> | obtenir le flux de fichiers d'images d'avatar |
méthode | gender(): ContactGender | obtenir le sexe d'un contact |
ContactSelf
de classe La classe ContactSelf
est étendue à partir de Contact
.
ContactLui | API | Description |
---|---|---|
méthode | avatar(file: FileBox): Promise<void> | définir l'avatar du bot |
méthode | qrcode(): Promise<string> | obtenir le qrcode pour le bot |
méthode | signature(text: string): Promise<void> | définir la signature du bot |
Friendship
de classeEnvoyez, recevez des événements de demande d’ami et de confirmation d’ami.
Amitié | API | Description |
---|---|---|
statique | add(contact: Contact, hello?: string): Promise<void> | envoyer une invitation à un ami pour nous contacter |
méthode | accept(): Promise<void> | accepter la demande d'ami |
méthode | hello(): string | recevez le message de bonjour d'une invitation d'amitié |
méthode | contact(): Contact | obtenir le contact de l'amitié |
méthode | type(): FriendshipType | renvoyer le type d'amitié (inconnu, confirmer, recevoir, vérifier) |
Message
de 3e classeTous les messages WeChat seront encapsulés sous forme de message.
Message | API | Description |
---|---|---|
statique | find(query: string): Promise<null | Message> | trouver le message dans le cache et renvoyer le premier |
statique | findAll(query: string): Promise<Message[]> | rechercher des messages dans le cache, renvoyer une liste de messages |
méthode | from(): Contact | obtenir l'expéditeur d'un message |
méthode | to(): Contact | obtenir la destination du message |
méthode | room(): null | Room | récupérez la salle à partir du message. (Si le message n'est pas dans une salle, il renverra null ) |
méthode | text(): string | obtenir le contenu textuel du message |
méthode | say(text: string): Promise<void | Message> | répondez à un message texte, fichier multimédia ou contact à l'expéditeur, renvoyez le message envoyé par le bot (uniquement puppet-padplus pris en charge). |
méthode | type(): MessageType | obtenir le type du message |
méthode | self(): boolean | vérifier si un message est envoyé par moi-même |
méthode | mention(): Contact[] | obtenir le message mentionné contactList. |
méthode | mentionSelf(): boolean | vérifier si un message se mentionne |
méthode | forward(to: Contact): Promise<void> | Transférer le message reçu |
méthode | age(): number | le nombre de secondes depuis sa création |
méthode | date(): Date | l'époque à laquelle il a été créé |
méthode | toFileBox(): Promise<FileBox> | extrayez le fichier multimédia du message et placez-le dans la FileBox. |
méthode | toContact(): Promise<Contact> | obtenir la carte de partage du message |
Room
4 ClassesToutes les salles (groupes) WeChat seront encapsulées en tant que salle.
Chambre | API | Description |
---|---|---|
statique | create(contactList: Contact[], topic?: string): Promise<Room> | créer une nouvelle pièce |
statique | find(query: string): Promise<null | Room> | Essayez de trouver une chambre par filtre. Si vous en obtenez plusieurs, renvoyez le premier. |
statique | findAll(query: string): Promise<Room[]> | Trouver tous les contacts dans une salle |
statique | load(query: string): Room | charger la pièce par identifiant de pièce |
propriété | id: readonly string | |
événement | join | émettre lorsque quelqu'un rejoint une pièce |
événement | topic | émettre quand quelqu'un change de sujet de pièce |
événement | leave | émettre quand quelqu'un quitte la pièce |
événement | invite | émettre quand recevoir une invitation à une salle |
méthode | sync(): <Promise<void> | forcez le rechargement des données pour la pièce, synchronisez à nouveau les données de l'API de bas niveau. |
méthode | say(text: string): Promise<void | Message> | Envoyez du texte, un fichier multimédia, une carte de contact ou un texte avec mention @mention contact dans Room, renvoyez le message envoyé par le bot (uniquement puppet-padplus pris en charge). |
méthode | add(contact: Contact): Promise<void> | Ajouter un contact dans un salon |
méthode | del(contact: Contact): Promise<void> | Supprimer un contact de la salle |
méthode | quit(): Promise<void> | Bot a quitté la pièce lui-même |
méthode | topic(): Promise<string> | OBTENIR le sujet de la salle |
méthode | topic(newTopic: string): Promise<void> | DÉFINIR le sujet de la salle |
méthode | announce(text: string): Promise<void> | SET/GET annonce depuis la salle |
méthode | qrcode(): Promise<string> | Obtenez le code QR de la pièce depuis la pièce, qui peut être utilisé comme scan et rejoindre la pièce. |
méthode | alias(contact: Contact): Promise<string> | Retourner la chambre du contactAlias dans la chambre |
méthode | roomAlias(contact: Contact): Promise<string | null> | Identique à l'alias de fonction |
méthode | has(contact: Contact): Promise<boolean> | Vérifiez si la salle a contact membre |
méthode | memberAll(query?: string): Promise<Contact[]> | Trouver tous les contacts ou avec un nom spécifique dans une salle |
méthode | member(query: string): Promise<null | Contact> | Trouvez tous les contacts dans une pièce, s’il y en a plusieurs, renvoyez le premier. |
méthode | memberList():Promise<Contact[]> | récupérer tous les membres de la salle |
méthode | owner(): null | Contact | Faites sortir le propriétaire de la pièce. |
RoomInvitation
de classeAccepter l'invitation à la salle
ChambreInvitation | API | Description |
---|---|---|
méthode | accept(): Promise<void> | accepter l'invitation à la salle |
méthode | inviter(): Contact | obtenir l'invitation de la salle |
méthode | roomTopic(): Promise<string> | obtenir le sujet de la salle à partir de l'invitation à la salle |
méthode | date(): Promise<Date> | l'époque à laquelle il a été créé |
méthode | age(): Promise<number> | le nombre de secondes depuis sa création |
Wechaty est testé entièrement automatiquement par des tests unitaires et d'intégration, avec la prise en charge de l'intégration continue et de la livraison continue (CI/CD) optimisée par des CI comme Travis, Shippable et Appveyor.
Pour tester Wechaty, exécutez :
npm test
Apprenez-en plus sur les tests de Wiki:Tests
Créer et publier un plugin Wechaty est simple. Exposez simplement votre module comme une fonction qui prend 1 paramètre : wechaty. Lorsque votre plugin est importé par Wechaty, il se transmettra comme argument, et vous êtes donc libre d'ajouter n'importe quelle configuration prise en charge par Wechaty.
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
La config
existe pour que l'utilisateur puisse transmettre des personnalisations à votre plugin. En documentant votre plugin Wechaty, vous présenterez votre configuration prise en charge pour l'utilisateur.
Voir:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
Obtenez plus de code HTML/markdown intégré à partir de Wiki:Badge
Pull Request est bienvenu pour ajouter le vôtre !
Apprenez-en plus sur les projets utilisant Wechaty sur Wiki : Projets utilisant Wechaty
La meilleure pratique pour exécuter Wechaty Docker/NPM consiste à utiliser un VPS (Virtual Private Server) en dehors de la Chine, ce qui peut vous faire gagner des heures car npm install
et docker pull
se dérouleront sans problème sans aucun problème.
Les fournisseurs VPS suivants sont utilisés par l'équipe Wechaty et ont parfaitement fonctionné en production. Vous pouvez utiliser le lien suivant pour en obtenir un en quelques minutes. De plus, cela peut soutenir Wechaty car nous vous référons.
Emplacement | Prix | Bélier | Paiement | Fournisseur |
---|---|---|---|---|
Singapour | 5 $ | 512 Mo | Paypal | Océan Numérique |
Japon | 5 $ | 1 Go | Paypal | Linode |
Corée | 10 $ | 1 Go | Alipay, Paypal | Netdedi |
Singapour | 3,5 $ | 512 Mo | Alipay, Wechat | Vultr |
En 2017...
La vie quotidienne et le travail de Huan dépendent de trop de discussions sur WeChat.
Pouvez-vous imaginer cela ? Il était en train de mourir...
Donc, un robot infatigable travaillant pour moi 24h/24 et 7j/7 sur WeChat, surveillant/filtrant le message le plus important est absolument nécessaire. Par exemple, il met en évidence une discussion qui contient les MOTS CLÉS qu'il souhaite suivre (surtout dans une salle bruyante). ;-)
Enfin, il a été conçu pour l'étude personnelle de Huan, à savoir les tests automatiques.
Ce projet existe grâce à toutes les personnes qui y contribuent. [Contribuer].
Merci à tous nos contributeurs ! [Devenez contributeur]
Soutenez ce projet en devenant sponsor. Votre logo apparaîtra ici avec un lien vers votre site Web. [Devenez parrain]
Travailler sur la reduxification de l'écosystème Wechaty pour appliquer le modèle CQRS.
Deuxième version bêta de Wechaty, avec tous les modules npm de l'écosystème avec la version v1.10 (wechaty-puppet, wechaty-puppet-service, etc.)
Pour citer ce projet dans des publications :
@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} } ,
}