All Projects → huanz → Wechat Mp Hack

huanz / Wechat Mp Hack

微信公众平台模拟登录自动群发图文消息

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Wechat Mp Hack

Wechat Mall
清欢美味食光机,也是我做的第一个小程序,功能比较简单,后台基于API工厂
Stars: ✭ 98 (-2.97%)
Mutual labels:  wechat, weixin
Wemark
微信小程序Markdown渲染库
Stars: ✭ 1,159 (+1047.52%)
Mutual labels:  wechat, weixin
Miniweather
基于koa的微信公众号开发
Stars: ✭ 67 (-33.66%)
Mutual labels:  wechat, weixin
Wx Voice
Convert audio files between Tencent apps (Weixin / Wechat, QQ) and Silk codec with other general formats such as MP3 and M4A
Stars: ✭ 93 (-7.92%)
Mutual labels:  wechat, weixin
Wechat Weapp Movie
🎬电影推荐 - 微信小程序
Stars: ✭ 1,355 (+1241.58%)
Mutual labels:  wechat, weixin
Wxpay Sdk
Server-side SDK of Weixin/WeChat, the Java binding.
Stars: ✭ 63 (-37.62%)
Mutual labels:  wechat, weixin
Tina
💃 一款轻巧的渐进式微信小程序框架
Stars: ✭ 1,153 (+1041.58%)
Mutual labels:  wechat, weixin
Node Tenpay
微信支付 for nodejs
Stars: ✭ 947 (+837.62%)
Mutual labels:  wechat, weixin
Agora Miniapp Tutorial
Hello world for Agora SDK running in https://en.wikipedia.org/wiki/WeChat#WeChat_Mini_Program
Stars: ✭ 75 (-25.74%)
Mutual labels:  wechat, weixin
Mojo Weixin
使用Perl语言(不会没关系)编写的个人账号微信/weixin/wechat客户端框架(非GUI),可通过插件提供基于HTTP协议的api接口供其他语言或系统调用
Stars: ✭ 1,181 (+1069.31%)
Mutual labels:  wechat, weixin
Wxjava
Wechat-Group/WxJava的备份,有问题请到对应项目下讨论
Stars: ✭ 56 (-44.55%)
Mutual labels:  wechat, weixin
Weixin Java Mp Demo
基于Spring Boot 和 WxJava 实现的微信公众号Java后端Demo,支持多公众号
Stars: ✭ 1,291 (+1178.22%)
Mutual labels:  wechat, weixin
Weixin Minigame Tutorial
Flappy Bird adaptation on Wechat Minigame using PhaserJS + English Wechat Minigames Tutorial
Stars: ✭ 56 (-44.55%)
Mutual labels:  wechat, weixin
Lxspider
爬虫案例合集。包括但不限于《淘宝、京东、天猫、豆瓣、抖音、快手、微博、微信、阿里、头条、pdd、优酷、爱奇艺、携程、12306、58、搜狐、百度指数、维普万方、Zlibraty、Oalib、小说、招标网、采购网、小红书》
Stars: ✭ 60 (-40.59%)
Mutual labels:  wechat, weixin
Dragtodismiss Pangesture
仿微信,微博的大图查看和视频播放 拖拽消失的手势动画。手势单独已抽离出来,可用于任何视图。Simulate Wechat's disappeared gesture animation by dragging when the big picture viewing or video playback . Gestures are separated and can be used in any view
Stars: ✭ 55 (-45.54%)
Mutual labels:  wechat, weixin
Offiaccount
[微信公众号] A fast wechat offiaccount development sdk written in Golang
Stars: ✭ 68 (-32.67%)
Mutual labels:  wechat, weixin
Weixin Sdk
微信公众平台和微信支付Python-SDK
Stars: ✭ 20 (-80.2%)
Mutual labels:  wechat, weixin
Taro
开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
Stars: ✭ 30,230 (+29830.69%)
Mutual labels:  wechat, weixin
Wechat
Wechat API wrapper in Elixir
Stars: ✭ 70 (-30.69%)
Mutual labels:  wechat, weixin
Mina Webpack
🍱 Mina single-file-component meets Webpack
Stars: ✭ 77 (-23.76%)
Mutual labels:  wechat, weixin

