UNPKG

wechaty-puppet-service

Version:
156 lines (154 loc) 4.91 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const PUPPET = __importStar(require("wechaty-puppet")); const file_box_1 = require("file-box"); const mod_js_1 = require("../src/mod.js"); /** * * 1. Declare your Bot! * */ const puppet = new mod_js_1.PuppetService(); /** * * 2. Register event handlers for Bot * */ puppet .on('logout', onLogout) .on('login', onLogin) .on('scan', onScan) .on('error', onError) .on('message', onMessage); /** * * 3. Start the bot! * */ puppet.start() .catch(async (e) => { console.error('Bot start() fail:', e); await puppet.stop(); process.exit(-1); }); /** * * 4. You are all set. ;-] * */ /** * * 5. Define Event Handler Functions for: * `scan`, `login`, `logout`, `error`, and `message` * */ function onScan(payload) { if (payload.qrcode) { const qrcodeImageUrl = [ 'https://wechaty.js.org/qrcode/', encodeURIComponent(payload.qrcode), ].join(''); console.info(`[${payload.status}] ${qrcodeImageUrl}\nScan QR Code above to log in: `); } else { console.info(`[${payload.status}] `, PUPPET.types.ScanStatus[payload.status]); } } async function onLogin(payload) { console.info(`${payload.contactId} login`); const contactPayload = await puppet.contactPayload(payload.contactId); console.info(`contact payload: ${JSON.stringify(contactPayload)}`); puppet.messageSendText(payload.contactId, 'Wechaty login').catch(console.error); } function onLogout(payload) { console.info(`${payload.contactId} logouted`); } function onError(payload) { console.error('Bot error:', payload.data); /* if (bot.isLoggedIn) { bot.say('Wechaty error: ' + e.message).catch(console.error) } */ } /** * * 6. The most important handler is for: * dealing with Messages. * */ async function onMessage(payload) { console.info(`onMessage(${payload.messageId})`); // const DEBUG: boolean = true // if (DEBUG) { // return // } const messagePayload = await puppet.messagePayload(payload.messageId); console.info('messagePayload:', JSON.stringify(messagePayload)); if (messagePayload.talkerId) { const contactPayload = await puppet.contactPayload(messagePayload.talkerId); console.info(`contactPayload(talkerId:${messagePayload.talkerId}):`, JSON.stringify(contactPayload)); } if (messagePayload.roomId) { const roomPayload = await puppet.roomPayload(messagePayload.roomId); console.info('roomPayload:', JSON.stringify(roomPayload)); } if (messagePayload.listenerId) { const contactPayload = await puppet.contactPayload(messagePayload.listenerId); console.info(`contactPayload(listenerId:${messagePayload.listenerId}):`, JSON.stringify(contactPayload)); } if (messagePayload.talkerId === puppet.currentUserId) { console.info('skip self message'); return; } if (messagePayload.type === PUPPET.types.Message.Text && /^ding$/i.test(messagePayload.text || '')) { const conversationId = messagePayload.roomId || messagePayload.talkerId; if (!conversationId) { throw new Error('no conversation id'); } await puppet.messageSendText(conversationId, 'dong'); const fileBox = file_box_1.FileBox.fromUrl('https://wechaty.github.io/wechaty/images/bot-qr-code.png'); await puppet.messageSendFile(conversationId, fileBox); } } /** * * 7. Output the Welcome Message * */ const welcome = ` Puppet Version: ${puppet}@${puppet.version()} Please wait... I'm trying to login in... `; console.info(welcome); // async function loop () { // while (true) { // await new Promise(resolve => setTimeout(resolve, 1000)) // } // } // loop() //# sourceMappingURL=ding-dong-bot.js.map