Öffentliche WeChat-Konten können ohne WeChat-Authentifizierung automatisch Text- und Grafiknachrichten an Gruppen senden.
npm i wechat-mp-hack --save
const Wechat = require ( 'wechat-mp-hack' ) ;
const API = new Wechat ( '公众号账号' , '公众号密码' ) ;
Nach Version
1.1.0
ist es nicht mehr erforderlich, die aufrufende Methode inlogin
-Callback einzubinden und auszuführen. Der Login wird automatisch verarbeitet, wenn die folgenden Kernmethoden aufgerufen werden.
QR-Code zur Anmeldeauthentifizierung
API . once ( 'scan.login' , ( filepath ) => {
// 登录二维码图片地址
console . log ( filepath ) ;
} ) ;
Nach dem Aktivieren des Massenauthentifizierungsschutzes erfordert der Aufruf der Massenschnittstelle, dass WeChat den QR-Code scannt.
API . on ( 'scan.send' , ( filepath ) => {
// 群发认证二维码地址
console . log ( filepath ) ;
} ) ;
Anmeldebestätigungscode
API . once ( 'vcode' , ( filepath ) => {
// 验证码图片地址
console . log ( filepath ) ;
} ) ;
Login-Schnittstelle
/**
* @desc 登录公众号
* @param {string} [imgcode] - [可选]验证码
* @return {Promise<object>} data
*/
API . login ( ) . then ( data => {
console . log ( data ) ;
} ) . catch ( console . error ) ;
Überprüfen Sie, ob Sie angemeldet sind
try {
let islogin = await API . loginchk ( ) ;
console . log ( '已登录' ) ;
} catch ( e ) {
console . log ( '未登录' ) ;
}
Holen Sie sich eine Liste mit Bild-, Text-/Videomaterialien
/**
* 获取图文/视频素材列表
* @param {number} [type] - 消息类型:图文消息-10 视频消息-15 默认-10
* @param {number} [begin] - 从第几条开始 默认-0
* @param {number} [count] - 返回条数 默认-10
* @return {Promise<array>} - 素材列表
* @return {number} [].app_id - 素材id appMsgId
* @return {string} [].author - 作者
* @return {string} [].create_time - 创建时间,单位秒
* @return {number} [].data_seq
* @return {string} [].digest - 素材描述信息
* @return {number} [].file_id
* @return {string} [].img_url - 图片地址
* @return {number} [].is_illegal
* @return {number} [].is_sync_top_stories
* @return {array} [].multi_item - 素材资源列表(一个素材下面有多个文章)
* @return {string} [].multi_item[].author - 文章作者
* @return {string} [].multi_item[].author_appid
* @return {number} [].multi_item[].can_reward - 文章是否可打赏,0否
* @return {string} [].multi_item[].cdn_url - 图片/视频地址
* @return {string} [].multi_item[].cdn_url_back
* @return {number} [].multi_item[].cover - 封面图片地址
* @return {string} [].multi_item[].digest - 文章描述
* @return {number} [].multi_item[].file_id
* @return {string} [].multi_item[].free_content
* @return {number} [].multi_item[].is_new_video
* @return {number} [].multi_item[].need_open_comment
* @return {boolean} [].multi_item[].only_fans_can_comment
* @return {string} [].multi_item[].ori_white_list
* @return {number} [].multi_item[].review_status
* @return {number} [].multi_item[].reward_money
* @return {string} [].multi_item[].reward_wording
* @return {number} [].multi_item[].seq
* @return {number} [].multi_item[].show_cover_pic
* @return {number} [].multi_item[].smart_product
* @return {string} [].multi_item[].source_url - 原文地址
* @return {string} [].multi_item[].title - 文章标题
* @return {array<string>} [].multi_item[].tags - 文章标签
*/
API . appmsg ( ) . then ( ( items ) => {
console . log ( items ) ;
} ) . catch ( console . error ) ;
Holen Sie sich eine Bild-/Sprachmaterialliste
/**
* 获取图片/语音素材列表
* @param {number} [type] - 素材类型:图片素材-2 语音素材-3 默认-2
* @param {number} [begin] - 从第几条开始 默认-0
* @param {number} [count] - 返回条数 默认-10
* @param {number} [group_id] - 图片素材专用,分组id 全部图片-0 未分组-1 文章配图-3 或者其它你自己新建的分组id
* @return {Promise<array>} - 素材列表
* @return {string} [].cdn_url - 资源地址
* @return {number} [].file_id
* @return {number} [].group_id - 分组id
* @return {string} [].img_format - 图片类型:png...
* @return {string} [].name - 资源名称,如:1488631877698.png
* @return {number} [].seq
* @return {string} [].size - 资源大小,如:749.4 K
* @return {number} [].type
* @return {number} [].update_time - 单位:秒
* @return {string} [].video_cdn_id
* @return {string} [].video_thumb_cdn_url
*/
API . filepage ( ) . then ( ( files ) => {
console . log ( files ) ;
} ) . catch ( console . error ) ;
Grafiken und Textmaterialien erstellen/aktualisieren
/**
* 创建图文素材
* @param {array} news - 消息列表
* @param {string} news[].title - 文章标题
* @param {string} news[].thumb - 文章缩略图
* @param {string} news[].description - 描述信息
* @param {string} news[].html - 文章内容
* @param {string} news[].url - 原文地址
* @param {number} [appMsgId] - 图文素材id,传此字段表示更新图文素材
* @return {Promise} appMsgId
*/
API . operate_appmsg ( news ) . then ( ( appMsgId ) => {
console . log ( appMsgId ) ;
} ) . catch ( console . error ) ;
Bildmaterial löschen
/**
* 删除图文素材
* @param {number} [appMsgId] - 图文素材id
*/
API . del_appmsg ( appMsgId ) . then ( res => {
console . log ( res ) ;
console . log ( '删除成功' ) ;
} ) ;
Laden Sie Remote-Bilder stapelweise auf ein öffentliches Konto hoch
/**
* 批量上传远程图片至公众号
* @param {array<string>} imgurls - 远程图片地址
*/
API . batchUpload ( [ 'http://wesbos.com/wp-content/uploads/2016/09/dead-zone.png' ] ) . then ( results => {
// results[0].fileid;
// results[0].cdn_url;
} ) ;
Laden Sie ein einzelnes Remote-Bild auf das offizielle Konto hoch
/**
* 上传单个远程图片至公众号
* @param {string} imgurl - 远程图片地址
*/
API . filetransfer ( 'http://wesbos.com/wp-content/uploads/2016/09/dead-zone.png' ) . then ( console . log ) ;
Laden Sie lokale Bilder auf das öffentliche Konto hoch
/**
* 上传本地图片至公众号
* @param {string} filepath - 本地图片地址
* @return {Promise<object>} res
* @return {number} res.fileid - 资源id
* @return {string} res.cdn_url - 资源链接地址
*/
API . localUpload ( 'qrcode-safe.png' ) . then ( result => {
console . log ( result ) ;
} ) ;
Laden Sie Remote-Bilder auf CDN hoch
/**
* 上传远程图片上传至cdn
* @param {string} imgurl - 远程图片地址
* @return {Promise<string>} - 微信cdn资源地址
*/
API . uploadimg2cdn ( 'https://www.baidu.com/img/[email protected]' )
Holen Sie sich den temporären Vorschaulink für Artikel mit Grafik- und Textmaterial
/**
* 获取图文素材文章临时预览链接
* @param {number} appmsgid - 图文素材id
* @param {number} [itemidx] - 文章在图文素材中的索引,从1开始 默认: 1
* @return {Promise<string>} - 文章临时预览链接
*/
API . preview_post ( 100000126 , 2 ) . then ( post_url => {
console . log ( post_url ) ;
} ) . catch ( console . error ) ;
Vorschau der Gruppennachricht
/**
* 预览群发消息
* @param {string} username - 预览人微信号/QQ号/手机号
* @param {number|string} content - 预览内容,图文消息-appmsgid 文字-content 图片/语音/视频-fileid
* @param {number} [type] - 消息类型:图文消息-10 文字-1 图片-2 语音-3 视频-15 默认-10
*/
API . preview_appmsg ( 'Zaker-yhz' , 100000126 ) . then ( res => {
console . log ( '预览发送成功' ) ;
} ) . catch ( console . error ) ;
Gruppennachricht
/**
* 群发消息
* @param {number|string} appmsgid - 消息内容,图文消息-appmsgid 文字-文字内容 图片/语音/视频-fileid
* @param {number} [groupid] - 分组id,默认-1 所有用户
* @param {number} [send_time] - 定时群发,默认-0 不定时群发 定时群发设置定时时间戳(单位秒)
* @param {number} [type] - 消息类型:图文消息-10 文字-1 图片-2 语音-3 视频-15 默认-10
*/
API . masssend ( appMsgId ) . then ( ( ) => {
console . log ( 'success' ) ;
} ) . catch ( console . error ) ;
Brechen Sie den geplanten Gruppenversand ab
/**
* 取消定时群发
* @param {number} msgid 群发消息id
*/
API . cancel_time_send ( 1000000041 ) . then ( ( ) => {
console . log ( 'success' ) ;
} ) . catch ( console . error ) ;
Liste geplanter Gruppennachrichten
/**
* 定时群发消息列表
* @return {Promise<array>} msgs - 定时群发消息列表
* @return {number} msgs[].type - 消息类型
* @return {number} msgs[].msgid - 消息id
* @return {object} msgs[].sent_info
* @return {number} msgs[].sent_info.time - 群发时间
* @return {boolean} msgs[].sent_info.is_send_all - 是否群发给所有人
* @return {array} msgs[].appmsg_info - 图文消息内容
* @return {object} msgs[].text_info - 文字消息
* @return {string} msgs[].text_info.content - 文字消息内容
*/
API . timesend_list ( ) . then ( msgs => {
console . log ( msgs ) ;
} ) ;
Senden Sie eine Textnachricht an einen Benutzer
/**
* 发文本消息给某个用户
* @param {string} tofakeid - 用户fakeid,可以在公众号后台singlesendpage页面url看到或者消息列表
* @param {string} msg - 消息内容
* @param {string} [replyId] - 回复消息id,可以消息列表看到,可选
*/
API . singlesend ( 'osl8HwPBTCsVbquNsnYbUfOQH8sM' , '哈哈哈哈' , 425131038 ) . then ( res => {
console . log ( res ) ;
} ) . catch ( console . error ) ;
Rufen Sie die Nachrichtenliste des öffentlichen Kontos ab
/**
* 获取公众号消息列表
* @param {number} count - 消息条数
* @param {number|string} [day] - 今天:0 昨天:1 前天:2 更早:3 最近5天:7 已收藏消息:star,默认:0
* @return {array<object>} msgs
* @return {string} msgs[].content - 消息内容
* @return {string} msgs[].date_time - 消息时间
* @return {string} msgs[].fakeid - 用户fakeid
* @return {number} msgs[].func_flag
* @return {number} msgs[].has_reply
* @return {number} msgs[].id - replyId
* @return {number} msgs[].is_vip_msg
* @return {number} msgs[].msg_status
* @return {array} msgs[].multi_item
* @return {string} msgs[].nick_name
* @return {string} msgs[].refuse_reason
* @return {string} msgs[].source
* @return {string} msgs[].to_uin
* @return {number} msgs[].type
* @return {string} msgs[].wx_headimg_url - 用户头像地址
*/
API . message ( 1 ) . then ( msgs => {
console . log ( msgs ) ;
} ) . catch ( console . error ) ;
Rufen Sie die Liste der Benutzer ab, gefolgt von öffentlichen Konten
/**
* @desc 获取关注用户列表
* @return {array<object>} userlist
* @return {string} userlist[].user_openid
* @return {string} userlist[].user_name - 用户昵称
* @return {string} userlist[].user_remark - 用户备注名称
* @return {array} userlist[].user_group_id - 分组
* @return {number} userlist[].user_create_time - 关注时间,单位:秒
* @return {string} userlist[].user_head_img - 用户头像地址
*/
API . user_list ( ) . then ( res => {
console . log ( res ) ;
} ) ;
Informationen über einen Benutzer abrufen
/**
* 获取用户信息
* @param {string} user_openid
* @return {object} user
* @return {string} user.user_openid
* @return {string} user.user_name - 用户昵称
* @return {string} user.user_remark - 用户备注名称
* @return {array} user.user_group_id - 分组
* @return {number} user.user_create_time - 关注时间,单位:秒
* @return {string} user.user_head_img - 用户头像地址
*/
API . user_info ( 'oslHwqwYnw20jnqMca18KET91pa0' ) . then ( res => {
console . log ( res ) ;
} ) ;
Erhalten Sie detaillierte Informationen zu einem Benutzer
/**
* 获取用户详细信息
* @param {string} user_openid
* @return {object} user
* @return {string} user.user_openid
* @return {string} user.user_city - 用户城市
* @return {string} user.user_country - 用户国家
* @return {string} user.user_province - 省份
* @return {string} user.user_signature - 签名
* @return {number} user.user_comment_cnt - 留言量
* @return {number} user.user_selected_comment_cnt - 精选留言量
* @return {number} user.user_msg_cnt - 消息量
* @return {number} user.user_gender - 性别 0:未知 1:男 2:女
* @return {string} user.user_name - 用户昵称
* @return {string} user.user_remark - 用户备注名称
* @return {array} user.user_group_id - 分组
* @return {number} user.user_create_time - 关注时间,单位:秒
* @return {string} user.user_head_img - 用户头像地址
* @return {number} user.user_in_blacklist - 是否在黑名单
*/
API . user_info_detail ( 'oslHwqwYnw20jnqMca18KET91pa0' ) . then ( res => {
console . log ( res ) ;
} ) ;
QR-Code-Analyse
/**
* 二维码解析
* @param {string} url - 远程图片地址/本地图片路径
* @return {Promise<object>}
*/
API . qrdecode ( 'qrcode-login.png' ) . then ( ( result ) => {
console . log ( result . text ) ;
} ) . catch ( console . error ) ;