前言
- 突然就想玩一下微信机器人了,于是去github上找了圈发现都在用wechaty。作者介绍也很nb啊,我就不说了。但这玩意还是有很多坑。
登录
import { Contact, Message, ScanStatus, Wechaty, log } from "wechaty";
import { generate } from "qrcode-terminal";
function onScan(qrcode: string, status: ScanStatus) {
if (status === ScanStatus.Waiting || status === ScanStatus.Timeout) {
generate(qrcode, { small: true });
const qrcodeImageUrl = [
"https://wechaty.js.org.qrcode/",
encodeURIComponent(qrcode),
].join("");
log.info(
"StarterBot",
"onScan: %s(%s) - %s",
ScanStatus[status],
status,
qrcodeImageUrl
);
} else {
log.info("StarterBot", "onScan: %s(%s)", ScanStatus[status], status);
}
}
function onLogin(user: Contact) {
log.info("StarterBot", "%s login", user);
}
function onLogout(user: Contact) {
log.info("StarterBot", "%s logout", user);
}
async function onMessage(msg: Message) {
log.info("StarterBot", msg.toString());
if (msg.text() === "ding") {
await msg.say("dong");
}
}
const bot = new Wechaty({
name: "ding-dong-bot",
});
bot.on("scan", onScan);
bot.on("login", onLogin);
bot.on("logout", onLogout);
bot.on("message", onMessage);
bot.start()
.then(() => log.info("StarterBot", "Starter Bot Started."))
.catch((e) => log.error("StarterBot", e));
- 然后启动扫码,结果尼玛 提示:为了你的帐号安全,此微信号已不允许登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录。
- 然后我看了下,现在普遍是用pad登录,要用另一个库:https://github.com/wechaty/wechaty-puppet-padplus
- 然后我看了下代码,发现里面需要个token , 这个token介绍是这样:https://github.com/juzibot/Welcome/wiki/Everything-about-Wechaty
- 也就是token只能填表然后免费拿几天,或者花钱买。
- 然后我就好奇看了下它那个库咋写的,大概看了下是走了manager里面然后manager会发个请求给他们那个juzibot网站,然后拿到登录的二维码之类。所以那个库根本看不出来如何实现绕过微信网页登录的。
- 后来又研究有没有别的方法,一般是使用企业微信搞推送当机器人,或者用安卓模拟器方式解决,模拟器功能有很多问题,最容易实现还是企业微信。