project,

微信计算器机器人(wechat robot calculator)

Ray Ray Follow Jul 06, 2020 · 2 mins read
微信计算器机器人(wechat robot calculator)

Wechaty Badge Everything about Wechaty

背景

很早开始就在关注微信机器人,自己是做前端开发的,对nodejs有不错的了解。想自己做一个微信机器人的计算器,因为每次需要用计算器就很不方便,手机里的app我都放在很深的目录,不好找,放在首页又太浪费了。所以就想到用wechaty来实现个人号微信计算器机器人,实现常规的加减乘除功能;

功能

加、减、乘、除

实现逻辑

逻辑可以说是很简单;利用wechaty接收用户消息,对消息过滤,用户输入:1+1,然后直接eval 计算结果返回给用户;

依赖

  • wechaty:wechaty核心库
  • wechaty-puppet-padplus:wechaty的ipad协议实现

实现过程


function calculator(intxt, callback) {
  return new Promise(function (resolve, reject) {
    var a = intxt;
    try {
      intxt = intxt.replace(/=|等|等于|\?/, '');
      intxt = intxt.replace(/加/g, '+').replace(/减/g, '-').replace(/乘/g, '*').replace(/除/g, '/');
      a = eval(intxt);
    } catch(e){
      // console.log('========error', e);
    }
      resolve(a);
    });
}

async function onMessage (msg) {
  const contact = msg.from()
  let text = msg.text()
  const room = msg.room();

  if (room) return;
  if(msg.self()){ // 自己发消息
    return;
  }
  if (text) {
    text = text.replace(/[。,、,.]$/gi, '').replace(/\s*/gi, "");
  }
  if (msg.type() === bot.Message.Type.Text && /^\d+.{1}\d+/gi.test(text)) { // 文本消息
    let result = await CalcFunc.calculator(text);
    await msg.say(result+'');
  }
}

本地运行

  1. 克隆项目
git clone g https://github.com/leiroc/wechat-calculator.git
cd wechat-calculator
  1. 安装依赖
npm install
  1. 启动项目
node app.js

效果图

效果图

致谢

感谢Wechaty团队提供微信机器人SDK,让开发者可以专注于业务代码。
感谢句子互动提供的pad协议版token,看到很多基于dll的实现,太费时就没有研究了

作者: Ray Code: Github

Join Newsletter
Get the latest news right in your inbox. We never spam!
Written by Ray
I am a full-stack Software Engineer in Chengdu.