背景
很早开始就在关注微信机器人,自己是做前端开发的,对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+'');
}
}
本地运行
- 克隆项目
git clone g https://github.com/leiroc/wechat-calculator.git
cd wechat-calculator
- 安装依赖
npm install
- 启动项目
node app.js
效果图
致谢
感谢Wechaty团队提供微信机器人SDK,让开发者可以专注于业务代码。
感谢句子互动提供的pad协议版token,看到很多基于dll的实现,太费时就没有研究了