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
Voir le code pour la logique, il est concis et complet, assurez-vous de le lire
let bot = new Wechat ( [ botData ] )
Si botData
est transmis, ces informations sur le robot seront utilisées pour redémarrer la synchronisation précédente.
Toutes les propriétés sont en lecture seule
Informations de base exportables de l'instance Vous pourrez renseigner ces informations et les resynchroniser lors de la prochaine création d'un nouveau bot.
Informations nécessaires pour rester connecté
Informations de configuration, y compris l'adresse actuelle du serveur, le chemin de l'API et certaines constantes
Le programme doit utiliser les constantes de CONF pour déterminer le nouveau type de message de l'état actuel.
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 // 视频消息
Statut actuel
Informations sur l'utilisateur actuellement connecté
Tous les contacts, y compris les contacts du carnet d'adresses, les groupes de contacts récents et les comptes publics
La clé est le nom d'utilisateur du contact. Le nom d'utilisateur est l'UUID de chaque contact lors de cette connexion, mais il changera lors de votre prochaine connexion.
value est un objet Contact
. Pour les méthodes d'attribut spécifiques, voir src/interface/contact.js
Tous les messages reçus après la connexion
msg est un objet Message
Pour les méthodes d'attribut spécifiques, voir src/interface/message.js
Lancez une instance, connectez-vous et restez synchronisé
Après avoir appelé cette méthode, traitez le message en écoutant l'événement
Utilisez les informations nécessaires que l'instance a obtenues pour vous reconnecter et synchroniser
Arrêtez l'instance et déconnectez-vous
Après avoir appelé cette méthode, déconnectez-vous en écoutant l'événement logout
Personnaliser le contenu du message de battement de coeur
La fonction getter
renvoie le contenu du message de battement de cœur
typeof(getter())
devrait être "string"
bot . setRollingMessageGetter ( function ( ) {
//
return ( new Date ( ) ) . toJSON ( ) ;
} ) ;
Intervalle de battement de coeur personnalisé
La fonction getter
renvoie l'intervalle de battement de coeur en millisecondes
typeof(getter())
devrait être "number"
bot . setRollingIntervalGetter ( function ( ) {
return 2 * 60 * 1000 ;
} ) ;
Utilisateur cible de pulsation personnalisé
La fonction getter
renvoie UserName
de l'utilisateur cible (sous la forme de @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
)
typeof(getter())
devrait être "string"
Remarque : Si vous souhaitez utiliser bot.user.UserName
, vous devez définir l'utilisateur cible après l'événement login
.
bot . setRollingmeGetter ( function ( ) {
return bot . user . UserName ;
} ) ;
Les méthodes suivantes renvoient toutes Promise
Envoyez des messages texte, qui peuvent inclure des émoticônes (?) et des émoticônes QQ ([mauvais sourire])
Télécharger des fichiers multimédias
retour
{
name : name ,
size : size ,
ext : ext ,
mediatype : mediatype ,
mediaId : mediaId
}
Envoyer des images, mediaId est le mediaId renvoyé par uploadMedia
bot . uploadMedia ( fs . createReadStream ( 'test.png' ) )
. then ( res => {
return bot . sendPic ( res . mediaId , ToUserName )
} )
. catch ( err => {
console . log ( err )
} )
Envoie une émoticône, mais il s'agit du MD5 de l'émoticône ou du mediaId renvoyé par uploadMedia.
Le MD5 de l'émoticône peut être calculé par vous-même mais peut ne pas exister sur le serveur WeChat. Il peut également être obtenu à partir du message d'émoticône renvoyé par WeChat.
Envoyer la vidéo
Envoyez des fichiers sous forme de cartes d'application et vous pouvez envoyer des voix via cette API
L'encapsulation de la méthode d'envoi de messages ci-dessus est une méthode générale d'envoi de messages.
Lorsque msg
est une chaîne, envoyez un message texte
Lorsque msg
est {file:xxx,filename:'xxx.ext'}
, envoyez le fichier multimédia correspondant
Lorsque msg
est {emoticonMd5:xxx}
, envoyez une émoticône
bot . sendMsg ( {
file : request ( 'https://raw.githubusercontent.com/nodeWechat/wechat4u/master/bot-qrcode.jpg' ) ,
filename : 'bot-qrcode.jpg'
} , ToUserName )
. catch ( err => {
console . log ( err )
} )
Transférer le message, msg
msg
transmis par l'événement message
Retirer le message
MsgID
est l'ID représentant le message renvoyé après l'envoi du message.
bot . sendMsg ( '测试撤回' , toUserName )
. then ( res => {
return bot . revokeMsg ( res . MsgID , toUserName )
} )
. catch ( err => {
console . log ( err )
} )
Récupérer des contacts à partir du carnet d'adresses
Seq
est la séquence renvoyée après le dernier appel à bot.getContact. Il n'est pas nécessaire de la transmettre lors du premier appel.
Obtenir les données de contact spécifiées par lots
tableau contacts
, précisant les données à obtenir
Lorsque contacts
sont [{UserName: xxx}]
, les informations de contact ou de groupe spécifiées peuvent être obtenues
Lorsque contacts
sont [{UserName: xxx, EncryChatRoomId: xxx}]
, des informations détaillées sur les membres du groupe spécifié peuvent être obtenues et EncryChatRoomId peut être obtenu à partir des informations du groupe.
Obtenir l'avatar du contact
bot . getHeadImg ( bot . contacts [ UserName ] . HeadImgUrl ) . then ( res => {
fs . writeFileSync ( ` ${ UserName } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
Obtenez une photo ou une émoticône
bot . getMsgImg ( msg . MsgId ) . then ( res => {
fs . writeFileSync ( ` ${ msg . MsgId } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
Obtenez la voix
Obtenez de courtes vidéos ou des vidéos
Obtenez le fichier Lorsque MsgType
du message est 49 et que AppMsgType
est 6, il s'agit d'un fichier.
Ajouter des amis
UserName
peut généralement être obtenu à partir des informations du groupe
Informations de vérification Content
Ajouter une demande via un ami
Créer un groupe
Nom de discussion du groupe Topic
Tableau MemberList
, nom d'utilisateur d'au moins deux personnes en plus de vous-même, le format est [ {"UserName": "@250d8d156ad9f8b068c2e3df3464ecf2"}, {"UserName": "@42d725733741de6ac53cbe3738d8dd2e"} ]
Mettre à jour les membres du groupe
Nom d'utilisateur du groupe ChatRoomUserName
commençant par '@@'
Tableau MemberList
, contactez UserNa
fun
facultatif 'addmember', 'delmember', 'invitemember'
Mettre à jour le nom du groupe
Nom d'utilisateur du groupe ChatRoomUserName
commençant par '@@'
Chaîne NewName
, nouveau nom de groupe
Épinglez ou désépinglez un contact en haut. Vous pouvez obtenir le groupe ChatRoomOwner en désépinglant directement le groupe.
OP == 0 Désépingler
OP == 1 épinglé
Définir des notes ou des étiquettes de contact
Après avoir obtenu l'uuid, vous pouvez créer un code QR ou obtenir le code QR depuis le serveur 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 )
} )
Après avoir numérisé avec votre téléphone mobile, vous pouvez obtenir l'URL des données de l'avatar de l'utilisateur connecté.
Connexion de confirmation par téléphone portable
Déconnexion réussie
Mise à jour des contacts, vous pouvez obtenir la liste de contacts mise à jour
Pour tous les messages obtenus via la synchronisation, le type de message est déterminé par 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
}
} )
Chaque contact hérite de interface/contact et étend les attributs suivants en plus du json d'origine :
contact . AvatarUrl // 处理过的头像地址
contact . isSelf // 是否是登录用户本人
contact . getDisplayName ( )
contact . canSearch ( keyword )
De plus, wechat4u fournit Contact comme interface commune pour les contacts sur l'instance, étendant les propriétés suivantes :
wechat . Contact . isRoomContact ( )
wechat . Contact . isSpContact ( )
wechat . Contact . isPublicContact ( )
wechat . Contact . getUserByUserName ( )
wechat . Contact . getSearchUser ( keyword )
Chaque objet msg hérite de l'interface/message et possède les attributs suivants en plus du json d'origine :
message . isSendBySelf // 是否是本人发送
message . isSendBy ( contact )
message . getPeerUserName ( ) // 获取所属对话的联系人 UserName
message . getDisplayTime ( ) // 获取形如 12:00 的时间戳信息
Concernant la mise en place des robots web WeChat, il y a déjà beaucoup de rouages. Merci à tous ! (Le classement n'est pas en ordre. La collection doit être inégale.)
Concernant la description de l'interface de la page web WeChat, plusieurs articles l'analysent très bien.
MIT