python-archieve-projects/WechatBot/node_modules/wechaty-puppet-xp/dist/cjs/examples/raw-sidecar.js

108 lines
3.7 KiB
JavaScript
Executable File

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Wechaty - https://github.com/wechaty/wechaty
*
* @copyright 2021 Wechaty Contributors <https://github.com/wechaty>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
const sidecar_1 = require("sidecar");
const wechat_sidecar_js_1 = require("../src/wechat-sidecar.js");
async function main() {
console.info('WeChat Sidecar starting...');
const sidecar = new wechat_sidecar_js_1.WeChatSidecar();
await (0, sidecar_1.attach)(sidecar);
console.info('WeChat Sidecar started.');
const ver = await sidecar.getWeChatVersion();
const verStr = await sidecar.getWechatVersionString();
const isSupported = await sidecar.checkSupported();
console.info(`\nWeChat Version: ${ver} -> ${verStr} , Supported: ${isSupported}\n`);
const isLoggedIn = await sidecar.isLoggedIn();
console.info(`has Logged In: ${isLoggedIn}`);
const myselfInfo = await sidecar.getMyselfInfo();
console.info(`myInfo: ${myselfInfo}`);
sidecar.on('hook', ({ method, args }) => {
switch (method) {
case 'recvMsg':
void onRecvMsg(args);
break;
case 'checkQRLogin':
onScan(args);
break;
case 'loginEvent':
onLogin();
break;
case 'logoutEvent':
onLogout(args[0]);
break;
default:
console.info('onHook', method, JSON.stringify(args));
break;
}
});
const onLogin = () => {
console.info('You are logged in.');
};
const onLogout = (bySrv) => {
console.info(`You are logged out${bySrv ? ' because you were kicked by server.' : ''}.`);
};
const onScan = (args) => {
const status = args[0];
const qrcodeUrl = args[1];
const wxid = args[2];
const avatarUrl = args[3];
const nickname = args[4];
const phoneType = args[5];
const phoneClientVer = args[6];
const pairWaitTip = args[7];
const json = {
avatarUrl,
nickname,
pairWaitTip,
phoneClientVer,
phoneType,
qrcodeUrl,
status,
wxid,
};
console.info('onScan', JSON.stringify(json, null, 2));
};
const onRecvMsg = async (args) => {
console.info('recvMsg:', args);
if (args instanceof Error) {
console.error(args);
return;
}
const toId = String(args[1]);
const text = String(args[2]);
const talkerId = String(args[3]);
console.info('recvMsg: talkerId =', talkerId);
console.info('recvMsg: text =', text);
if (talkerId && text === 'ding') {
console.info('recvMsg: ding found, reply dong');
await sidecar.sendMsg(toId, 'dong');
// await sidecar.sendAtMsg(toId, 'dong',talkerId)
}
};
const clean = async () => {
console.info('Sidecar detaching...');
await (0, sidecar_1.detach)(sidecar);
};
process.on('SIGINT', clean);
process.on('SIGTERM', clean);
}
main()
.catch(console.error);
//# sourceMappingURL=raw-sidecar.js.map