npm install --save wechat4u@latest
const Wechat = require ( 'wechat4u' )
let bot = new Wechat ( )
bot . start ( )
// 或使用核心API
// const WechatCore = require('wechat4u/lib/core')
git clone https://github.com/nodeWechat/wechat4u.git
cd wechat4u
npm install
npm run core // 命令行模式
npm run compile // babel编译
node run-core.js
Consulte el código para conocer la lógica, es conciso y completo, asegúrese de leerlo.
let bot = new Wechat ( [ botData ] )
Si se pasa botData
, esta información del robot se utilizará para reiniciar la sincronización anterior.
Todas las propiedades son de solo lectura
Información básica exportable de la instancia. Puede completar esta información y resincronizarla la próxima vez que cree un nuevo bot.
Información necesaria para permanecer conectado
Información de configuración, incluida la dirección actual del servidor, la ruta API y algunas constantes
El programa necesita usar las constantes en CONF para determinar el nuevo tipo de mensaje del estado actual.
bot . state == bot . CONF . STATE . init // 初始化状态
bot . state == bot . CONF . STATE . uuid // 已获取 UUID
bot . state == bot . CONF . STATE . login // 已登录
bot . state == bot . CONF . STATE . logout // 已退出登录
msg . MsgType == bot . CONF . MSGTYPE_TEXT // 文本消息
msg . MsgType == bot . CONF . MSGTYPE_IMAGE // 图片消息
msg . MsgType == bot . CONF . MSGTYPE_VOICE // 语音消息
msg . MsgType == bot . CONF . MSGTYPE_EMOTICON // 自定义表情消息
msg . MsgType == bot . CONF . MSGTYPE_MICROVIDEO // 小视频消息
msg . MsgType == bot . CONF . MSGTYPE_VIDEO // 视频消息
Estado actual
Información del usuario que ha iniciado sesión actualmente
Todos los contactos, incluidos los contactos de la libreta de direcciones, los grupos de contactos recientes y las cuentas públicas
La clave es el nombre de usuario del contacto. El nombre de usuario es el UUID de cada contacto durante este inicio de sesión, pero cambiará la próxima vez que inicie sesión.
El valor es un objeto Contact
. Para conocer métodos de atributos específicos, consulte src/interface/contact.js
Todos los mensajes recibidos después de iniciar sesión
msg es un objeto Message
. Para conocer métodos de atributos específicos, consulte src/interface/message.js
Inicie una instancia, inicie sesión y manténgase sincronizado
Después de llamar a este método, procese el mensaje escuchando el evento.
Utilice la información necesaria que la instancia ha obtenido para iniciar sesión nuevamente y sincronizar
Detener la instancia y cerrar sesión
Después de llamar a este método, cierre la sesión escuchando el evento logout
.
Personalizar el contenido del mensaje de latidos
La función getter
devuelve el contenido del mensaje de latido.
typeof(getter())
debe ser "string"
bot . setRollingMessageGetter ( function ( ) {
//
return ( new Date ( ) ) . toJSON ( ) ;
} ) ;
Intervalo de latido personalizado
La función getter
devuelve el intervalo de latido en milisegundos
typeof(getter())
debe ser "number"
bot . setRollingIntervalGetter ( function ( ) {
return 2 * 60 * 1000 ;
} ) ;
Usuario objetivo de latido personalizado
La función getter
devuelve UserName
del usuario de destino (en el formato @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
)
typeof(getter())
debe ser "string"
Nota: Si desea utilizar bot.user.UserName
, debe definir el usuario objetivo después del evento login
.
bot . setRollingmeGetter ( function ( ) {
return bot . user . UserName ;
} ) ;
Todos los siguientes métodos devuelven Promesa
Enviar mensajes de texto, que pueden incluir emoji (?) y emoticonos QQ ([mala sonrisa])
Subir archivos multimedia
devolver
{
name : name ,
size : size ,
ext : ext ,
mediatype : mediatype ,
mediaId : mediaId
}
Envíe imágenes, mediaId es el mediaId devuelto por uploadMedia
bot . uploadMedia ( fs . createReadStream ( 'test.png' ) )
. then ( res => {
return bot . sendPic ( res . mediaId , ToUserName )
} )
. catch ( err => {
console . log ( err )
} )
Envía un emoticón, pero es el MD5 del emoticón o el mediaId devuelto por uploadMedia.
El MD5 del emoticón lo puede calcular usted mismo, pero es posible que no exista en el servidor WeChat. También se puede obtener del mensaje de emoticón devuelto por WeChat.
enviar vídeo
Envíe archivos como tarjetas de aplicación y podrá enviar voces a través de esta API
La encapsulación del método anterior para enviar mensajes es un método general para enviar mensajes.
Cuando msg
es una cadena, envía un mensaje de texto
Cuando msg
sea {file:xxx,filename:'xxx.ext'}
, envíe el archivo multimedia correspondiente
Cuando msg
sea {emoticonMd5:xxx}
, envíe el emoticón
bot . sendMsg ( {
file : request ( 'https://raw.githubusercontent.com/nodeWechat/wechat4u/master/bot-qrcode.jpg' ) ,
filename : 'bot-qrcode.jpg'
} , ToUserName )
. catch ( err => {
console . log ( err )
} )
Reenviar el mensaje, msg
msg
pasado por el evento message
Retirar mensaje
MsgID
es el ID que representa el mensaje devuelto después de enviarlo.
bot . sendMsg ( '测试撤回' , toUserName )
. then ( res => {
return bot . revokeMsg ( res . MsgID , toUserName )
} )
. catch ( err => {
console . log ( err )
} )
Obtener contactos de la libreta de direcciones
Seq
es la secuencia devuelta después de la última llamada a bot.getContact. No es necesario pasarla en la primera llamada.
Obtenga datos de contacto específicos en lotes
matriz contacts
, especificando los datos a obtener
Cuando contacts
es [{UserName: xxx}]
, se puede obtener la información del contacto o grupo especificado.
Cuando contacts
es [{UserName: xxx, EncryChatRoomId: xxx}]
, se puede obtener información detallada de los miembros del grupo especificado y EncryChatRoomId se puede obtener de la información del grupo.
Obtener avatar de contacto
bot . getHeadImg ( bot . contacts [ UserName ] . HeadImgUrl ) . then ( res => {
fs . writeFileSync ( ` ${ UserName } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
Obtener una imagen o un emoticón
bot . getMsgImg ( msg . MsgId ) . then ( res => {
fs . writeFileSync ( ` ${ msg . MsgId } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
obtener voz
Obtener vídeos o vídeos cortos
Obtenga el archivo. Cuando MsgType
del mensaje es 49 y AppMsgType
es 6, es un archivo.
Agregar amigos
UserName
generalmente se puede obtener de la información del grupo.
Información de verificación Content
Agregar solicitud a través de un amigo
Crear un grupo
Nombre del chat del grupo Topic
Matriz MemberList
, nombre de usuario de al menos dos personas además de usted, el formato es [ {"UserName":"@250d8d156ad9f8b068c2e3df3464ecf2"}, {"UserName":"@42d725733741de6ac53cbe3738d8dd2e"}]
Actualizar miembros del grupo
ChatRoomUserName
Nombre de usuario del grupo que comienza con '@@'
Matriz MemberList
, póngase en contacto con UserNa
fun
opcional 'addmember', 'delmember', 'invitemember'
Actualizar nombre del grupo
ChatRoomUserName
Nombre de usuario del grupo que comienza con '@@'
Cadena NewName
, nuevo nombre de grupo
Anclar o desanclar un contacto en la parte superior. Puede obtener el ChatRoomOwner del grupo desanclando directamente el grupo.
OP == 0 Desanclar
OP == 1 fijado
Establecer notas o etiquetas de contacto
Después de obtener el uuid, puede crear un código QR u obtener el código QR del servidor WeChat.
bot . on ( 'uuid' , uuid => {
qrcode . generate ( 'https://login.weixin.qq.com/l/' + uuid , {
small : true
} )
console . log ( '二维码链接:' , 'https://login.weixin.qq.com/qrcode/' + uuid )
} )
Después de escanear con su teléfono móvil, puede obtener la URL de datos del avatar del usuario que inició sesión.
Inicio de sesión de confirmación del teléfono móvil
Cerró sesión exitosamente
Actualización de contactos, puede obtener la lista de contactos actualizada
Para todos los mensajes obtenidos mediante sincronización, el tipo de mensaje está determinado por msg.MsgType
bot . on ( 'message' , msg => {
switch ( msg . MsgType ) {
case bot . CONF . MSGTYPE_STATUSNOTIFY :
break
case bot . CONF . MSGTYPE_TEXT :
break
case bot . CONF . MSGTYPE_RECALLED :
break
}
} )
Cada contacto hereda de la interfaz/contacto y extiende los siguientes atributos además del json original:
contact . AvatarUrl // 处理过的头像地址
contact . isSelf // 是否是登录用户本人
contact . getDisplayName ( )
contact . canSearch ( keyword )
Además, wechat4u proporciona Contacto como una interfaz común para los contactos en la instancia, ampliando las siguientes propiedades:
wechat . Contact . isRoomContact ( )
wechat . Contact . isSpContact ( )
wechat . Contact . isPublicContact ( )
wechat . Contact . getUserByUserName ( )
wechat . Contact . getSearchUser ( keyword )
Cada objeto msg hereda de la interfaz/mensaje y tiene los siguientes atributos además del json original:
message . isSendBySelf // 是否是本人发送
message . isSendBy ( contact )
message . getPeerUserName ( ) // 获取所属对话的联系人 UserName
message . getDisplayTime ( ) // 获取形如 12:00 的时间戳信息
En cuanto a la implementación de robots web WeChat, ya hay muchas ruedas. ¡Gracias a todos! (La clasificación no está en orden. La colección debe ser desigual).
En cuanto a la descripción de la interfaz de la página web WeChat, hay varios artículos que la analizan muy bien.
MIT