wechat-mp-hack

无需微信认证即可实现微信公众号自动群发图文消息。

使用

npm i wechat-mp-hack --save
const Wechat = require('wechat-mp-hack');
const API = new Wechat('公众号账号', '公众号密码');

1.1.0版本后不再需要把调用方法包裹在 login回调后执行,调用下列核心方式时会自动处理登录。

events

scan.login

登录认证二维码

API.once('scan.login', (filepath) => {
  // 登录二维码图片地址
  console.log(filepath);
});

scan.send

开启群发认证保护后调用群发接口需要微信扫描二维码

API.on('scan.send', (filepath) => {
  // 群发认证二维码地址
  console.log(filepath);
});

vcode

登录验证码

API.once('vcode', (filepath) => {
  // 验证码图片地址
  console.log(filepath);
});

methods

login

登录接口

/**
 * @desc 登录公众号
 * @param {string} [imgcode] - [可选]验证码
 * @return {Promise<object>} data
 */
API.login().then(data => {
  console.log(data);
}).catch(console.error);

loginchk

检测是否已经登录

try {
  let islogin = await API.loginchk();
  console.log('已登录');
} catch(e) {
  console.log('未登录');
}

appmsg

获取图文/视频素材列表

/**
 * 获取图文/视频素材列表
 * @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);

filepage

获取图片/语音素材列表

/**
 * 获取图片/语音素材列表
 * @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); 

operate_appmsg

创建/更新图文素材

/**
 * 创建图文素材
 * @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);

del_appmsg

删除图文素材

/**
 * 删除图文素材
 * @param {number} [appMsgId] - 图文素材id
 */
API.del_appmsg(appMsgId).then(res => {
  console.log(res);
  console.log('删除成功');
});

batchUpload

批量上传远程图片至公众号

/**
 * 批量上传远程图片至公众号
 * @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;
});

filetransfer

上传单个远程图片至公众号

/**
 * 上传单个远程图片至公众号
 * @param {string} imgurl - 远程图片地址
 */
API.filetransfer('http://wesbos.com/wp-content/uploads/2016/09/dead-zone.png').then(console.log);

localUpload

上传本地图片至公众号

/**
 * 上传本地图片至公众号
 * @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);
});

uploadimg2cdn

上传远程图片上传至cdn

/**
 * 上传远程图片上传至cdn
 * @param {string} imgurl - 远程图片地址
 * @return {Promise<string>} - 微信cdn资源地址
 */
API.uploadimg2cdn('https://www.baidu.com/img/[email protected]')

preview_post

获取图文素材文章临时预览链接

/**
 * 获取图文素材文章临时预览链接
 * @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);

preview_appmsg

预览群发消息

/**
 * 预览群发消息
 * @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);

masssend

群发消息

/**
 * 群发消息
 * @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);

cancel_time_send

取消定时群发

/**
 * 取消定时群发
 * @param {number} msgid 群发消息id
 */
API.cancel_time_send(1000000041).then(() => {
  console.log('success');
}).catch(console.error);

timesend_list

定时群发消息列表

/**
 * 定时群发消息列表
 * @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);
});

singlesend

发文本消息给某个用户

/**
 * 发文本消息给某个用户
 * @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);

message

获取公众号消息列表

/**
 * 获取公众号消息列表
 * @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); 

user_list

获取公众号关注用户列表

/**
 * @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);
});

user_info

获取某用户信息

/**
 * 获取用户信息
 * @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);
});

user_info_detail

获取某用户详细信息

/**
 * 获取用户详细信息
 * @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);
});

qrdecode

二维码解析

/**
 * 二维码解析
 * @param {string} url - 远程图片地址/本地图片路径
 * @return {Promise<object>}
 */
API.qrdecode('qrcode-login.png').then((result) => {
  console.log(result.text);
}).catch(console.error); 
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].