Wechaty es un SDK de RPA conversacional que simplifica el proceso de creación de chatbots. Es como una navaja suiza para el desarrollo de chatbots, ya que proporciona una interfaz universal para varias plataformas de mensajería como WhatsApp, WeChat y más. Con Wechaty, escribes el código de tu bot una vez y se ejecuta en cualquiera de las plataformas compatibles. Esto significa que puede concentrarse en crear experiencias de conversación atractivas sin preocuparse por las complejidades subyacentes de la API de cada plataforma. Es de código abierto, fácil de usar y está respaldado por una comunidad vibrante que está lista para ayudarlo a hacer realidad sus ideas de chatbot.
Wechaty es un SDK de RPA (Automatización de procesos robóticos) para Chatbot Makers que puede ayudarlo a crear un bot en 6 líneas de JavaScript, Python, Go y Java, con soporte multiplataforma que incluye Linux, Windows, MacOS y 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 es una gran solución; creo que muchos más usuarios la reconocerían". enlace
— @Gcaufy, ingeniero de Tencent, autor de WePY"太好用,好用的想哭"
— @xinbenlv, ingeniero de Google, fundador de HaoShiYou.org”好用到哭“——你们对得起这个评价! enlace
— @bigbrother666sh, creador de《社长不见了》剧本杀 NPC DMEnlace "最好的微信开发库"
— @Jarvis, ingeniero de BaiduEnlace "Wechaty让运营人员更多的时间思考如何进行活动策划、留存用户,商业变现"
— @lijiarui, fundador y director ejecutivo de Juzi.BOT."Si conoces js... prueba Wechaty. Es fácil de usar".
— @Urinx Uri Lee, autor de WeixinBot (Python)"Wechaty es un buen proyecto; ¡espero que pueda continuar! Por eso, me convertí en colaborador del colectivo abierto".
- @Simple
Ver más en Wiki: Voz del desarrollador
Wechaty es utilizado en muchos proyectos ChatBot por miles de desarrolladores. Para hablar con otros desarrolladores, escanee el código QR a continuación y únase a nuestra comunidad de desarrolladores Wechaty .
¡Escanee ahora porque otros desarrolladores de Wechaty también quieren hablar con usted!
Wechaty ya ha realizado muchas charlas y publicado muchos blogs en los últimos años; Aquí están todos los recursos de 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 ( )
Aviso: Wechaty requiere la versión de Node.js >= 16
Este bot puede registrar todos los mensajes en la consola después de iniciar sesión mediante el escaneo.
Puede encontrar ejemplos oficiales de Wechaty en ejemplos/ding-dong-bot.ts y más en nuestro Directorio de ejemplos.
Tenemos un repositorio inicial de Wechaty para principiantes con la configuración más sencilla. Funcionará de inmediato después de clone
y npm install
y npm start
.
Si es nuevo en Wechaty y desea probarlo por primera vez, nos gustaría recomendarle encarecidamente que comience desde este repositorio y lo utilice como plantilla inicial para su proyecto.
De lo contrario, guarde el código de ChatBot más corto del mundo: 6 líneas de ejemplo de JavaScript anterior en un archivo llamado bot.js
antes de poder usar NPM o Docker para ejecutarlo.
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 admite JavaScript y TypeScript. Para usar TypeScript simplemente escriba en TypeScript y guárdelo con el nombre de extensión
.ts
, no es necesario compilarlo porque usamosts-node
para ejecutarlo.
2.1. Ejecutar JavaScript
# for JavaScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.js
2.2. Ejecutar mecanografiado
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
Obtenga más información sobre Wechaty Docker en Wiki:Docker.
Wechaty es muy poderoso y puede ejecutar diferentes protocolos. Puede especificar el protocolo configurando la variable de entorno WECHATY_PUPPET
en un proveedor de marionetas diferente.
Si no puede utilizar el protocolo web, puede aplicar otros protocolos siguiendo las instrucciones aquí: https://github.com/wechaty/wechaty/wiki/Support-Developers Proporcionamos token gratuito para ayudar a los desarrolladores a crear un valioso chatbot WeChat.
Actualmente admitimos los siguientes proveedores de títeres:
Protocolo | Proveedor de marionetas | Variable de entorno |
---|---|---|
Web | TitiriteroTitiritero | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
ventanas | Trabajo de títeresPro | export WECHATY_PUPPET=wechaty-puppet-service |
Imitar | Marioneta | export WECHATY_PUPPET=wechaty-puppet-mock |
Web | MarionetaWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | marionetaroca | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | MarionetaPadLocal | export WECHATY_PUPPET=wechaty-puppet-service |
ventanas | MarionetaDonut | 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 | |
Impermeable | export WECHATY_PUPPET=wechaty-puppet-macpro | |
ventanas | export WECHATY_PUPPET=wechaty-puppet-service |
Obtenga más información sobre Wechaty Puppet en Puppet Wiki:
Lea la documentación completa en la referencia oficial de API de Wechaty
Wechaty
Clase de bot principal.
Un Bot
es una instancia de Wechaty que controla un títere de Wechaty específico.
new Wechaty(options?: WechatyOptions)
options.name?: string
del nombre de este bot (opcional)options.puppet?: string
selecciona qué proveedor de títeres queremos usar. debe ser uno de los:options.puppetOptions?: PuppetOptions
para el proveedor de títeres.wechaty | API | Descripción |
---|---|---|
evento | login | emitir después de que el bot inicie sesión con éxito |
evento | logout | emitir después de que el bot cierre la sesión |
evento | friendship | emitir cuando alguien le envía al bot una solicitud de amistad |
evento | message | emitir cuando hay un nuevo mensaje |
evento | room-join | emitir cuando alguien se une a cualquier habitación |
evento | room-topic | emitir cuando alguien cambia el tema de la habitación |
evento | room-leave | emitir cuando alguien sale de la habitación |
evento | room-invite | emitir cuando hay una invitación a una sala |
evento | scan | emitir cuando el bot necesita mostrarle un código QR para escanear |
método | start(): Promise<void> | iniciar el robot |
método | stop(): Promise<void> | detener el robot |
método | logonoff(): boolean | estado de inicio de sesión del robot |
método | logout(): Promise<void> | cerrar sesión en el robot |
método | currentUser(): ContactSelf | obtener el contacto del bot iniciado sesión |
método | say(text: string): Promise<void> | dejar que el bot se diga text a sí mismo |
Contact
de 2 clasesTodos los contactos de WeChat (amigos/no amigos) se encapsularán como un contacto.
Contacto | API | Descripción |
---|---|---|
estático | find(query: string): Promise<null | Contact> | busque el contacto por nombre o alias, si el resultado es más de uno, devuelva el primero. |
estático | findAll(query: string): Promise<Contact[]> | buscar contacto por name o alias |
estático | load(query: string): Contact | obtener contacto por identificación |
propiedad | id: readonly string | obtener identificación de contacto |
método | sync(): Promise<void> | forzar la recarga de datos para el contacto, sincronizar datos desde la API de bajo nivel nuevamente |
método | say(text: string): Promise<void | Message> | enviar texto, contacto o archivo al contacto, devolver el mensaje que envió el bot (solo se admite puppet-padplus ). |
método | self(): boolean | comprobar si el contacto es propio |
método | name(): string | obtener el nombre de un contacto |
método | alias(): Promise<string> | obtener el alias de un contacto |
método | alias(newAlias: string): Promise<void> | establecer o eliminar el alias de un contacto |
método | friend(): boolean | comprobar si el contacto es amigo |
método | type(): ContactType | devolver el tipo de contacto |
método | province(): string | obtener la región 'provincia' de un contacto |
método | city(): string | obtener la región 'ciudad' de un contacto |
método | avatar(): Promise<FileBox> | obtener flujo de archivo de imagen de avatar |
método | gender(): ContactGender | obtener género de un contacto |
ContactSelf
de clase con uno mismo La clase ContactSelf
se extiende desde Contact
.
ContactoAuto | API | Descripción |
---|---|---|
método | avatar(file: FileBox): Promise<void> | establecer avatar para bot |
método | qrcode(): Promise<string> | obtener código qr para bot |
método | signature(text: string): Promise<void> | establecer firma para bot |
Friendship
de claseEnviar, recibir solicitudes de amistad y eventos de confirmación de amistad.
Amistad | API | Descripción |
---|---|---|
estático | add(contact: Contact, hello?: string): Promise<void> | enviar una invitación de amigo para contactar |
método | accept(): Promise<void> | aceptar solicitud de amistad |
método | hello(): string | obtener la cadena de saludo de una invitación de amistad |
método | contact(): Contact | obtener el contacto de la amistad |
método | type(): FriendshipType | devolver el tipo de amistad (desconocido, confirmar, recibir, verificar) |
Message
de 3 clasesTodos los mensajes de WeChat se encapsularán como un Mensaje.
Mensaje | API | Descripción |
---|---|---|
estático | find(query: string): Promise<null | Message> | buscar mensaje en caché y devolver el primero |
estático | findAll(query: string): Promise<Message[]> | buscar mensajes en caché, devolver una lista de mensajes |
método | from(): Contact | obtener el remitente de un mensaje |
método | to(): Contact | obtener el destino del mensaje |
método | room(): null | Room | obtenga la sala del mensaje. (Si el mensaje no está en una sala, devolverá null ) |
método | text(): string | obtener el contenido del texto del mensaje |
método | say(text: string): Promise<void | Message> | Responda un mensaje de texto, archivo multimedia o contacto al remitente y devuelva el mensaje que envió el bot (solo se admite puppet-padplus ). |
método | type(): MessageType | obtener el tipo del mensaje |
método | self(): boolean | comprobar si un mensaje es enviado por uno mismo |
método | mention(): Contact[] | recibir el mensaje mencionado en la lista de contactos. |
método | mentionSelf(): boolean | comprobar si un mensaje se menciona a sí mismo |
método | forward(to: Contact): Promise<void> | Reenviar el mensaje recibido |
método | age(): number | el número de segundos desde que se creó |
método | date(): Date | el momento en que fue creado |
método | toFileBox(): Promise<FileBox> | extraiga el archivo multimedia del mensaje y colóquelo en FileBox. |
método | toContact(): Promise<Contact> | obtener tarjeta compartida del mensaje |
Room
de 4 clasesTodas las salas (grupos) de WeChat se encapsularán como una sala.
Habitación | API | Descripción |
---|---|---|
estático | create(contactList: Contact[], topic?: string): Promise<Room> | crear una nueva habitación |
estático | find(query: string): Promise<null | Room> | Intenta encontrar una habitación por filtro. Si consigues muchos, devuelve el primero. |
estático | findAll(query: string): Promise<Room[]> | Encuentra todos los contactos en una sala |
estático | load(query: string): Room | cargar habitación por ID de habitación |
propiedad | id: readonly string | |
evento | join | emitir cuando alguien se une a cualquier habitación |
evento | topic | emitir cuando alguien cambia el tema de la habitación |
evento | leave | emitir cuando alguien sale de la habitación |
evento | invite | emitir al recibir una invitación a una sala |
método | sync(): <Promise<void> | forzar la recarga de datos para la habitación, sincronizar los datos desde la API de bajo nivel nuevamente. |
método | say(text: string): Promise<void | Message> | Envíe texto, archivo multimedia, tarjeta de contacto o texto con mención @mencionar contacto dentro de Room, devuelva el mensaje que envió el bot (solo se admite puppet-padplus ). |
método | add(contact: Contact): Promise<void> | Agregar contacto en una sala |
método | del(contact: Contact): Promise<void> | Eliminar un contacto de la sala |
método | quit(): Promise<void> | Bot salió de la habitación. |
método | topic(): Promise<string> | OBTENER tema de la sala |
método | topic(newTopic: string): Promise<void> | ESTABLECER tema de la sala |
método | announce(text: string): Promise<void> | SET/GET anunciar desde la sala |
método | qrcode(): Promise<string> | Obtenga el código QR de la sala, que puede usarse para escanear y unirse a la sala. |
método | alias(contact: Contact): Promise<string> | Devolver la habitación del contactoAlias en la habitación |
método | roomAlias(contact: Contact): Promise<string | null> | Igual que el alias de función |
método | has(contact: Contact): Promise<boolean> | Compruebe si la sala tiene contact de miembro. |
método | memberAll(query?: string): Promise<Contact[]> | Encuentra todos los contactos o con nombre específico en una sala |
método | member(query: string): Promise<null | Contact> | Encuentra todos los contactos en una habitación, si tienes muchos, devuelve el primero. |
método | memberList():Promise<Contact[]> | sacar a todos los miembros de la sala |
método | owner(): null | Contact | Obtenga al dueño de la habitación de la habitación. |
RoomInvitation
de clasesAceptar invitación a la sala
HabitaciónInvitación | API | Descripción |
---|---|---|
método | accept(): Promise<void> | aceptar invitación a la habitación |
método | inviter(): Contact | obtener el invitado de la invitación a la sala |
método | roomTopic(): Promise<string> | obtener el tema de la sala de la invitación a la sala |
método | date(): Promise<Date> | el momento en que fue creado |
método | age(): Promise<number> | el número de segundos desde que se creó |
Wechaty se prueba de forma totalmente automática mediante pruebas unitarias y de integración, con soporte de integración continua y entrega continua (CI/CD) impulsado por CI como Travis, Shippable y Appveyor.
Para probar Wechaty, ejecute:
npm test
Conozca más sobre las pruebas de Wiki:Pruebas
Crear y publicar un complemento Wechaty es sencillo. Simplemente exponga su módulo como una función que toma 1 parámetro: wechaty. Cuando Wechaty importe su complemento, se pasará a sí mismo como argumento, por lo que podrá agregar cualquier configuración que admita Wechaty.
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
La config
existe para que el usuario pueda pasar personalizaciones a su complemento. Al documentar su complemento Wechaty, deberá presentar su configuración admitida para el usuario.
Ver:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
Obtenga más código html/markdown para insertar de Wiki:Badge
¡Pull Request puede agregar el suyo!
Obtenga más información sobre proyectos que utilizan Wechaty en Wiki:Proyectos que utilizan Wechaty
La mejor práctica para ejecutar Wechaty Docker/NPM es utilizar un VPS (servidor privado virtual) fuera de China, lo que puede ahorrarle horas de tiempo porque npm install
y docker pull
se ejecutarán sin problemas y sin ningún problema.
El equipo de Wechaty utiliza los siguientes proveedores de VPS y funcionaron perfectamente en producción. Puede utilizar el siguiente enlace para obtener uno en minutos. Además, hacer esto puede ayudar a Wechaty porque usted es recomendado por nosotros.
Ubicación | Precio | RAM | Pago | Proveedor |
---|---|---|---|---|
Singapur | $5 | 512MB | PayPal | Océano Digital |
Japón | $5 | 1GB | PayPal | Linodo |
Corea | $10 | 1GB | Alipay, Paypal | Netdedi |
Singapur | $3.5 | 512MB | Alipay, Wechat | Vultr |
En 2017...
La vida diaria y el trabajo de Huan dependen de demasiadas conversaciones en WeChat.
¿Te imaginas eso? Estaba muriendo...
Entonces, es muy necesario un robot incansable que trabaje para mí las 24 horas del día, los 7 días de la semana en WeChat, monitoreando/filtrando el mensaje más importante. Por ejemplo, resalta la discusión que contiene las PALABRAS CLAVE que desea seguir (especialmente en una habitación ruidosa). ;-)
Por fin, está diseñado para el propósito de estudio personal de Huan de realizar pruebas automáticas.
Este proyecto existe gracias a todas las personas que contribuyen. [Contribuir].
¡Gracias a todos nuestros patrocinadores! [Conviértete en patrocinador]
Apoya este proyecto convirtiéndote en patrocinador. Su logotipo aparecerá aquí con un enlace a su sitio web. [Conviértete en patrocinador]
Trabajando en reduxificar el ecosistema Wechaty para aplicar el patrón CQRS.
Segunda versión beta de Wechaty, con todos los módulos npm del ecosistema con la versión v1.10 (wechaty-puppet, wechaty-puppet-service, etc.)
Para citar este proyecto en publicaciones:
@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} } ,
}