用javascript教你打造一个免费的PC微信机器人《二》

发送消息的后台逻辑

从手机微信,PC微信,发送文本消息、图片消息、语音等消息,首要的一步:选择你要发送消息的具体对象,实际就是选择你通讯录里面的好友(包括好友,群)。但真正微信后台的处理,是用到了微信的一个类似身份证号码的ID,即 wxid。

下图是一个微信通讯录好友的数据结构(非完整版):
在这里插入图片描述

在发消息的时候,我们选择的对象是:老张学技术。而微信后台,是把老张学技术所对应的wxid找到,用这个wxid作为发送消息的第一个参数。即,你要发给谁?

了解了上面这个逻辑后,我们一定得拿到通讯录每个名字对应的wxid。所以,接下来,我们一起来看,怎么获取到通讯录好友信息,尤其是获取对应的wxid的信息。

获取通讯录好友信息

通讯录好友的获取,在PC微信里有两种处理方式,一种是HOOK微信启动时载入通讯录好友信息的地址;另外一种,通过直接读取微信存放在内存里面的数据。这个事实上不用关心,必备软件已经处理好了,我们调用相应接口即可。

http代码示例(javascript)

const rp = require('request-promise');
const url = 'http://127.0.0.1:5555';
const TXT_MSG = 555;
function getid()
{
   const id = Date.now();
   return id.toString();
}

/**get_contact_list  获取好友和群列表
 * 
 */
async function get_contact_list()
{
    const options={
        url: url+'/api/getcontactlist'
    };
    let data = await rp(options);
    const j = JSON.parse(data);

    return j;
}
/**
 * send txt message
 */
async function sendtxt()
{
    const options =
      {
          url: url+'/api/sendtxtmsg',
          qs:
          {
              id: getid(),
              type: TXT_MSG,
              wxid: 'filehelper',
              content: '一起来唱海阔天空!'
          }
      };
      let data = await rp(options);
      const j = JSON.parse(data);

      return j;
}

async function main()
{
    const j = await get_contact_list();
    console.log(j);
}
main();

执行程序后,控制台会把通讯录所有好友列表打印出来(json格式),里面包含了最重要的信息:名字和wxid的对应关系。有了这个对应,你就可以很轻易地进行消息发送了。

说明:获取通讯录好友信息支持http和websocket两种方式。

代码优化

老手一眼就能看出,这个代码必须优化:

async function sendtxt()
{
    const options =
      {
          url: url+'/api/sendtxtmsg',
          qs:
          {
              id: getid(),
              type: TXT_MSG,
              wxid: 'filehelper',
              content: '一起来唱海阔天空!'
          }
      };
      let data = await rp(options);
      const j = JSON.parse(data);

      return j;
}

在上面代码中,wxid和content都是固定写好的。对上面的代码,做个简单的优化,优化后如下:

async function sendtxt(wxid,content)
{
    const options =
      {
          url: url+'/api/sendtxtmsg',
          qs:
          {
              id: getid(),
              type: TXT_MSG,
              wxid: wxid,
              content: content
          }
      };
      let data = await rp(options);
      const j = JSON.parse(data);

      return j;
}

是不是更友好了?

代码地址

github

答疑解惑

如有相关问题,可加微信好友进行答疑(暗号:bot),二维码如下:在这里插入图片描述

更多文章

请关注公众号,及时查看更多推送文章:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信机器人是一款完全免费的无需安装绿色版可在PC电脑上使用的微信机器人,这款微信机器人功能十分强大,简直是公众号/群聊/微商们的神器,马上下载吧。 微信机器人功能介绍 这个程序是给你搭建机器人的,并不是让你去使用机器人的 【卡密系统】 根据转账金额,返回具体卡密。自动更新卡密!卡密收账金额不要跟转账回复里面的配置弄成一样,不然无法发出卡密 【统计系统】 可以统计某个微信群中,哪些人拉了多少人进来,此功能可以用于微信群红包裂变! 【转账系统】 收到转账后可以自定义回复,用于小贩卖资源什么的,绝逼神器 【群聊系统】 在微信群内烘托微信群氛围,维护微信群活跃性的必备。(加群欢迎,天气查询,雾霾查询,来个笑话......) 【导购系统】 烘托群气氛,给群成员带来购物体验。(内部券扫描,商品价格波动检测,淘口令反向分析) 【自定义扩展】 微信机器人使用技巧 箫启灵微信机器人功能如下: 1.来个笑话 指令示例:来个笑话 2.天气查询 指令示例:长沙天气 3.优惠券检索 指令示例:买衣服 4.商品价格波动检测 指令示例:价格波动 商品连接 5.淘口令分析 从手机淘宝的宝贝页面分享宝贝到微信,机器人反馈优惠券,支持好友跟微信群 6.智能群聊 指令示例:艾特机器人,发送聊天内容 7.拉人统计【此功能需要机器人账号把对应群加到通讯录后再重启程序生效】 指令示例:拉人排行 如果需要显示所有拉人数据,需要机器人账号在群里回复"拉人数据" 8.转账回复 在配置文件[转账回复.txt]中配置相关金额 9.自定义指令 在配置文件[自定义回复.txt]中配置你的指令内容跟回复内容,此指令可以配合转账回复指令,两者搭配,微商无敌 10.新人加群欢迎词 在配置文件[加群欢迎.txt]中配置欢迎词,其中[@]指的是艾特新加进来的人,你可以移动此标签位置。 如果文件为空,则不发出加群欢迎 11.屏蔽SB功能 指令示例:拉黑/移出 --机器人账号直接对好友或者微信消息,此口令可以操作好友,微信群 拉黑后无视该对象任何指令 微信机器人使用方法 打开软件后,使用手机扫描维码登录微信; 自己选择需要调整的功能,打开对应的txt文件进行修改;   微信机器人效果演示 微信机器人注意事项 本机器人是基于web微信协议的机器人,请注意以下几点: 1、如果你的机器人是放在服务器的,那请保证服务器的稳定。 2、机器人程序跟你本身微信聊天不冲突。 3、看到等待消息页面。就是你账号已经成为机器人了。等着别人给你机器人账号发送指令.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值