在规律平凡的生活中,希望可以有一个小管家来帮自己完成日常的任务,比如天气汇报、消息记录、随叫随到的聊天打发时间,因此 TomChat 应运而生。它可以为你提供天气查询,给予穿衣意见、运动建议;也可以为你述说历史上的今天,可做今日与同事好友的聊天话题;也可以在不愿打扰别人的时候,和它聊天,博君一笑。
项目结构
.
├── LICENSE
├── README.md
├── config
│ └── config.template.js
├── img
│ └── xxx.jpeg
├── package.json
└── src
├── bot.js
├── handler
│ ├── onMessage.js
│ └── onScan.js
└── tool
├── autoChat.js
├── historyToday.js
├── log.js
├── nasa.js
├── tomato.js
└── weather.js
src
- 项目核心代码放在 src 中,其中 bot.js 为入口文件,作为程序的启动与入口。
- handler 文件夹中存放处理 wechaty 相应事件的函数。
- tool 文件夹中存放单个功能点,可供随时调用。
img
该文件夹用于存储项目所使用到的图片与其他相应资源。
config
该文件夹中存放相应的配置文件,用于统一管理。
代码介绍
入口文件
// 初始化
const bot = new Wechaty({
puppet: new PuppetPadplus({
token: config.token,
}),
name: config.name,
});
bot
.on("scan", onScan) // 机器人需要扫描二维码时监听
.on("login", (user) => console.log(`User ${user} logined`))
.on("message", onMessage(bot)) // 消息监听
.start();
该段代码作为启动文件,我们先建立了使用 padplus 的 wechaty;并在后续监听三个事件,并每个事件有对应的处理函数。
onMessage
async function onMessage(msg) {
// 判断消息来自自己或三分钟前的消息,直接return
if (msg.self() || msg.age() > 180) return;
logMSG(msg);
// 对 msg 的处理
///
////
/////
}
对于消息的处理,有时候要预防自己和自己对话导致的死循环,与消息时间过期的问题。
运行项目
前期准备工作
- 申请 Wechaty Puppet Token,本项目使用的是 padplus,详情可参考 Everything about Wechaty
- 申请和风天气天气 api 权限
- 申请小思机器人对话机器人权限
- 申请阿凡达数据提供商中的历史上的今天接口权限
上述申请完毕后,请将对应的 Token 填写到 config/config.template.js 文件中,并将 config.template.js 修改为 config.js 文件
运行
- npm install
- npm run
- 扫码登陆微信
- enjoy!